Encoding device and encoding method
By generating quantization parameters in the encoding device and using available bit coding, the problem of the large number of coded bits in multi-speed grid vector quantization technology is solved, and the encoding efficiency is improved and the process is simplified.
Patent Information
- Application Number
- JP2022532346
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-06-18
- Filing Date
- 2021-04-22
- Publication Date
- 2025-04-28
- Estimated Expiration
- 2041-04-22
AI Technical Summary
In the existing multi-speed grid vector quantization technology, there are many coded bits, and it is difficult to effectively reduce the number of -coded bits.
By introducing quantization circuits and control circuits into the encoding device, quantization parameters, including code books and code vector information of sub-vectors, and encoding these information using available bits, thereby reducing the number of -coded bits.
The number of -coded bits in multi-speed grid vector quantization technology is effectively reduced, the encoding efficiency is improved, and the encoding process is simplified.
Smart Images

Figure 0007669363000003 
Figure 0007669363000004 
Figure 0007669363000005
Abstract
Description
[Technical field]
[0001] The present disclosure relates to an encoding device, a decoding device, an encoding method, and a decoding method. [Background technology]
[0002] One of the quantization methods in audio or speech coding (e.g., excitation signal coding) is multi-rate lattice vector quantization (see, for example, Non-Patent Document 1). Multi-rate lattice vector quantization may be applied to split vector quantization (e.g., called split multi-rate lattice vector quantization or split multi-rate lattice vector quantization). Split multi-rate lattice vector quantization may also be applied to algebraic vector quantization (AVQ, also called algebraic vector quantization). [Prior art documents] [Patent documents]
[0003] [Patent Document 1] International Publication No. 2013 / 061531 [Non-patent literature]
[0004] [Non-Patent Document 1] 3GPP TS 26.445 V16.0.0,"Codec for Enhanced Voice Services (EVS); Detailed Algorithmic Description (Release 16)", 2019-06. Summary of the Invention
[0005] However, there is room for improvement in reducing the number of coding bits in multi-rate lattice vector quantization.
[0006] Non-limiting embodiments of the present disclosure contribute to providing an encoding device, a decoding device, an encoding method, and a decoding method that reduce the number of coding bits in vector quantization.
[0007] An encoding device according to one embodiment of the present disclosure includes a quantization circuit that generates a quantization parameter including first information regarding a codebook for vector quantization and second information regarding a code vector included in the codebook, and a control circuit that controls encoding of the first information for the subvector using a second number of bits based on a difference between a first number of bits available for encoding a subvector in the vector quantization and the number of bits of the quantization parameter for the subvector.
[0008] These comprehensive or specific aspects may be realized as a system, an apparatus, a method, an integrated circuit, a computer program, or a recording medium, or may be realized as any combination of a system, an apparatus, a method, an integrated circuit, a computer program, and a recording medium.
[0009] According to an embodiment of the present disclosure, the number of coding bits can be reduced in multi-rate lattice vector quantization.
[0010] Further advantages and benefits of an embodiment of the present disclosure will become apparent from the specification and drawings. Such advantages and / or benefits may be provided by some of the embodiments and features described in the specification and drawings, respectively, but not necessarily all of them may be provided to obtain one or more identical features. [Brief description of the drawings]
[0011] [Figure 1] FIG. 1 is a diagram showing an example of a codebook list in split multirate lattice vector quantization. [Diagram 2] FIG. 1 is a block diagram showing an example of the configuration of an encoding device. [Diagram 3] FIG. 1 is a block diagram showing a configuration example of a codebook indication value conversion unit; [Figure 4]FIG. 1 is a diagram showing an example of a correspondence relationship between the number of unused bits and the unused bit number encoding code. [Diagram 5] FIG. 1 is a block diagram showing an example of the configuration of a decoding device. [Figure 6] FIG. 13 is a block diagram showing a configuration example of a codebook instruction value inverse conversion unit; [Figure 7] FIG. 13 is a diagram illustrating an example of the spectrum of an input signal. [Figure 8] FIG. 1 shows an example of a codebook applied to a subvector. [Figure 9] FIG. 13 is a block diagram showing another example of the configuration of an encoding device. [Figure 10] FIG. 11 is a block diagram showing another example of the configuration of a decoding device. [Figure 11] FIG. 13 is a block diagram showing another example of the configuration of an encoding device. [Figure 12] FIG. 11 is a block diagram showing another example of the configuration of a decoding device. [Figure 13] FIG. 13 is a diagram showing another example of the correspondence between the number of unused bits and the unused bit number encoding code. [Figure 14] FIG. 13 is a diagram showing another example of the correspondence between the number of unused bits and the unused bit number encoding code. [Figure 15] FIG. 13 is a diagram showing an example of association between a codebook and a codebook indication value; DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0012] Hereinafter, embodiments of the present disclosure will be described in detail with reference to the drawings.
[0013] For example, in split multi-rate lattice vector quantization, a signal in the frequency domain (or spectral domain) may be divided into multiple sub-vectors (SVs, also called sub-bands), and multi-rate lattice vector quantization may be performed on each of the multiple divided sub-vectors.
[0014] FIG. 1 is a diagram showing an example of a list of a codebook (also called a codebook) in multi-rate lattice vector quantization for sub-vectors (see, for example, Patent Document 1 or Non-Patent Document 1).
[0015] For example, the quantization parameters in split multi-rate lattice vector quantization may include information for identifying a codebook used for quantization (e.g., called a "codebook indicator" or codebook index) and information for identifying a selected code vector from among multiple code vectors included in the codebook (e.g., called a "code vector index"), as shown in FIG. 1.
[0016] For example, in each of the codebooks Q0, Q2, Q3, Q4, Q5, ..., Qn shown in Fig. 1, 1, 10, 15, 20, 25, ..., 5n bits (n is an integer of 2 or more) may be used to encode (or quantize) one subvector (SV). Of the number of bits (e.g., the total number of bits used) used for encoding using each codebook, 1, 2, 3, 4, 5, ..., n bits (n is an integer of 2 or more) may be used for the codebook indication value. In other words, in Fig. 1, the ratio of the number of bits allocated to encoding the codebook indication value to the total number of bits (e.g., 5n) used for encoding using each codebook may be 1 / 5.
[0017] Note that the codebook Q0 may include one vector (for example, a zero vector). The zero vector means that the quantized value of the vector is 0. Therefore, in the codebook Q0, the code vector index does not need to be defined, and the number of bits used for the code vector index may be 0.
[0018] For example, an encoder may collectively encode multiple sub-vectors (e.g., eight SVs in Non-Patent Document 1) using the codebook shown in Fig. 1. Note that the number of bits available for encoding multiple sub-vectors (e.g., called the "total number of bits") may be known between the encoder and the decoder.
[0019] For example, Patent Document 1 proposes a bit reduction method in split multi-rate lattice vector quantization for eight SVs. For example, based on the number of bits used for seven SVs out of the eight SVs, a codebook indication value (codebook index) used for the remaining one SV may be estimated according to the following formula (1) (see Patent Document 1, for example).
number
[0020] In equation (1), cb'fix indicates an estimate of the number of bits used for the codebook instruction value for one SV (e.g., subvector number i=Pfix), and Bits available denotes the total number of bits available for encoding the 8 SVs, and ΣBits cbvi indicates the total number of bits used for encoding the sub-vector number i=Pfix and the other seven sub-vectors vi (i≠Pfix) (for example, the total number of bits used in FIG. 1).
[0021] In Patent Document 1, for example, for one SV (e.g., i=Pfix), the encoding device quantizes (or encodes) the difference between the estimated value of the number of bits used for the codebook indicated value shown in Equation (1) and the number of bits of the actual codebook indicated value, and transmits the difference information to the decoding device. For example, the larger the codebook number n used for one SV, the smaller the amount of information (e.g., the number of bits) of the difference information described above becomes than the codebook indicated value, and the number of encoding bits can be reduced.
[0022] However, in Patent Document 1, for example, there are cases where the difference information (in other words, the object to be coded) becomes a negative number (e.g., −1), and since a quantization level or code corresponding to a negative number is used, the complexity of coding (or quantization) may increase.
[0023] In addition, if a specific SV is encoded based on codebook Q0 (e.g., codebook instruction value “0”) or codebook Q2 under special conditions (e.g., codebook instruction value “1”), the number of encoding bits may not be reduced.
[0024] Here, the special case may be, for example, a case where, among the total number of bits available for encoding, there is no bit that is not used for encoding, and all bits are used for encoding. In this case, for example, in FIG. 1, among the multiple bits indicating the codebook indication value of each codebook, the trailing "0" (for example, also called a stop bit) may be omitted. For example, in the special case, the codebook indication value of codebook Q2 may be "1" (1 bit) obtained by omitting "0" from "10".
[0025] Furthermore, for example, when focusing on bit reduction of an SV that uses a larger number of bits for encoding among multiple SVs, the number of encoding bits may not be reduced if an SV occurs that uses 0 bits for encoding. Note that an SV that uses 0 bits for encoding is likely to be, for example, an SV in a high frequency range among multiple SVs (for example, the 6th, 7th, or 8th SV out of 8 SVs).
[0026] Therefore, in one embodiment of the present disclosure, a method for reducing the number of coding bits used in coding (in other words, variable length code) of a codebook indication value of multi-rate lattice vector quantization (LVQ: Lattice VQ) applied to split vector quantization (e.g., SVQ: Split VQ) will be described.
[0027] In the following, a case where transform coding is applied to the coding method will be described as an example.
[0028] [Example of encoding device configuration] Fig. 2 is a block diagram showing an example of a configuration of an encoding device 100 according to an embodiment of the present disclosure. The encoding device 100 shown in Fig. 1 may include, for example, a time-frequency transform unit 101, a psychoacoustic model analysis unit 102, a split multi-rate lattice vector quantization (VQ) unit 103 (e.g., equivalent to a quantization circuit), a codebook instruction value conversion unit 104 (e.g., equivalent to a control circuit), and a multiplexing unit 105.
[0029] The time-frequency transform unit 101 may transform the time-domain input signal S(n) into a frequency-domain input signal (also called a spectral coefficient) S(f) by a time-frequency transform method such as a Discrete Fourier Transform (DFT) or a Modified Discrete Cosine Transform (MDCT). The time-frequency transform unit 101 may output the frequency-domain input signal S(f) to the psychoacoustic model analysis unit 102 and the split multi-rate lattice VQ unit 103, for example.
[0030] The psychoacoustic model analysis unit 102 may, for example, perform a psychoacoustic model analysis on the frequency domain input signal S(f) input from the time-frequency conversion unit 101 to obtain a masking curve. The psychoacoustic model analysis unit 102 may, for example, output information on the obtained masking curve to the split multi-rate lattice VQ unit 103.
[0031] The split multi-rate lattice VQ unit 103 may perform split multi-rate lattice quantization on, for example, the frequency domain input signal S(f) input from the time-frequency conversion unit 101. For example, the split multi-rate lattice VQ unit 103 may divide the input signal S(f) into a plurality of sub-vectors (SV), quantize each of the plurality of sub-vectors, and generate a quantization parameter including a codebook indication value indicating a codebook and a code vector index indicating one of a plurality of code vectors included in the codebook.
[0032] Also, for example, the split multi-rate lattice VQ unit 103 may apply split multi-rate lattice VQ to the frequency domain input signal S(f) in accordance with information about the masking curve input from the psychoacoustic model analysis unit 102. This may result in, for example, quantization noise in the split multi-rate lattice VQ becoming inaudible.
[0033] The split multi-rate lattice VQ unit 103 may, for example, output a global gain and a code vector index from among the quantization parameters obtained by quantization to the multiplexing unit 105. Furthermore, the split multi-rate lattice VQ unit 103 may, for example, output information on a codebook indication value and a code vector index from among the quantization parameters to the codebook indication value conversion unit 104. Furthermore, the split multi-rate lattice VQ unit 103 may, for example, output the number of bits available for encoding the input signal S(f) (for example, Bits available ) to the codebook indication value conversion unit 104.
[0034] The codebook instruction value conversion unit 104 may convert the coding information (or called the coding code) of the codebook instruction value based on the information input from the split multi-rate lattice VQ unit 103, for example.
[0035] For example, codebook instruction value conversion section 104 may perform the following processes of steps 1 to 3 based on each of the codebook instruction values of the multiple subvectors input from split multi-rate lattice VQ section 103.
[0036] (Step 1) The codebook indication value conversion unit 104 may set, for example, the codebook indication values of other subvectors (for example, N subvectors) different from the subvector at the predetermined position among a plurality of (for example, N) codebook indication values to a code (or an encoded code).Then, the codebook indication value conversion unit 104 may calculate, for example, the sum of the number of bits used of the codebook indication values and the number of bits used of the code vector index in the N-1 subvectors.
[0037] (Step 2) The codebook indicator value converter 104 may calculate the number of bits available for the codebook indicator value of the subvector at a predetermined position. For example, the codebook indicator value converter 104 may calculate the total number of bits (Bits available The number of bits available for encoding the codebook indication value of the sub-vector at the predetermined position may be calculated by subtracting the sum of the number of bits used for encoding the N-1 sub-vectors calculated in (step 1) from (N-1).
[0038] (Step 3) The codebook indication value conversion unit 104 may, for example, calculate the number of bits not used for encoding (e.g., referred to as the number of unused bits) among the number of bits available for encoding the subvector at the predetermined position calculated in (step 2), and encode the number of unused bits. For example, the codebook indication value conversion unit 104 may calculate the number of unused bits by subtracting the sum of the number of bits used for the codebook indication value of the subvector at the predetermined position and the number of bits used for the code vector index from the number of available bits calculated in (step 2).
[0039] The codebook instruction value converting unit 104 may output to the multiplexing unit 105, for example, the codebook instruction value (encoded code) obtained through (step 1) to (step 3) and the unused bit number encoded code.
[0040] An example of the operation of the codebook instruction value conversion unit 104 will be described later.
[0041] The multiplexing unit 105 may multiplex the global gain and code vector index input from the split multi-rate lattice VQ unit 103, and the codebook indication value (encoded code) and unused bit number encoded code input from the codebook indication value conversion unit 104, and transmit the multiplexed bit stream information to the decoding device 200.
[0042] Next, an example of the operation of the codebook instruction value conversion unit 104 will be described.
[0043] Fig. 3 is a block diagram showing an example of the configuration of the codebook instruction value conversion unit 104. The codebook instruction value conversion unit 104 shown in Fig. 3 may include, for example, a codebook instruction value separation unit 121, a number of available bits calculation unit 122, a number of unused bits calculation unit 123, and a number of unused bits coding unit 124.
[0044] For example, the codebook instruction values cbvi (i=any of 1 to N) of the N subvectors output from the split multi-rate lattice VQ unit 103 may be input to the codebook instruction value separation unit 121.
[0045] For example, based on the N input codebook indication values cbvi, the codebook indication value separation unit 121 outputs a codebook indication value cbfixx (or cbvi(i=Pfix)) of a sub-vector at a pre-specified position (for example, i=Pfix) to the unused bit number calculation unit 123. In addition, the codebook indication value separation unit 121 may output codebook indication values cbvi(i≠Pfix) of N-1 sub-vectors different from the pre-specified position to the usable bit number calculation unit 122 and output them as codebook indication values (encoded codes) to the multiplexing unit 105 (corresponding to the above step 1).
[0046] The available bit number calculation unit 122 may calculate the number of bits available for encoding a subvector at a position specified in advance (corresponding to step 2 above). For example, the available bit number calculation unit 122 may calculate the number of bits available for encoding an input number of bits Bits available The number of bits available for encoding the sub-vector at the pre-specified position may be calculated by subtracting the number of bits used for encoding the N-1 sub-vectors calculated using the N-1 codebook indication values (cbvi(i≠Pfix)) from the number of bits available for encoding the sub-vector at the pre-specified position. The number of available bits calculation unit 122 may output the calculated number of available bits to the number of unused bits calculation unit 123 and the number of unused bits encoding unit 124.
[0047] For example, the available bit number calculation unit 122 may calculate the available bit number cb'fix according to the following equation (2).
number
[0048] In this way, the available bit number calculation unit 122 calculates the total number of bits Bits as shown in, for example, equation (2). available from the number of bits used to encode N-1 subvectors (e.g., ΣBits cbvi (i ≠ Pfix) to calculate the number of bits cb'fix available for encoding the subvector at the prespecified position.
[0049] The unused bit number calculation unit 123 may calculate the number of unused bits that are not used in encoding the input signal S(f) (corresponding to step 3 above).
[0050] For example, the unused bit number calculation unit 123 may calculate the number of bits used to encode the sub-vector at a pre-specified position (e.g., the number of bits used to encode the codebook indication value and the code vector index) based on the number of bits used (actual value cbfix) of the codebook indication value of the sub-vector at a pre-specified position input from the codebook indication value separation unit 121. Then, the unused bit number calculation unit 123 may calculate the number of unused bits by subtracting the number of bits used to encode the sub-vector at a pre-specified position from the number of available bits input from the available bit number calculation unit 122. The unused bit number calculation unit 123 may output information on the calculated number of unused bits to the unused bit number encoding unit 124, for example.
[0051] The unused bit number encoding unit 124 may, for example, encode the number of unused bits input from the unused bit number calculation unit 123 to generate an unused bit number encoded code (or encoded information). For example, the unused bit number encoding unit 124 may generate an unused bit number information encoded code from the unused bit number based on the association (which may be represented in a table, for example) between the number of unused bits and the unused bit number encoded code (or code) shown in FIG. 4. The unused bit number encoding unit 124 may, for example, output the unused bit number encoded code to the multiplexing unit 105.
[0052] Here, as shown in Fig. 4, the number of unused bits is an integer equal to or greater than 0. Also, in Fig. 4, the number of candidates for the number of unused bits assigned to one code (in other words, the resolution of quantization) is 5. In other words, in Fig. 4, the same code is assigned to five integers among the number of unused bits. This is because, for example, as shown in Fig. 1, when the number of bits used in the codebook indication value is 2 or more, the number of bits used in the codebook indication value and the number of bits used in the code vector index have a 1:4 relationship, and the total number of bits used for encoding, which is the sum of the codebook indication value and the code vector index, changes in units of 5.
[0053] Furthermore, the unused bit number encoding unit 124 may correct the codeword with the maximum number of unused bits by using, for example, the number of available bits input from the available bit number calculation unit 122. For example, when the number of available bits is 23 bits, the maximum possible number of unused bits is 22 bits (for example, when the codebook Q0 is used), and in the example of FIG. 4, the codeword is 11110 (5 bits). The unused bit number encoding unit 124 may change (or correct) this codeword 11110 to 1111 (4 bits), for example. This is because, when the number of available bits is 23 bits, there is no codeword corresponding to the number of unused bits of 25 bits or more, so that when the most significant 4 bits of the codeword are "1111" (in other words, regardless of the least significant bit of the codeword), the number of unused bits is determined to be 20 to 24 bits. This makes it possible to reduce the number of encoded bits by 1 bit when the number of unused bits is maximum.
[0054] [Example of the configuration of the decryption device] Fig. 5 is a block diagram showing a configuration example of a decoding device 200 according to an embodiment of the present disclosure. The decoding device 200 shown in Fig. 5 may include, for example, a separation unit 201, a codebook instruction value inverse conversion unit 202 (e.g., corresponding to a control circuit), a split multi-rate lattice inverse quantization (inverse VQ) unit 203 (e.g., corresponding to an inverse quantization circuit), and a frequency-time conversion unit 204.
[0055] In the decoding device 200 , the bit stream transmitted from the encoding device 100 is input to a demultiplexing section 201 .
[0056] The demultiplexing unit 201 may, for example, demultiplex a global gain, a code vector index, a codebook indication value (encoded code), and an unused bit number information encoded code from the input bit stream. The demultiplexing unit 201 may, for example, output the global gain and the code vector index to the split multi-rate lattice inverse VQ unit 203, and output the codebook indication value (encoded code) and the unused bit number information encoded code to the codebook indication value inverse conversion unit 202.
[0057] The codebook indication value inverse conversion unit 202 may calculate a codebook indication value of a subvector at a pre-specified position (for example, i=Pfix) based on information input from the separation unit 201, for example.
[0058] For example, the codebook instruction value inverse conversion unit 202 may perform the following processes of steps 4 to 7 based on the codebook instruction value (encoded code) and the unused bit number information encoded code input from the separation unit 201.
[0059] (Step 4) The codebook indication value inverse conversion unit 202 may, for example, decode a codebook indication value of another sub-vector different from a pre-specified position (for example, i=Pfix) based on a codebook indication value (encoded code). Also, the codebook indication value inverse conversion unit 202 may, for example, calculate the number of bits (for example, the sum of the number of bits used of the codebook indication value and the number of bits used of the code vector) used for encoding a plurality of sub-vectors (for example, i≠Pfix) based on the decoded codebook indication value.
[0060] (Step 5) The codebook instruction value inverse conversion unit 202 may decode the number of unused bits based on the unused bit number information encoded code, for example.
[0061] (Step 6) The codebook instruction value inverse conversion unit 202 may calculate the number of coding bits for a sub-vector at a pre-specified position, for example, based on the number of coding bits for the multiple sub-vectors calculated in (step 4) and the number of unused bits decoded in (step 5).
[0062] (Step 7) The codebook indication value inverse conversion unit 202 may calculate (or decode) the codebook indication value of the sub-vector at the pre-specified position based on, for example, the number of coding bits of the sub-vector at the pre-specified position calculated in (step 6).
[0063] The codebook instruction value inverse conversion unit 202 may output the codebook instruction value obtained by, for example, (step 4) to (step 7) to the split multi-rate lattice inverse VQ unit 203.
[0064] An example of the operation of the codebook instruction value inverse conversion unit 202 will be described later.
[0065] The split multi-rate lattice inverse VQ unit 203 performs split multi-rate lattice inverse VQ based on, for example, the global gain and code vector index input from the demultiplexing unit 201 and the codebook instruction value input from the codebook instruction value inverse conversion unit 202, to obtain the frequency domain decoded signal S~(f). The split multi-rate lattice inverse VQ unit 203 may output the frequency domain decoded signal S~(f) to the frequency-time conversion unit 204.
[0066] The frequency-time conversion unit 204 may convert the frequency domain signal S~(f) output from the split multi-rate lattice inverse VQ unit 203 into a time domain signal S~(n) by a frequency-time conversion method such as an inverse discrete Fourier transform (IDFT) or an inverse modified discrete cosine transform (IMDCT).
[0067] Next, an example of the operation of the codebook instruction value inverse conversion unit 202 will be described.
[0068] Fig. 6 is a block diagram showing a configuration example of the codebook instruction value inverse conversion unit 202. The codebook instruction value inverse conversion unit 202 shown in Fig. 6 may include, for example, an available bit number calculation unit 221, an unused bit number decoding unit 222, a restoration unit 223, and a codebook instruction value generation unit 224.
[0069] For example, the codebook indication value (encoded code) output from demultiplexing section 201 may be input to usable bit number calculation section 221 and codebook indication value generation section 224. In addition, for example, the unused bit number encoded code output from demultiplexing section 201 may be input to unused bit number decoding section 222.
[0070] The input codebook indication value (encoded code) may represent, for example, codebook indication values cbvi (i≠Pfix) of N-1 subvectors different from the subvector at a specific position (for example, i=Pfix).
[0071] The available bit number calculation unit 221 may calculate the number of bits available for encoding a sub-vector at a pre-specified position, for example. For example, the available bit number calculation unit 221 calculates the number of bits used to encode N-1 sub-vectors using N-1 codebook indication values (cbvi (i ≠ Pfix)) (corresponding to step 4 above), and sets the number of input bits Bits available The number of available bits calculation unit 221 may calculate the number of available bits cb'fix for encoding the sub-vector at the pre-specified position by subtracting the number of bits used for encoding the N-1 sub-vectors from the number of available bits cb'fix. The number of available bits calculation unit 221 may output the calculated number of available bits to the restoration unit 223.
[0072] The unused bit number decoding unit 222 may, for example, decode the unused bit number encoded code input from the separating unit 201. For example, the unused bit number decoding unit 222 may determine the number of unused bits from the unused bit number encoded code based on the association between the unused bit number and the unused bit number encoded code (e.g., code) shown in Fig. 4 (corresponding to step 5 above). The unused bit number decoding unit 222 may, for example, output information related to the determined unused bit number to the restoring unit 223.
[0073] The restoration unit 223 may determine (or restore) a codebook indication value of a sub-vector at a pre-specified position, for example, based on the number of available bits input from the number of available bits calculation unit 221 and the number of unused bits input from the unused bit number decoding unit 222. For example, the restoration unit 223 may calculate the number of bits used for encoding the sub-vector at a pre-specified position (for example, the total number of used bits shown in FIG. 1) by subtracting the number of unused bits from the number of available bits. Then, the restoration unit 223 may calculate the number of bits of the codebook indication value based on the calculated number of bits (for example, the total number of used bits), and output an encoded code indicating the codebook indication value to the codebook indication value generation unit 224 (corresponding to steps 6 and 7 above).
[0074] The codebook indication value generation unit 224 may generate N codebook indication values cbvi (i=1 to N) such that the codebook indication value cbvi of i=Pfix is placed at a prespecified position based on, for example, the codebook indication values cbvi (i≠Pfix) of the N-1 subvectors input from the separation unit 201 and the codebook indication value cbvi (i=Pfix) of the subvector at a prespecified position input from the restoration unit 223. The codebook indication value generation unit 224 may output the generated codebook indication values to the split multi-rate lattice inverse VQ unit 203.
[0075] [Codebook indication value conversion example] Next, an example of the operation of the codebook instruction value conversion unit 104 of the encoding device 100 will be described.
[0076] Fig. 7 is a diagram showing an example of an input signal S(f) in the frequency domain. In Fig. 7, for example, the input signal S(f) may be divided into eight sub-vectors v1 to v8.
[0077] In addition, in FIG. 7, as an example, the position (i=Pfix) of a sub-vector previously specified in the input signal S(f) is v8.
[0078] FIG. 8 is a diagram showing an example of codebook instruction values (or codebooks) for each of the sub-vectors v1 to v8 obtained by split multi-rate lattice quantization.
[0079] 7 and 8, in the codebook instruction value conversion unit 104, the codebook instruction value separation unit 121 outputs, for example, the codebook instruction value of the subvector v8 (for example, 5 bits of “11110”) to the unused bit number calculation unit 123. Furthermore, the codebook instruction value separation unit 121 may output, for example, the codebook instruction values of the subvectors v1 to v7 different from the subvector v8 (for example, “10”, “10”, “110”, “110”, “1110”, “1110”, “11110”) to the multiplexing unit 105 as the encoded code.
[0080] The available bit number calculation unit 122 may calculate the number of bits available for encoding the subvector v8, for example. For example, the total number of bits available in the transmission unit of the input signal (Bits available In this case, the available bit number calculation unit 122 calculates, for example, the number of bits used per sub-vector for each of the sub-vectors v1 to v7 different from the sub-vector v8 (the total number of bits used. For example, Bits cbvi Then, the available bit number calculation section 122 may calculate the available bit number cb'fix=(144-10-10-15-15-20-20-25)=29 according to, for example, equation (2).
[0081] The unused bit number calculation unit 123 may calculate the number of unused bits (here, 29-25=4 bits) by subtracting the number of bits used for encoding the sub-vector v8, 25 bits, from the number of available bits cb'fix=29 bits.
[0082] For example, since the number of unused bits is 4 bits, the unused bit number encoding unit 124 may generate the unused bit number encoded code "0" (1 bit) based on the association shown in FIG.
[0083] In encoding device 100, the codebook indication values (encoded codes) “10”, “10”, “110”, “110”, “1110”, “1110”, “1110”, “11110”, and “11110” of each of the sub-vectors v1 to v7 generated in this manner, and the unused bit number encoded code “0” are multiplexed in multiplexing section 105 and transmitted to decoding device 200.
[0084] As described above, in the example shown in FIG. 7, the codebook number applied to the subvector v8 is 5 (Q5), and the number of bits used when encoding the codebook indication value of the codebook Q5 itself is 5 bits. On the other hand, in one embodiment of the present disclosure, the number of bits of the unused bit number encoding code transmitted instead of the codebook indication value for the subvector v8 is 1 bit, as described above. Therefore, in the example shown in FIG. 7, by notifying the unused bit number encoding code, the number of encoded bits can be reduced by 4 bits compared to the case where the codebook indication value of the subvector v8 itself is encoded and notified. Furthermore, in this embodiment, even if the number of encoded bits is reduced, information about the codebook is not lost, so that the codebook indication value can be restored in the decoding device 200.
[0085] In this way, the encoding device 100 and the decoding device 200 control the encoding or decoding of the codebook indication value for a sub-vector, for example, by using a number of unused bits based on the difference between the number of bits available for encoding the sub-vector in vector quantization (e.g., split multi-rate lattice VQ) and the number of bits of the quantization parameters (e.g., codebook indication value and code vector) of the sub-vector.
[0086] For example, the encoding device 100 converts a codebook indication value used for encoding a specific sub-vector of the spectrum of an input signal divided into a plurality of sub-vectors into information regarding the number of unused bits. Similarly, the decoding device 200 converts information regarding the number of unused bits into information regarding the codebook indication value using the code of the number of unused bits transmitted from the encoding device 100.
[0087] This conversion can improve the efficiency of encoding the codebook indication value (or codebook index) of one specified SV in, for example, lattice vector quantization (LVQ) used in split vector quantization (SVQ). According to this embodiment, the number of bits used for the codebook indication value used for encoding a specific subvector can be reduced, thereby reducing the bit rate.
[0088] Also, for example, as described above, in the method of encoding difference information between the estimated value and the actual value of the codebook indicator value as in Patent Document 1, there are cases where the difference information to be encoded can be -1. For example, when the number of bits available for encoding a specific subvector is 9 bits, the codebook indicator value estimated in Patent Document 1 may be 0 (Q0), while the actual codebook indicator value may be 1 (Q1). This may increase the complexity of the encoding process, such as setting the association including the quantization level or code corresponding to -1 (negative number). On the other hand, in one embodiment of the present disclosure, for example, the number of unused bits in the number of bits including both the codebook indicator value and the code vector index is encoded, so that the minimum value of the number of unused bits to be encoded is 0, and it is not necessary to consider encoding negative numbers, and therefore the encoding process can be simplified.
[0089] In the above embodiment, as an example, a case where transform coding is applied to a coding method is described, but the coding method is not limited to transform coding. For example, an embodiment of the present disclosure may be applied to coding that quantizes each of a plurality of sub-vectors obtained by dividing a frequency domain signal (spectrum).
[0090] In this embodiment, the total number of bits available for encoding is input to the number of available bits calculation units 122 and 221. This total number of available bits may be information stored inside the encoder or decoder, rather than information input from outside the encoder (e.g., encoding device 100) or decoder (e.g., decoding device 200). The total number of available bits may be, for example, a predetermined fixed value. Alternatively, a predetermined fixed value may be set as an initial value, and a value obtained by adding the number of unused bits to the initial value may be input as the total number of available bits at the time of the subsequent split multi-rate lattice VQ.
[0091] [Application of CELP (Code Excited Linear Prediction) and transform coding to hierarchical coding] For example, the split multi-rate lattice VQ according to this embodiment may be applied to hierarchical coding of CELP and transform coding. Fig. 9 is a block diagram showing an example of the configuration of a coding device 100a when split multi-rate lattice VQ is applied to hierarchical coding of CELP and transform coding. Fig. 10 is a block diagram showing an example of the configuration of a decoding device 200a when split multi-rate lattice VQ is applied to hierarchical coding of CELP and transform coding.
[0092] 9 and 10, components that perform similar processes to those of the encoding device 100 and the decoding device 200 are denoted by the same reference numerals.
[0093] In encoding device 100a shown in Fig. 9, CELP encoding section 51 may perform CELP encoding on time domain signal S(n) and output CELP parameters to CELP local decoding section 52 and multiplexing section 105. Note that the CELP encoding method is, for example, an encoding method that utilizes predictable properties of a time domain signal.
[0094] The CELP local decoding unit 52 decodes the CELP parameters input from the CELP encoding unit 51, for example, to generate a synthesized signal S syn Generate (n).
[0095] The adder 53 generates, for example, a composite signal S(n) from the input signal S(n). syn (n) to obtain the prediction error signal S e Generate (n).
[0096] The time-to-frequency converter 54 converts the time-domain encoded error signal S e (n) is converted into a frequency domain encoded error signal S by a time-frequency transform such as DFT or MDCT. e Convert to (f).
[0097] The frequency domain encoded error signal S eAs described above, (f) may be quantized by the split multi-rate lattice VQ unit 103 and the codebook indication value conversion unit 104. For example, the encoding device 100a may quantize the encoding error signal S e Of the multiple sub-vectors obtained by dividing (f), an unused bit number coded code may be transmitted to the decoding device 200a instead of a codebook indication value (coded code) of a specific sub-vector.
[0098] In decoding device 200a shown in FIG. 10, separating section 201 separates a bit stream transmitted from encoding device 100a into CELP parameters and quantization parameters, outputs the CELP parameters to CELP decoding section 64, outputs the global gain and code vector index, of the quantization parameters, to split multi-rate lattice inverse VQ section 203, and outputs the codebook indication value (encoded code) and the unused bit number encoded code, of the quantization parameters, to codebook indication value inverse conversion section 202.
[0099] The codebook instruction value inverse conversion unit 202 converts the encoded error signal S e A codebook indication value for the subvector at a specific position in (f) is determined, and information regarding the codebook indication values of the N subvectors is output to split multi-rate lattice inverse VQ unit 203 .
[0100] The split multi-rate lattice inverse VQ unit 203 derives a frequency domain coding error signal S based on, for example, a global gain, a codebook indication value, and a code vector index. e Decode (or dequantize) .about.(f).
[0101] The frequency-to-time converter 63 converts, for example, the decoded frequency domain coding error signal S e 〜(f) is converted into a time-domain encoded error signal S by a frequency-time transform such as IDFT or IMDCT. e Convert to ~(n).
[0102] The CELP decoding unit 64 decodes the CELP parameters, for example, to generate a composite signal S syn Get (n).
[0103] The adder 65 receives, for example, the encoded error signal S e ~(n) and the composite signal S syn (n) to obtain a time domain signal {tilde over (S)}(n).
[0104] [Application to TCX (Transform Coded eXcitation) coding] For example, the split multi-rate lattice VQ according to this embodiment may be applied to TCX coding (also called TCX codec). Fig. 11 is a block diagram showing an example of the configuration of a coding device 100b in this case, and Fig. 12 is a block diagram showing an example of the configuration of a decoding device 200b.
[0105] 11 and 12, components that perform similar processes to those of the encoding device 100 and the decoding device 200 are denoted by the same reference numerals.
[0106] In the encoding device 100b shown in Fig. 11, an LPC (Linear Predictive Coding) analysis unit 71 performs an LPC analysis on a time-domain signal S(n) and outputs LPC parameters to a quantization unit 72. Note that the LPC analysis is a method that utilizes, for example, the predictable nature of a time-domain signal.
[0107] Quantization section 72 quantizes the LPC parameters inputted from LPC analysis section 71, for example, and outputs quantization parameters (for example, quantization indexes) to inverse quantization section 73 and multiplexing section 105.
[0108] The inverse quantization unit 73, for example, inverse quantizes the quantization indexes input from the quantization unit 72 to restore the LPC parameters.
[0109] The LPC inverse filter unit 74 applies LPC inverse filtering to the input signal S(n) using the restored LPC parameters input from the inverse quantization unit 73, to generate a time domain residual signal S r Get (n).
[0110] The time-frequency conversion unit 75 converts, for example, a time domain residual signal S r (n) is converted into a frequency domain residual signal S by a time-frequency transform such as DFT or MDCT. r Convert to (f).
[0111] The frequency domain residual signal S r As described above, (f) may be quantized by the split multi-rate lattice VQ unit 103 and the codebook indication value conversion unit 104. For example, the coding device 100b may quantize the residual signal S r Of the multiple sub-vectors obtained by dividing (f), an unused bit number coded code may be transmitted to decoding device 200b instead of a codebook indication value (coded code) of a specific sub-vector.
[0112] In the decoding device 200b shown in FIG. 12, the separating unit 201 separates the bit stream transmitted from the encoding device 100b into quantization indexes and quantization parameters, outputs the quantization indexes to the inverse quantization unit 84, outputs the global gain and the code vector index among the quantization parameters to the split multi-rate lattice inverse VQ unit 203, and outputs the codebook indication value (encoded code) and the unused bit number encoded code among the quantization parameters to the codebook indication value inverse conversion unit 202.
[0113] The codebook indicator value inverse conversion unit 202 converts the residual signal S r A codebook indication value for the subvector at a specific position in (f) is determined, and information regarding the codebook indication values of the N subvectors is output to split multi-rate lattice inverse VQ unit 203 .
[0114] The split multi-rate lattice inverse VQ unit 203 calculates a frequency domain residual signal S based on, for example, a global gain, a codebook indication value, and a code vector index. r Decode (or dequantize) .about.(f).
[0115] The frequency-to-time converter 83 converts, for example, the decoded frequency domain residual signal S r 〜(f) is transformed into a time-domain residual signal S by a frequency-time transform such as IDFT or IMDCT. r Convert to ~(n).
[0116] The inverse quantization unit 84, for example, inverse quantizes the quantization indexes to restore the LPC parameters.
[0117] The LPC synthesis filter unit 85 receives, for example, a time domain residual signal S r LPC synthesis filtering is applied to {tilde over (n)} using the reconstructed LPC parameters to obtain a time-domain signal S{tilde over (n)}.
[0118] The above describes the application of split multi-rate lattice VQ to TCX coding.
[0119] In this embodiment, the LPC synthesis filter process is performed in the time domain, but may be performed in the frequency domain. An example of such TCX coding is MDCT based TCX of the EVS codec.
[0120] [An example of a subvector at a specific position] An example of the sub-vector at the specific position mentioned above will now be described.
[0121] Split multi-rate lattice VQ may be applied to speech and audio encoding and decoding processes, such as the Enhanced Voice Services (EVS) codec described in Non-Patent Document 1.
[0122] For example, split multi-rate lattice VQ may be applied to the Algebraic Vector Quantizer (AVQ) of Non-Patent Document 1.
[0123] For example, in the EVS codec, AVQ is applied to various coding modes. For example, when the coding frame is classified into harmonic signals in the GC (Generic Coding) mode of 32 kbit / s, the number of coding bits of the codebook indication value in the split multi-rate lattice VQ is likely to be larger for the subvector with higher frequency (e.g., subvector v8 in Fig. 7).
[0124] This is because GC mode coding of harmonic signals is likely to be performed at the onset of a vowel, the higher the frequency band, the more likely it is that the representation of harmonics by the adaptive codebook (or adaptive codebook) will deteriorate, or the higher the frequency band, the more likely it is that harmonic deviations will occur, and the larger the coding error of the adaptive codebook will tend to be. Therefore, in coding of a frequency domain signal (e.g., the spectrum of a prediction error or residual signal), the higher the subvector, the larger the signal energy, and the more likely it is that a codebook with a larger number of bits used for quantization will be selected.
[0125] Therefore, for example, when a frequency domain signal is divided into eight sub-vectors v1 to v8 as described above, the number of bits used for encoding is likely to be allocated more to the sub-vector v8 in the highest frequency band in the frequency domain among the multiple sub-vectors v1 to v8. Therefore, as described above, in the encoding device 100 and the decoding device 200, the sub-vector v8 may be set to a sub-vector at a specific position.
[0126] In this way, in the GC mode of the EVS codec, when the input signal (or the encoding frame) to be vector quantized is a harmonic signal, the subvector with the highest frequency among the multiple subvectors constituting the input signal may be set as one subvector that encodes the unused bit number. This improves the effect of reducing the number of encoding bits when split multi-rate lattice VQ is applied to AVQ of GC encoding.
[0127] In addition, in the GC mode, when the input signal is not harmonic, split multirate lattice VQ may be applied to the time domain signal depending on the coding bit rate of the EVS. Even in this case, it is effective to set the last subvector (in other words, the subvector furthest in time) to a subvector position specified in advance. This is because it has been experimentally confirmed that in such a case, the number of bits used to code the number of unused bits tends to be smaller than the number of bits used to code the codebook indication value. In other words, in a frame classified in the GC mode, the number of bits remaining unused when the last subvector is quantized is often small, so coding the number of unused bits tends to improve coding efficiency.
[0128] [Method of reducing the number of encoding bits] Next, an example of a method for reducing the number of coding bits for a subvector at a particular position will be described.
[0129] <Method 1> For example, if the number of bits used to encode a subvector at a particular position (e.g., subvector v8) is small (e.g., codebooks Q0 or Q2) and the number of unused bits is large (e.g., above a threshold such as 15 bits), then the number of bits used to encode the number of unused bits may be greater than the number of bits used to encode the codebook indication value itself.
[0130] For example, if the number of bits available for encoding a subvector at a particular position (cb'fix) is 9 bits or less, the codebook available for the subvector at a particular position (e.g., subvector v8) is codebook Q0 (with a single bit codebook indication value of "0") or, as a special case, codebook Q2 (with a single bit codebook indication value of "1").
[0131] For example, in either case of codebook Q0 or the special case of codebook Q2, the codebook indication value is expressed in 1 bit (in other words, the minimum value), so the number of coding bits cannot be reduced even with the method according to one embodiment of the present disclosure.
[0132] Therefore, for example, when the number of bits available for a subvector at a particular position is below a threshold (e.g., 9 bits or less), the encoding device 100 may determine the codebook indication value of the subvector at the particular position as the encoding code (or encoding information) directly, without applying a method according to one embodiment of the present disclosure (e.g., a method of encoding the number of unused bits).
[0133] On the other hand, for example, when the number of bits available for a subvector at a particular position is greater than a threshold (for example, greater than 9 bits), the encoding device 100 may determine, as the encoded information, a code that encodes the number of unused bits.
[0134] Method 1 makes it possible to suppress an increase in the number of coding bits and improve coding efficiency, regardless of the number of bits available for a subvector at a particular position.
[0135] Furthermore, as described above, the number of bits available for a subvector at a particular position is information that can be calculated by the decoding device 200 from other parameters (e.g., the total number of bits and the codebook indication values of other subvectors), so there is no need to provide signaling for switching the encoding method related to method 1 (e.g., additional information for notifying the switching).
[0136] <Method 2> For example, when the number of available bits (cb'fix) is any of 11 to 13 bits, the codebook available for a subvector at a specific position (e.g., subvector v8) is either codebook Q0 (e.g., total number of bits used: 1 bit) or codebook Q2 (e.g., total number of bits used: 10 bits). Here, for example, when codebook Q0 is used (e.g., total number of bits used: 1 bit), the number of unused bits is 10 to 12 bits, so in the example shown in FIG. 4, the number of coding bits for the number of unused bits is 3 bits. Therefore, the number of bits increases by 2 bits compared to when the codebook indication value is coded as is (e.g., 1 bit).
[0137] Incidentally, as shown in FIG. 1, the total number of bits used in the case of codebook Q2 is 10 bits, so it is clear that when the number of available bits is any of 11 to 13 bits, at least 1 to 3 bits are unused.
[0138] The number of bits that are obviously unused among the number of available bits can be calculated as a remainder of the number of available bits by 5, for example. For example, when the number of available bits is 11, 12, or 13, the remainder of 5 is 1 (=11%5), 2 (=12%5), or 3 (=13%5). The function "a % b" is a function that returns the remainder of b to a (e.g., also called a modulo operation). The divisor b (here, b=5) may be a value determined based on the ratio of the number of bits used for the codebook indication value to the total number of bits used in encoding the sub-vectors (or the unit of change in the total number of bits used).
[0139] Such information on the number of obviously unused bits does not need to be transmitted as coding information from coding device 100 to decoding device 200. Thus, coding device 100 may subtract the remainder of the number of available bits modulo 5 (in other words, the number of obviously unused bits) from the number of available bits (cb'fix), and use the subtraction result to calculate the number of unused bits.
[0140] For example, when the number of available bits is any of 11 to 13 bits, the remainder of the number of available bits modulo 5 is 1 to 3 bits, and therefore the subtraction result is 10 bits. Coding apparatus 100 may set the 10 bits of the subtraction result as the available bits, for example. For example, in coding apparatus 100, when codebook Q0 (1 bit) is used for 10 available bits, the number of unused bits is 9 bits, and therefore, in the example shown in FIG. 4, the unused bit number is coded to a 2-bit unused bit number coding code.
[0141] As a result, the number of bits (e.g., 2 bits) used to code the number of unused bits when subtracting a remainder by 5 from the number of available bits is reduced compared to the number of bits (e.g., 3 bits) used to code the number of unused bits when not subtracting a remainder by 5 from the number of available bits. In other words, for example, when subtracting a remainder by 5 from the number of available bits, the increase in the number of bits can be suppressed to 1 bit compared to the case where the codebook indication value is coded as is (e.g., 1 bit).
[0142] <Method 3> For example, when the number of available bits (cb'fix) is 10 bits, the number of unused bits will not be more than 10 bits (in other words, it will be 9 bits or less), so the "0" in the code "10" corresponding to the number of unused bits 5 to 9 in the example shown in FIG. 4 can be omitted. In other words, in this case, it is sufficient to distinguish between the number of unused bits 0 to 4 (code "0") and the number of unused bits 5 to 9 (code "1"). By encoding in this way, the number of bits used to code the number of unused bits can be further reduced by 1 bit, and an increase in the number of bits can be suppressed.
[0143] In addition, when such encoding is used, an increase in the number of bits can be suppressed even when the number of available bits is 9 or less. Therefore, for example, even when the number of available bits is 9 or less, the encoding device 100 does not need to switch to the method of setting the codebook indication value directly to the encoding code as described in <Method 1>.
[0144] <Method 4> For example, when the number of available bits (cb'fix) is 8 bits or less, the codebook indication value cannot be a value other than "0" (Q0) in the example shown in Fig. 1. In this case, the decoding device 200 can identify the codebook indication value Q0 even if information on the codebook indication value is not transmitted.
[0145] Therefore, for example, in both the method of encoding the codebook indication value as it is and the method of encoding the number of unused bits, when the number of available bits is 8 bits or less, the encoding process and the decoding process may be performed without transmitting and receiving information about the codebook indication value of the codebook Q0. This makes it possible to reduce the encoding information by 1 bit.
[0146] <Method 5> For example, when the number of available bits (cb'fix) is 14 bits, the codebooks available for a subvector at a specific position in the example shown in Fig. 1 are codebooks Q0, Q2, and a special case codebook Q3. In the special case codebook Q3, for example, there are no unused bits, and the codebook indication value can be expressed as "11" (2 bits) instead of "110", and together with the number of used bits (12 bits) of the code vector, it can be encoded with 14 bits.
[0147] In this way, since codebook Q3 can be used even when the number of available bits is 14 bits, when the number of available bits is 14 bits, the 4 bits that are the remainder of 5 in <Method 2> may not clearly be the number of remaining bits.
[0148] Therefore, for example, when the number of available bits is 13 bits or less, an increase in the number of coding bits of 2 or more can be suppressed based on at least one of the above-mentioned <Method 1> to <Method 4>, whereas when the number of available bits is 14 bits or more, the number of coding bits may increase or decrease depending on the number of unused bits.
[0149] Also, for example, in multi-mode coding such as EVS codec, it is assumed that when split multi-rate lattice VQ is used in a specific coding mode, the unused bits rarely make up the majority of the available bits (for example, the number of unused bits is equal to or greater than a threshold). For this reason, for example, it is highly likely that the number of unused bits less than the threshold is coded, and on average, it is possible to achieve a reduction in the number of bits. On the other hand, there may be rare cases where the number of unused bits becomes large, and the number of coded bits increases by 2 or more bits. Therefore, for example, the coding method may be switched based on the following method.
[0150] For example, when split multirate lattice VQ is applied to AVQ in the GC mode of the EVS codec, the closer the input signal is to zero, the more unused bits tend to be. Also, for example, the determination of whether the input signal is close to zero can be made based on the energy of the adaptive codebook vector or the gain information (or gain information) multiplied by the excitation signal encoded by the AVQ.
[0151] Therefore, for example, when the energy of an adaptive codebook vector (or a code vector) is less than a threshold (e.g., 10), or when the gain multiplied by the excitation signal encoded by AVQ is less than a threshold (e.g., 1.0), the encoding device 100 may directly determine the codebook indication value of a subvector at a specific position as the code code without applying a method according to one embodiment of the present disclosure (e.g., a method of encoding the number of unused bits).
[0152] On the other hand, the encoding device 100 may determine, for example, when the energy of the adaptive codebook vector is equal to or greater than a threshold (e.g., 10), or when the gain multiplied by the excitation signal encoded by AVQ is equal to or greater than a threshold (e.g., 1.0), to be the encoding information, as a code that encodes the number of unused bits.
[0153] The encoding device 100 may switch the encoding method based on a combination of the energy of the adaptive codebook vector and a gain by which the excitation signal encoded by AVQ is multiplied. In this case, the encoding device 100 may weight each of the energy of the adaptive codebook vector and the gain by which the excitation signal is multiplied when determining whether to switch the encoding method.
[0154] In addition, since the gain by which the excitation signal encoded by AVQ is multiplied is not determined until AVQ encoding is completed in the encoding target frame, for example, gain information in a temporally previous frame may be referenced.
[0155] In addition, in the method 5, as an example, a method of switching the encoding method based on the energy or gain information of the adaptive codebook vector has been described, but the present invention is not limited to this, and the encoding method may be switched based on other parameters related to the increase or decrease of the number of unused bits, or the encoding method may be switched based on a comparison between the number of unused bits and a threshold value.
[0156] <Method 6> The association between the number of unused bits and the code is not limited to the example shown in FIG.
[0157] For example, since the upper limit of the number of unused bits is the number of available bits, there is no need to have a code (or a code) that is greater than the number of available bits. In this case, the code of the upper limit of the number of unused bits does not need to have a 0 (for example, a stop bit) at the end of the code.
[0158] For example, when the number of available bits is 20 bits and 19 bits are unused bits (for example, when the codebook indication value is "0" (codebook Q0)), the code assigned to the number of unused bits is "1110" in the example shown in Fig. 4. On the other hand, when the number of available bits is 20 bits, the number of unused bits will not be 20 bits or more (for example, a code with four or more consecutive 1's such as the code "11110"). Therefore, even if the code "1110" assigned to the number of unused bits = 19 bits does not have a trailing 0 (for example, even if it is "111"), decoding device 200 can identify the number of unused bits.
[0159] Therefore, for example, the association between the number of unused bits and the code may be the example shown in Fig. 13 instead of the example shown in Fig. 4. The code shown in Fig. 13 corresponds to, for example, a Huffman code. In Fig. 13, the number of bits of the code "111" when the number of unused bits is 15 to 19 bits is one bit less than in Fig. 4.
[0160] In this way, for example, the code (or the coding information) obtained by coding the number of unused bits may be represented by a Huffman code in which the number of available bits is the upper limit of the number of unused bits. For example, the coding device 100 may code the unused bits using a Huffman code according to the upper limit of the unused bits. This makes it possible to reduce the number of bits used to code the codebook indication value by 1 bit.
[0161] For example, as shown in FIG. 4, the code assigned to the number of unused bits may be represented by a Unary code. For example, in method 6, when the upper limit of the number of unused bits is set based on the number of available bits as described above, the least significant bit (LSB) of the Unary code corresponding to the upper limit of the number of unused bits set based on the number of available bits among the plurality of Unary codes assigned to the number of unused bits may be truncated (or deleted). For example, as in the above example, when the number of available bits is 20 bits, the upper limit of the number of unused bits is 19 bits, so in the example shown in FIG. 4, the Unary code corresponding to the upper limit of the number of unused bits is 4 bits of "1110". In method 6, the least significant bit "0" of this Unary code "1110" may be truncated to "111", and the association between the number of unused bits and the code is the same as the example shown in FIG. 13. This makes it possible to reduce the number of bits used for encoding the codebook indication value by 1 bit.
[0162] Here, if appropriate bit allocation is performed for the subvector, a codebook instruction value with a longer word length (or number of bits) according to the number of available bits is likely to be selected for the subvector at a specific position (e.g., subvector v8). Also, when a codebook instruction value with a longer word length is selected, the number of unused bits becomes closer to 0, and a code code with a shorter word length and number of unused bits is likely to be selected. In method 6, using this tendency, the encoding device 100 calculates the maximum codebook instruction value that can be used for encoding the subvector at a specific position based on the number of available bits for the subvector, and may represent the code assigned to the number of unused bits by a Huffman code or a Unary code (e.g., a code with the LSB of the Unary code assigned to the upper limit number of unused bits truncated). This allows the encoding bits of the number of unused bits to be reduced.
[0163] Also, as explained in <Method 2>, when the number of available bits is 10 or more, the bits modulo 5 are likely to be unused, so in Method 6, the number of available bits may be a value obtained by subtracting the remainder modulo 5.
[0164] Also, for example, in the EVS codec, the occurrence probability distribution of the encoding result of the unused bit number may be such that the unused bit number is most likely to be 5-9 bits, the unused bit number is second most likely to be 0-4 bits, and the unused bit number is third most likely to be 10-14 bits or more (for example, when the GC mode is selected). In this case, as a method of allocating codes to the unused bit number, for example, the code "0" for the unused bit number of 0-4 bits shown in FIG. 4 may be interchanged with the code "10" for the unused bit number of 5-9 bits (for example, FIG. 14). In other words, among the codes obtained by encoding each candidate for the unused bit number, the number of bits of the code corresponding to the candidate with a higher occurrence probability may be smaller. In the example shown in FIG. 14, a code with a smaller number of bits is allocated to the unused bit number with a higher occurrence probability, so that the average number of encoded bits can be reduced. Note that FIG. 14 is an example, and codes with different numbers of bits may be allocated depending on the occurrence probability of the unused bit number. Since such an allocation can be performed by determining an optimal allocation method for each encoding mode in advance, it is not necessary to code or transmit information regarding the allocation method.
[0165] Also, for example, the code assigned to the unused bit numbers shown in Figures 4, 13, and 14 is a Unary code with a stop bit of "0", but is not limited to this. For example, the code may be a code in which "1" and "0" in the code assigned to the unused bit numbers shown in Figures 4, 13, and 14 are interchanged.
[0166] Also, when switching between coding methods such as <Method 1> and <Method 5>, Huffman coding can be applied to a method of coding the codebook indicator value as it is. For example, in the example shown in FIG. 1, when the number of available bits is 23 bits, the largest codebook among the codebooks for the subvector at a specific position is Q4 (total number of bits used: 20 bits). In this case, in the example shown in FIG. 1, the codebook indicator value of Q4 is 4 bits of "1110". Here, when the number of available bits is 23 bits, a codebook of Q5 or more (total number of bits used is 25 bits or more) cannot be used. Therefore, for example, as shown in FIG. 15, the codebook indicator value of Q4 may be "111" obtained by omitting "0" from "1110". This allows the number of coding bits of the codebook indicator value to be reduced.
[0167] Methods 1 to 6 have been described above.
[0168] In an embodiment of the present disclosure, the codebook list is not limited to the example shown in Fig. 1, and the codebook indication value in the codebook and the code value and the number of bits used (or the total number of bits used) of the code vector index may be other values. Also, the thresholds described in the above <Method 1> to <Method 6> may be set according to the codebook list applied to encoding and decoding.
[0169] Also, for example, FIG. 1 illustrates a case where the ratio of the number of bits used by the codebook indication value to the total number of bits used in each codebook is 1 / 5 (in other words, the divisor when using a remainder is 5), but the present invention is not limited to this.
[0170] In addition, in the above-described embodiment, the case where the number of sub-vectors into which the input signal S(f) is divided is described as eight has been described, but the number of sub-vectors into which the input signal S(f) is divided is not limited to eight.
[0171] The embodiments of the present disclosure have been described above.
[0172] The present disclosure can be realized by software, hardware, or software linked to hardware. Each functional block used in the description of the above embodiment may be realized partially or entirely as an LSI, which is an integrated circuit, and each process described in the above embodiment may be controlled partially or entirely by one LSI or a combination of LSIs. The LSI may be composed of individual chips, or may be composed of one chip to include some or all of the functional blocks. The LSI may have input and output data. Depending on the degree of integration, the LSI may be called an IC, a system LSI, a super LSI, or an ultra LSI. The method of integration is not limited to LSI, and may be realized by a dedicated circuit, a general-purpose processor, or a dedicated processor. In addition, a field programmable gate array (FPGA) that can be programmed after LSI manufacture, or a reconfigurable processor that can reconfigure the connections and settings of circuit cells inside the LSI may be used. The present disclosure may be realized as digital processing or analog processing. Furthermore, if a new integrated circuit technology that can replace LSI appears due to the progress of semiconductor technology or a derivative technology, it is possible to integrate the functional blocks using that technology. The application of biotechnology is also a possibility.
[0173] The present disclosure may be implemented in any type of apparatus, device, or system having a communication function (collectively referred to as a communication apparatus). The communication apparatus may include a radio transceiver and processing / control circuitry. The radio transceiver may include a receiver and a transmitter, or both as functions. The radio transceiver (transmitter and receiver) may include a radio frequency (RF) module and one or more antennas. The RF module may include an amplifier, an RF modulator / demodulator, or the like. Non-limiting examples of communication devices include telephones (e.g., cell phones, smartphones, etc.), tablets, personal computers (PCs) (e.g., laptops, desktops, notebooks, etc.), cameras (e.g., digital still / video cameras), digital players (e.g., digital audio / video players), wearable devices (e.g., wearable cameras, smart watches, tracking devices, etc.), game consoles, digital book readers, telehealth and telemedicine devices, communication-enabled vehicles or mobile conveyances (e.g., cars, airplanes, boats, etc.), and combinations of the above devices.
[0174] Communications Equipment includes, but is not limited to portable or mobile equipment, non-portable or fixed equipment, devices and systems of any kind, such as smart home devices (appliances, lighting equipment, smart meters or metering devices, control panels, etc.), vending machines and any other "Things" that may exist on an Internet of Things (IoT) network.
[0175] Communications include data communications via cellular systems, wireless LAN systems, communications satellite systems, etc., as well as data communications via combinations of these.
[0176] A communications apparatus also includes devices, such as controllers and sensors, connected or coupled to a communications device that performs the communications functions described in this disclosure, such as controllers and sensors that generate control and data signals used by the communications device to perform the communications functions of the communications apparatus.
[0177] The communication apparatus also includes infrastructure facilities, such as base stations, access points, and any other apparatus, device, or system that communicates with or controls the various apparatuses listed above, but are not limited to these.
[0178] An encoding device according to one embodiment of the present disclosure includes a quantization circuit that generates a quantization parameter including first information regarding a codebook for vector quantization and second information regarding a code vector included in the codebook, and a control circuit that controls encoding of the first information for the subvector using a second number of bits based on a difference between a first number of bits available for encoding a subvector in the vector quantization and the number of bits of the quantization parameter for the subvector.
[0179] In one embodiment of the present disclosure, the control circuit determines information obtained by encoding the second number of bits as the encoded information.
[0180] In one embodiment of the present disclosure, the information obtained by encoding the second number of bits is represented by a Huffman code in which the first number of bits is an upper limit value of the second number of bits.
[0181] In one embodiment of the present disclosure, the information obtained by encoding the second number of bits is represented by a Unary code, and the least significant bit of the Unary code corresponding to an upper limit value of the second number of bits set based on the first number of bits is deleted.
[0182] In one embodiment of the present disclosure, among the information obtained by encoding each of the candidates of the second number of bits, the number of bits of information corresponding to the candidate having a higher occurrence probability is smaller.
[0183] In one embodiment of the present disclosure, when the first number of bits is greater than a threshold, the control circuit determines information obtained by encoding the second number of bits as encoded information, and when the first number of bits is equal to or less than the threshold, determines the first information as encoded information.
[0184] In one embodiment of the present disclosure, in Generic Coding (mode) of the Enhanced Voice Services (EVS) codec, the subvector is the highest frequency (or the last in time) subvector among multiple subvectors into which the signal is divided.
[0185] In one embodiment of the present disclosure, when the energy of the code vector for the sub-vector is greater than or equal to a threshold, the control circuit determines information obtained by encoding the second number of bits as encoded information, and when the energy of the code vector is less than the threshold, determines the first information as encoded information.
[0186] In one embodiment of the present disclosure, when a gain for the subvector is greater than or equal to a threshold, the control circuit determines information encoded with the second number of bits as the encoded information, and when the gain is less than the threshold, determines the first information as the encoded information.
[0187] In one embodiment of the present disclosure, the second number of bits is the first number of bits modulo 5 minus the number of bits of the quantization parameter of the sub-vector.
[0188] A decoding device according to one embodiment of the present disclosure includes a control circuit that controls decoding of first information for a subvector using a second number of bits based on a difference between a first number of bits available for encoding a subvector in vector quantization and a number of bits of a quantization parameter including first information related to a codebook of the subvector and second information related to a code vector included in the codebook, and an inverse quantization circuit that performs inverse vector quantization based on the first information.
[0189] In an encoding method according to one embodiment of the present disclosure, an encoding device generates a quantization parameter including first information regarding a codebook for vector quantization and second information regarding a code vector included in the codebook, and controls encoding of the first information for the subvector using a second number of bits based on a difference between a first number of bits available for encoding a subvector in the vector quantization and the number of bits of the quantization parameter for the subvector.
[0190] In a decoding method according to one embodiment of the present disclosure, a decoding device controls decoding of the first information for the subvector using a second number of bits based on a difference between a first number of bits available for encoding a subvector in vector quantization and a number of bits of a quantization parameter including first information regarding a codebook of the subvector and second information regarding a code vector included in the codebook, and performs inverse vector quantization based on the first information.
[0191] The disclosures of the specification, drawings and abstract contained in Japanese Patent Application No. 2020-105470, filed on June 18, 2020, are incorporated herein by reference in their entirety. [Industrial Applicability]
[0192] An embodiment of the present disclosure is useful in coding systems and the like. [Explanation of symbols]
[0193] 51 CELP encoder 52 CELP local decoding unit 53,65 Adder 64 CELP Decoding Section 71 LPC Analysis Department 72 Quantization section 73,84 Inverse quantization part 74 LPC inverse filter section 85 LPC synthesis filter section 100,100a,100b encoding device 54,75,101 Time-frequency conversion section 102 Psychoacoustic model analysis section 103 Split Multirate Lattice Quantizer 104 Codebook indication value conversion unit 105 Multiplexer 121 Codebook indicator value separation unit 122,221 Available bit calculation section 123 Unused bit calculation unit 124 Unused bit number coding part 200, 200a, 200b Decoding device 201 Separation section 202 Codebook indication value inverse conversion unit 203 Split Multirate Lattice Inverse Quantization Unit 63,83,204 Frequency-to-time converter 222 Unused bit number decoding unit 223 Restoration Department 224 Codebook indication value generator
Claims
1. A quantization circuit for generating, for each of N sub-vectors (N being an integer equal to or greater than 2) obtained by dividing a frequency domain signal, a quantization parameter including first information about a codebook for vector quantization and second information about a code vector included in the codebook; a control circuit for controlling the encoding of the quantization parameter to calculate a number of unused bits based on a difference between a number of available bits for encoding a subvector at a predetermined position among the N subvectors, the number of available bits being obtained by subtracting a number of bits used for encoding N-1 subvectors other than the subvector at the predetermined position from a total number of bits available for encoding the frequency domain signal, and a number of bits required for encoding the quantization parameter of the subvector; and Equipped with the number of unused bits is calculated based on a number obtained by subtracting the number of available bits modulo 5 from the number of available bits, Encoding device.
2. The control circuit determines information obtained by encoding the number of unused bits as encoded information. The encoding device according to claim 1 .
3. the information obtained by encoding the number of unused bits is represented by a Huffman code in which the number of available bits is an upper limit value of the number of unused bits; The encoding device according to claim 2.
4. The information obtained by encoding the number of unused bits is represented by a Unary code, The least significant bit of the Unary code corresponding to the upper limit value of the number of unused bits set based on the number of available bits is deleted. The encoding device according to claim 2.
5. Among the information obtained by encoding each of the candidates for the number of unused bits, the number of bits of information corresponding to the candidate having a higher occurrence probability is smaller. The encoding device according to claim 2.
6. The control circuit includes: If the number of available bits is greater than a threshold, determining information obtained by encoding the number of unused bits as encoded information; If the number of available bits is equal to or less than the threshold, the first information is determined to be encoded information. The encoding device according to claim 1 .
7. In the Generic Coding (mode) of the Enhanced Voice Services (EVS) codec, if the signal to be vector quantized is a harmonic signal, The sub-vector at the predetermined position is the sub-vector with the highest frequency among the N sub-vectors or the last sub-vector in time. The encoding device according to claim 1 .
8. The control circuit includes: If the energy of the code vector for the sub-vector is equal to or greater than a threshold, determining information obtained by encoding the number of unused bits as encoded information; If the energy of the code vector is less than the threshold, determining the first information as encoded information. The encoding device according to claim 1 .
9. The control circuit includes: If the gain for the sub-vector is equal to or greater than a threshold, determining information obtained by encoding the number of unused bits as encoded information; If the gain is less than the threshold, determining the first information as encoded information. The encoding device according to claim 1 .
10. The encoding device generating a quantization parameter for each of N sub-vectors (N being an integer equal to or greater than 2) obtained by dividing the frequency domain signal, the quantization parameter including first information related to a codebook for vector quantization and second information related to a code vector included in the codebook; calculating a number of unused bits based on a difference between a number of available bits available for encoding a subvector at a prespecified position among the N subvectors, the number of available bits being obtained by subtracting a number of bits used for encoding N-1 subvectors other than the subvector at the prespecified position from a total number of bits available for encoding the frequency domain signal, and a number of bits required for encoding the quantization parameter of the subvector; and controlling encoding of the quantization parameter to encode the number of unused bits; the number of unused bits is calculated based on a number obtained by subtracting the number of available bits modulo 5 from the number of available bits, Encoding method.
Citation Information
Patent Citations
Audio encoding apparatus, audio decoding apparatus, audio encoding method, and audio decoding method
WO2013061531A1
Audio and speech coding device, audio and speech decoding device, method for coding audio and speech, and method for decoding audio and speech
WO2013118476A1