Encoding device and encoding method

By calculating and encoding the difference in available bits for sub-vectors, the encoding device reduces the number of bits required in multi-rate lattice vector quantization, addressing inefficiencies and complexity in existing methods.

JP2025100736AActive Publication Date: 2025-07-03PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2025066792
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-06-18
Filing Date
2025-04-15
Publication Date
2025-07-03
Estimated Expiration
2041-04-22

AI Technical Summary

Technical Problem

Existing multi-rate lattice vector quantization methods face challenges in reducing the number of encoding bits, leading to increased complexity and inefficiency, particularly in cases where the difference information becomes negative or when specific sub-vectors require all available bits for encoding.

Method used

An encoding device and method that control the encoding of quantization parameters by calculating the number of unused bits based on the difference between available bits and the number of bits required for encoding a sub-vector, using a control circuit to encode this difference, thereby reducing the overall number of bits needed.

Benefits of technology

This approach effectively reduces the number of encoding bits in multi-rate lattice vector quantization, simplifies the encoding process, and maintains the integrity of the codebook information, improving encoding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025100736000001_ABST
    Figure 2025100736000001_ABST
Patent Text Reader

Abstract

To reduce the number of encoded bits in vector quantization.SOLUTION: An encoding device includes a control circuit for controlling encoding of quantization parameters so as to, in a sub-vector at a previously specified position among N sub-vectors, subtract the number of bits to be used for encoding of N-1 sub-vectors other than the sub-vector at the previously specified position from the total number of bits that can be used for encoding of a signal in a frequency domain, thereby calculating the number of bits usable for encoding of the sub-vector, and in a case where the usable number of bits is equal to or less than a threshold value, encode quantization parameters, and in a case where the usable number of bits is more than the threshold value, calculate the number of unused bits based on a difference between the usable number of bits of the sub-vector and the number of bits necessary for encoding of quantization parameters of the sub-vector to encode the number of unused bits.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to an encoding device, a decoding device, an encoding method, and a decoding method.

Background Art

[0002] One of the quantization methods in audio or voice encoding (for example, encoding of an excitation signal) is multi-rate lattice vector quantization (see, for example, Non-Patent Document 1). Multi-rate lattice vector quantization may be applied to, for example, split vector quantization (for example, called split multi-rate lattice vector quantization or divided multi-rate lattice vector quantization). Further, split multi-rate lattice vector quantization may be applied to, for example, algebraic vector quantization (AVQ) (also called).

Prior Art Documents

Patent Documents

[0003]

Patent Document 1

Non-Patent Documents

[0004]

Non-Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0005] However, there is room for consideration regarding a method for reducing the number of encoding bits in multi-rate lattice vector quantization.

[0006] Non-limiting examples of the present disclosure contribute to providing an encoding device, a decoding device, an encoding method, and a decoding method for reducing the number of encoding bits in vector quantization.

Means for Solving the Problem

[0007] An encoding device according to an embodiment of the present disclosure includes a quantization circuit that generates quantization parameters including first information regarding a codebook of vector quantization and second information regarding code vectors included in the codebook, and a control circuit that controls encoding of the first information for the sub-vector using a second number of bits based on a difference between a first number of bits available for encoding the sub-vector in the vector quantization and a number of bits of the quantization parameters of the sub-vector.

[0008] These general or specific aspects may be implemented in a system, apparatus, method, integrated circuit, computer program, or recording medium, or may be implemented in any combination of a system, apparatus, method, integrated circuit, computer program, and recording medium.

Advantages of the Invention

[0009] According to an embodiment of the present disclosure, the number of encoding bits can be reduced in multi-rate lattice vector quantization.

[0010] Further advantages and effects in an embodiment of the present disclosure will be clarified from the specification and drawings. Such advantages and / or effects are provided by several embodiments and the features described in the specification and drawings, respectively, but not all of them are necessarily provided in order to obtain one or more of the same features.

Brief Description of the Drawings

[0011]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Embodiments for Carrying Out the Invention

[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 a plurality of sub-vectors (SV: sub-vector, also referred to as a sub-band), and multi-rate lattice vector quantization may be performed on each of the divided plurality of sub-vectors.

[0014] FIG. 1 is a diagram showing an example of a list of codebooks (or called codebooks) in multi-rate lattice vector quantization for sub-vectors (see, for example, Patent Document 1 or Non-Patent Document 1).

[0015] For example, as shown in FIG. 1, the quantization parameters in split multi-rate lattice vector quantization include information for identifying the codebook used for quantization (for example, referred to as a "codebook indicator" or a codebook index), and information for identifying the selected code vector among the plurality of code vectors included in the codebook (for example, referred to as a "code vector index").

[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 for encoding (or quantization) of one sub-vector (SV). Among the number of bits used for encoding using each codebook (for example, the total number of bits used), 1, 2, 3, 4, 5,..., n bits (n is an integer of 2 or more) may be used for the codebook indicator value. In other words, in FIG. 1, the ratio of the number of bits allocated to the encoding of the codebook indicator value to the total number of bits used for encoding using each codebook (for example, 5n) may be 1 / 5.

[0017] Note that the codebook Q0 may include one vector (e.g., a zero vector). The zero vector means, for example, that the quantization value of the vector is 0. Therefore, in the codebook Q0, the code vector index may not be defined, and the number of bits used for the code vector index may be 0.

[0018] For example, an encoder may encode a plurality of subvectors (e.g., eight SVs in Non-Patent Document 1) together using the codebook shown in FIG. 1. Note that the number of bits available for encoding the plurality of subvectors (e.g., referred to as the "total number of bits") may be known between the encoder and the decoder.

[0019] For example, Patent Document 1 proposes, as an example, a method for reducing bits in split multi-rate lattice vector quantization for eight SVs. For example, based on the number of bits used for seven of the eight SVs, the codebook index value (codebook index) used for the remaining one SV may be estimated according to the following formula (1) (see, for example, Patent Document 1).

Equation

[0020] In Equation (1), cb’fix indicates an estimated value of the number of bits used for the codebook index value for one SV (e.g., subvector number i = Pfix), and Bits available indicates the total number of bits available for encoding the eight SVs, and ΣBits cbvi indicates the sum of the number of bits used for encoding the other seven subvectors vi (i ≠ Pfix) different from the subvector number i = Pfix (e.g., the total number of bits used in FIG. 1).

[0021] In Patent Document 1, for example, for one SV (e.g., i = Pfix), the encoder quantizes (or encodes) the difference between the estimated number of bits used for the codebook indication value shown in Equation (1) and the number of bits of the actual codebook indication value, and transmits the difference information to the decoder. 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 above-described difference information becomes compared to the codebook indication value, and the number of encoded bits can be reduced.

[0022] However, in Patent Document 1, for example, there is a case where the difference information (in other words, the encoding target) becomes a negative number (e.g., -1), and since a quantization level or code corresponding to the negative number is used, the complexity of encoding (or quantization) can increase.

[0023] Also, when a specific SV is encoded based on codebook Q0 (e.g., codebook indication value “0”) or codebook Q2 under special conditions (e.g., codebook indication value “1”), the number of encoded bits may not be reduced.

[0024] Here, the special case may be, for example, a case where among all the bits available for encoding, there are no bits not used for encoding and all bits are used for encoding. In this case, for example, in FIG. 1, among the plurality of bits indicating the codebook indication value of each codebook, the trailing “0” (which may also be 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] Also, for example, focusing on bit reduction of an SV with a larger number of bits used for encoding among a plurality of SVs, there is a possibility that the number of encoded bits is not reduced when an SV with the number of bits used for encoding becoming 0 occurs. Note that an SV with the number of bits used for encoding becoming 0 is likely to be a high-frequency SV among a plurality of SVs (e.g., the 6th, 7th, or 8th SV among 8 SVs).

[0026] Therefore, in one embodiment of the present disclosure, a method for reducing the number of encoding bits used for encoding (in other words, variable-length coding) of codebook index values of multi-rate lattice vector quantization (LVQ: Lattice VQ) applied to split vector quantization (for example, SVQ: Split VQ) will be described.

[0027] Note that hereinafter, as an example, the case where conversion coding is applied to the coding method will be described.

[0028] [Configuration example of encoding device] FIG. 2 is a block diagram showing a configuration example 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 conversion unit 101, a psychoacoustic model analysis unit 102, a split multi-rate lattice vector quantization (VQ) unit 103 (for example, corresponding to a quantization circuit), a codebook index value conversion unit 104 (for example, corresponding to a control circuit), and a multiplexing unit 105.

[0029] The time-frequency conversion unit 101 may convert an input signal S(n) in the time domain into an input signal in the frequency domain (or also referred to as spectral coefficients) S(f) by a time-frequency conversion method such as discrete Fourier transform (DFT: Discrete Fourier Transform) or modified discrete cosine transform (MDCT: Modified Discrete Cosine Transform). The time-frequency conversion unit 101 may output, for example, the input signal S(f) in the frequency domain to the psychoacoustic model analysis unit 102 and the split multi-rate lattice VQ unit 103.

[0030] The psychoacoustic model analysis unit 102 may perform psychoacoustic model analysis on the input signal S(f) in the frequency domain input from the time-frequency conversion unit 101 to obtain a masking curve. The psychoacoustic model analysis unit 102 may output, for example, information regarding 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 the input signal S(f) in the frequency domain input from the time-frequency conversion unit 101, for example. For example, the split multi-rate lattice VQ unit 103 may divide the input signal S(f) into a plurality of sub-vectors (SVs), quantize each of the plurality of sub-vectors, and generate quantization parameters including a codebook indication value indicating a codebook and a code vector index indicating any one of the 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 input signal S(f) in the frequency domain according to the information regarding the masking curve input from the psychoacoustic model analysis unit 102. Thereby, for example, the quantization noise in the split multi-rate lattice VQ can be made inaudible.

[0033] The split multi-rate lattice VQ unit 103 may output, for example, the global gain and the code vector index among the quantization parameters obtained by quantization to the multiplexing unit 105. Also, the split multi-rate lattice VQ unit 103 may output, for example, information regarding the codebook indication value and the code vector index among the quantization parameters to the codebook indication value conversion unit 104. Also, the split multi-rate lattice VQ unit 103 may output, for example, information regarding the number of bits (e.g., Bits available ) available for encoding the input signal S(f) to the codebook indication value conversion unit 104.

[0034] The codebook indication value conversion unit 104 may convert the encoded information (or referred to as the encoded code) of the codebook indication value based on the information input from the split multi-rate lattice VQ unit 103, for example.

[0035] For example, the codebook index conversion unit 104 may perform the following processing of steps 1 to 3 based on the codebook index values of a plurality of sub-vectors input from the split multi-rate lattice VQ unit 103.

[0036] (Step 1) The codebook index conversion unit 104 may, for example, set the codebook index values of other sub-vectors (e.g., N - 1 sub-vectors) different from the sub-vector at a predetermined position among a plurality (e.g., N) of codebook index values to signs (or encoded codes). Then, the codebook index conversion unit 104 may, for example, calculate the total number of bits used for the codebook index value and the code vector index in the N - 1 sub-vectors.

[0037] (Step 2) The codebook index conversion unit 104 may, for example, calculate the number of available bits for the codebook index value of the sub-vector at a predetermined position. For example, the codebook index conversion unit 104 may subtract the total number of bits used for encoding the N - 1 sub-vectors calculated in (Step 1) from the total number of available bits (Bits available ) for encoding the input signal S(f) to calculate the number of available bits for encoding the codebook index value of the sub-vector at a predetermined position.

[0038] (Step 3) The codebook index 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 available bits for encoding the sub-vector at a predetermined position calculated in (Step 2), and encode the number of unused bits. For example, the codebook index conversion unit 104 may subtract the sum of the number of bits used for the codebook index value and the number of bits used for the code vector index of the sub-vector at a predetermined position from the number of available bits calculated in (Step 2) to calculate the number of unused bits.

[0039] The codebook indication value conversion unit 104 may output, for example, the codebook indication value (encoding code) obtained by (Step 1) to (Step 3) and the unused bit number encoding code to the multiplexing unit 105.

[0040] Note that an operation example of the codebook indication 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 (encoding code) and unused bit number encoding 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 operation example of the codebook indication value conversion unit 104 will be described.

[0043] FIG. 3 is a block diagram showing a configuration example of the codebook indication value conversion unit 104. The codebook indication value conversion unit 104 shown in FIG. 3 may include, for example, a codebook indication value separation unit 121, an available bit number calculation unit 122, an unused bit number calculation unit 123, and an unused bit number encoding unit 124.

[0044] For example, the codebook indication value cbvi of the N sub-vectors output from the split multi-rate lattice VQ unit 103 (where i is any one of 1 to N) may be input to the codebook indication value separation unit 121.

[0045] The codebook indication value separation unit 121 outputs, for example, the codebook indication value cbfixx (or cbvi(i = Pfix)) of the subvector at a pre-specified position (for example, i = Pfix) to the unused bit number calculation unit 123 based on the input N codebook indication values cbvi. Further, the codebook indication value separation unit 121 outputs the codebook indication values cbvi(i ≠ Pfix) of N - 1 subvectors different from the pre-specified position to the available bit number calculation unit 122 and may output them to the multiplexing unit 105 as codebook indication values (encoded codes) (corresponding to step 1 above).

[0046] The available bit number calculation unit 122 may calculate, for example, the number of bits available for encoding the subvector at a pre-specified position (corresponding to step 2 above). For example, the available bit number calculation unit 122 subtracts, from the input number of bits Bits available the number of bits used for encoding N - 1 subvectors calculated using N - 1 codebook indication values (cbvi(i ≠ Pfix)) to calculate the number of bits available for encoding the subvector at a pre-specified position. The available bit number calculation unit 122 may output the calculated available bit number to the unused bit number calculation unit 123 and the unused bit number 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 formula (2).

Equation

[0048] In this way, the available bit number calculation unit 122 calculates the available bit number cb'fix for encoding the sub-vector at a predetermined position, for example, as shown in Equation (2), by subtracting the number of bits used for encoding N-1 sub-vectors (for example, ΣBits available (i≠Pfix)) from the total number of bits Bits cbvi .

[0049] The unused bit number calculation unit 123 may calculate the number of unused bits not used for 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 for encoding the codebook indication value of the sub-vector at a predetermined position (actual value cbfix) input from the codebook indication value separation unit 121, and then calculate the number of bits used for encoding the sub-vector at a predetermined position (for example, the number of bits used for encoding the codebook indication value and the code vector index). Then, the unused bit number calculation unit 123 may calculate the number of unused bits by subtracting the number of bits used for encoding the sub-vector at a predetermined position from the available bit number input from the available bit number calculation unit 122. The unused bit number calculation unit 123 may output information regarding 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 encode the number of unused bits input from the unused bit number calculation unit 123 to generate an unused bit number encoded code (or referred to as encoded information). For example, the unused bit number encoding unit 124 may generate an unused bit number information encoded code from the number of unused bits based on the association (which may be represented by 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 output the unused bit number encoded code to the multiplexing unit 105, for example.

[0052] Here, as shown in FIG. 4, the number of unused bits is an integer of 0 or more. 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 used bits of the codebook indication value is 2 or more, the number of used bits of the codebook indication value and the number of used bits of the code vector index are in a 1:4 relationship, and the total number of used bits used for the encoding combining both the codebook indication value and the code vector index changes in units of 5.

[0053] Also, the unused bit number encoding unit 124 may correct the code word for the maximum number of unused bits, for example, using 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 number of unused bits that can be obtained is 22 bits (for example, when the codebook Q0 is used), and in the example of FIG. 4, the code word is 11110 (5 bits). The unused bit number encoding unit 124 may change (or correct) this code word 11110 to 1111 (4 bits), for example. This is because when the number of available bits is 23 bits, there cannot be a code word corresponding to 25 bits or more of the number of unused bits, so when the upper 4 bits of the code word are "1111" (in other words, regardless of the least significant bit of the code word), it is determined that the number of unused bits is 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 maximized.

[0054] [Configuration Example of Decoder] FIG. 5 is a block diagram showing a configuration example of a decoder 200 according to an embodiment of the present disclosure. The decoder 200 shown in FIG. 5 may include, for example, a separation unit 201, a codebook indication value inverse conversion unit 202 (for example, corresponding to a control circuit), a split multi-rate lattice inverse quantization (inverse VQ) unit 203 (for example, 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 the separation unit 201.

[0056] The separation unit 201 may separate, for example, a global gain, a code vector index, a codebook indication value (encoding code), and an unused bit number information encoding code from the input bit stream. The separation unit 201 may output, for example, the global gain and the code vector index to the split multi-rate lattice inverse VQ unit 203, and output the codebook indication value (encoding code) and the unused bit number information encoding code to the codebook indication value inverse conversion unit 202.

[0057] The codebook indication value inverse conversion unit 202 may calculate, for example, a codebook indication value of a sub-vector at a previously specified position (for example, i = Pfix) based on the information input from the separation unit 201.

[0058] For example, the codebook indication value inverse conversion unit 202 may perform the following processing of steps 4 to 7 based on the codebook indication value (encoding code) and the unused bit number information encoding code input from the separation unit 201.

[0059] (Step 4) The codebook indication value inverse conversion unit 202 decodes, for example, a codebook indication value of another sub-vector different from a previously specified position (for example, i = Pfix) based on the codebook indication value (encoding code). Further, the codebook indication value inverse conversion unit 202 may calculate, for example, the number of bits used for encoding a plurality of sub-vectors (for example, i ≠ Pfix) (for example, the sum of the number of bits used for the codebook indication value and the number of bits used for the code vector) based on the decoded codebook indication value.

[0060] (Step 5) The codebook indication value inverse conversion unit 202 may decode the number of unused bits based on, for example, the unused bit number information encoding code.

[0061] (Step 6) The codebook index value inverse conversion unit 202 may calculate, for example, the number of encoding bits of the sub-vector at a pre-specified position based on the number of encoding bits of the plurality of sub-vectors calculated in (Step 4) and the number of unused bits decoded in (Step 5).

[0062] (Step 7) The codebook index value inverse conversion unit 202 may calculate (or decode), for example, the codebook index value of the sub-vector at a pre-specified position based on the number of encoding bits of the sub-vector at a pre-specified position calculated in (Step 6).

[0063] The codebook index value inverse conversion unit 202 may output the codebook index value obtained by (Steps 4) to (Step 7) to the split multi-rate lattice inverse VQ unit 203, for example.

[0064] Note that an operation example of the codebook index 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 the code vector index input from the separation unit 201 and the output codebook index value input from the codebook index value inverse conversion unit 202, to obtain the decoded signal S~(f) in the frequency domain. The split multi-rate lattice inverse VQ unit 203 may output the decoded signal S~(f) in the frequency domain 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 multirate 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 operation example of the codebook index inverse conversion unit 202 will be described.

[0068] FIG. 6 is a block diagram showing a configuration example of the codebook index inverse conversion unit 202. The codebook index 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 index generation unit 224.

[0069] For example, the codebook index (encoded code) output from the separation unit 201 may be input to the available bit number calculation unit 221 and the codebook index generation unit 224. Also, for example, the unused bit number encoded code output from the separation unit 201 may be input to the unused bit number decoding unit 222.

[0070] Note that the input codebook index (encoded code) may represent, for example, the codebook indices 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, for example, the number of bits available for encoding the subvector at a pre-specified position. For example, the available bit number calculation unit 221 calculates the number of bits used for encoding N-1 subvectors using N-1 codebook indices (cbvi (i≠Pfix)) (corresponding to step 4 above), and the input number of bits Bits availableFrom the number of bits used for encoding N-1 subvectors, the number of available bits cb’fix for encoding the subvector at a pre-specified position may be calculated by subtraction. The available bit number 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 encoding code input from the separation unit 201. For example, the unused bit number decoding unit 222 may determine the unused bit number from the unused bit number encoding code based on the association between the unused bit number and the unused bit number encoding code (e.g., code) shown in FIG. 4 (corresponding to step 5 above). The unused bit number decoding unit 222 may output information regarding the determined unused bit number to the restoration unit 223, for example.

[0073] The restoration unit 223 may determine (or restore) the codebook index value of the subvector at a pre-specified position based on, for example, the number of available bits input from the available bit number 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 subvector at a pre-specified position (e.g., the total number of bits used 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 index value based on the calculated number of bits (e.g., the total number of bits used), and output the encoding code indicating the codebook index value to the codebook index value generation unit 224 (corresponding to steps 6 and 7 above).

[0074] The codebook index generation unit 224 may generate N codebook indices cbvi (i = 1 to N) such that the codebook index cbvi with i = Pfix is arranged at a pre-specified position, based on, for example, the codebook indices cbvi (i ≠ Pfix) of N - 1 sub-vectors input from the separation unit 201 and the codebook index cbvi of the sub-vector at a pre-specified position input from the restoration unit 223 (i = Pfix). The codebook index generation unit 224 may output the generated codebook indices to the split multi-rate lattice inverse VQ unit 203.

[0075] [Example of conversion of codebook index] Next, an example of the operation of the codebook index conversion unit 104 of the encoding apparatus 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] Also, in FIG. 7, as an example, the position (i = Pfix) of the pre-specified sub-vector in the input signal S(f) is set to v8.

[0078] FIG. 8 is a diagram showing an example of codebook indices (or codebooks) for each of the sub-vectors v1 to v8 obtained by split multi-rate lattice quantization.

[0079] In the example shown in FIGS. 7 and 8, in the codebook index conversion unit 104, the codebook index separation unit 121 outputs, for example, the codebook index of the sub-vector v8 (e.g., 5 bits of "11110") to the unused bit number calculation unit 123. Also, the codebook index separation unit 121 may output, for example, the codebook indices of sub-vectors v1 to v7 different from the sub-vector v8 (e.g., "10", "10", "110", "110", "1110", "1110", "11110") to the multiplexing unit 105 as code codes.

[0080] The available bit number calculation unit 122 may calculate, for example, the number of bits available for encoding the subvector v8. For example, the total number of available bits (Bits in Equation (2)) in the transmission unit of the input signal is 144 bits. In this case, the available bit number calculation unit 122 may obtain, for example, the sum of the number of bits used per subvector (total number of used bits. For example, Bits in Equation (2)) for each of the subvectors v1 to v7 different from the subvector v8. Then, the available bit number calculation unit 122 may calculate, for example, the available bit number cb’fix = (144 - 10 - 10 - 15 - 15 - 20 - 20 - 25) = 29 according to Equation (2). available ) is set to 144 bits. In this case, the available bit number calculation unit 122 may obtain, for example, the sum of the number of bits used per subvector (total number of used bits. For example, Bits in Equation (2)) for each of the subvectors v1 to v7 different from the subvector v8. Then, the available bit number calculation unit 122 may calculate, for example, the available bit number cb’fix = (144 - 10 - 10 - 15 - 15 - 20 - 20 - 25) = 29 according to Equation (2). cbvi ) of each of the subvectors v1 to v7 different from the subvector v8. Then, the available bit number calculation unit 122 may calculate, for example, the available bit number cb’fix = (144 - 10 - 10 - 15 - 15 - 20 - 20 - 25) = 29 according to Equation (2).

[0081] The unused bit number calculation unit 123 may subtract, for example, the 25 bits used for encoding the subvector v8 from the available bit number cb’fix = 29 bits to calculate the unused bit number (here, 29 - 25 = 4 bits).

[0082] The unused bit number encoding unit 124 may generate, for example, the unused bit number encoding code "0" (1 bit) based on the association shown in FIG. 4 since the unused bit number is 4 bits.

[0083] In the encoding device 100, the codebook indication values (encoding codes) "10", "10", "110", "110", "1110", "1110", "11110" of each of the subvectors v1 to v7 generated in this way, and the unused bit number encoding code "0" are multiplexed in the multiplexing unit 105 and transmitted to the decoding device 200.

[0084] As described above, in the example shown in FIG. 7, the codebook number applied to the sub-vector v8 is 5 (Q5), and the number of bits used when encoding the codebook indication value itself of the codebook Q5 is 5 bits. On the other hand, in one embodiment of the present disclosure, the number of bits of the unused bit number encoded code transmitted instead of the codebook indication value for the sub-vector v8 is 1 bit as described above. Therefore, in the example shown in FIG. 7, by notifying the unused bit number encoded code, 4 bits of encoded bits can be reduced as compared with the case where the codebook indication value itself of the sub-vector v8 is encoded and notified. Further, in the present embodiment, even if the number of encoded bits is reduced, information regarding the codebook is not lost, so that the codebook indication value can be restored in the decoding apparatus 200.

[0085] As described above, the encoding apparatus 100 and the decoding apparatus 200 control the encoding or decoding of the codebook indication value for the sub-vector using, for example, the 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 apparatus 100 converts the codebook indication value used for encoding a specific sub-vector among the spectra of the input signal divided into a plurality of sub-vectors into information regarding the number of unused bits. Similarly, the decoding apparatus 200 converts the information regarding the number of unused bits into information regarding the codebook indication value using the encoded code of the number of unused bits transmitted from the encoding apparatus 100.

[0087] By this conversion, for example, in lattice vector quantization (LVQ) used for split vector quantization (SVQ), the encoding efficiency of the codebook indication value (or codebook index) of a specific one SV can be improved. According to the present embodiment, the number of bits used for the codebook indication value used for encoding a specific sub-vector can be reduced, and the bit rate can be reduced.

[0088] Also, for example, as described above, in the method of encoding the difference information between the estimated value and the actual value of the codebook indication value as in Patent Document 1, there is a case 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, while the codebook indication value estimated in Patent Document 1 is 0 (Q0), there may be a case where the actual codebook indication value is 1 (Q1). Therefore, the complexity of the encoding process, such as setting the quantization level or code associated with -1 (negative number), can increase. On the other hand, in one embodiment of the present disclosure, for example, since the number of unused bits in the number of bits including both the codebook indication value and the code vector index is encoded, the minimum value of the number of unused bits to be encoded is 0, and it is not necessary to consider the encoding of negative numbers, so the encoding process can be simplified.

[0089] In addition, in the above-described embodiment, as an example, the case where the conversion encoding is applied to the encoding method has been described, but the encoding method is not limited to the conversion encoding. For example, one embodiment of the present disclosure may be applied to the encoding that quantizes each of a plurality of subvectors obtained by dividing a signal (spectrum) in the frequency domain.

[0090] In this embodiment, the total number of available bits for encoding is input to the available bit number calculation units 122 and 221. This total number of available bits may be information held inside the encoder (for example, the encoding device 100) or the decoder (for example, the decoding device 200), rather than information input from the outside of the encoder or the decoder. The total number of available bits may be, for example, a predetermined fixed value. Or, using a predetermined fixed value as the initial value, 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 Hierarchical Encoding of Transform Encoding] For example, the split multi-rate lattice VQ according to the present embodiment may be applied to CELP and hierarchical coding of transform coding. FIG. 9 is a block diagram showing a configuration example of an encoding apparatus 100a when the split multi-rate lattice VQ is applied to CELP and hierarchical coding of transform coding. Further, FIG. 10 is a block diagram showing a configuration example of a decoding apparatus 200a when the split multi-rate lattice VQ is applied to CELP and hierarchical coding of transform coding.

[0092] In FIGS. 9 and 10, components that perform the same processing as the encoding apparatus 100 and the decoding apparatus 200 are given the same reference numerals.

[0093] In the encoding apparatus 100a shown in FIG. 9, the CELP encoding unit 51 may perform CELP encoding on the time-domain signal S(n), for example, and output CELP parameters to the CELP local decoding unit 52 and the multiplexing unit 105. Note that the CELP encoding method is, for example, an encoding method that utilizes the predictable nature of a time-domain signal.

[0094] The CELP local decoding unit 52 decodes, for example, the CELP parameters input from the CELP encoding unit 51 and generates a synthesized signal S syn (n).

[0095] The adder 53 generates, for example, a prediction error signal S syn (n) by subtracting the synthesized signal S e from the input signal S(n).

[0096] The time-frequency conversion unit 54 converts the time-domain coding error signal S e (n) into a frequency-domain coding error signal S e (f) by a time-frequency conversion method such as DFT or MDCT.

[0097] The frequency-domain coding error signal S e(f) may be quantized by the split multi-rate lattice VQ unit 103 and the codebook index conversion unit 104 as described above. For example, the encoding device 100a splits the encoding error signal S e Instead of the codebook index (encoding code) of a specific subvector among a plurality of subvectors obtained by splitting (f), an unused bit number encoding code may be transmitted to the decoding device 200a.

[0098] In the decoding device 200a shown in FIG. 10, the separation unit 201 separates the bit stream transmitted from the encoding device 100a into a CELP parameter and a quantization parameter, outputs the CELP parameter to the CELP decoding unit 64, and 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 index (encoding code) and the unused bit number encoding code among the quantization parameters to the codebook index inverse conversion unit 202.

[0099] The codebook index inverse conversion unit 202 determines, for example, as described above, the codebook index for the subvector at a specific position of the encoding error signal S e (f), and outputs information regarding the codebook indexes of the N subvectors to the split multi-rate lattice inverse VQ unit 203.

[0100] The split multi-rate lattice inverse VQ unit 203 decodes (or inverse quantizes), for example, the encoding error signal S e ~(f) in the frequency domain based on the global gain, the codebook index, and the code vector index.

[0101] The frequency-time conversion unit 63 converts, for example, the decoded encoding error signal S e ~(f) in the frequency domain into the encoding error signal S e ~(n) in the time domain by a frequency-time conversion method such as IDFT or IMDCT.

[0102] The CELP decoder 64 decodes, for example, CELP parameters to obtain a synthesized signal S syn (n).

[0103] The adder 65 adds, for example, the coded error signal S e ~(n) and the synthesized signal S syn (n) to obtain a time-domain signal S~(n).

[0104] [Application to TCX (Transform Coded eXcitation) Coding] For example, the split multi-rate lattice VQ according to the present embodiment may be applied to TCX coding (or, also referred to as a TCX codec). FIG. 11 is a block diagram showing a configuration example of an encoder 100b in this case, and FIG. 12 is a block diagram showing a configuration example of a decoder 200b.

[0105] In FIGS. 11 and 12, components that perform the same processing as the encoder 100 and the decoder 200 are denoted by the same reference numerals.

[0106] In the encoder 100b shown in FIG. 11, the LPC (Linear Predictive Coding) analysis unit 71 performs LPC analysis on the time-domain signal S(n) and outputs LPC parameters to the quantization unit 72. Note that LPC analysis is, for example, a method that utilizes the predictable nature of a time-domain signal.

[0107] The quantization unit 72 quantizes, for example, the LPC parameters input from the LPC analysis unit 71 and outputs quantization parameters (for example, quantization indices) to the inverse quantization unit 73 and the multiplexing unit 105.

[0108] The inverse quantization unit 73 inverse quantizes, for example, the quantization index input from the quantization unit 72 to restore the LPC parameters.

[0109] The LPC inverse filter section 74 applies, for example, LPC inverse filtering using the restored LPC parameters input from the inverse quantization section 73 to the input signal S(n), thereby obtaining the residual signal S r (n) in the time domain.

[0110] The time-frequency conversion section 75 converts, for example, the residual signal S r (n) in the time domain into a residual signal S r (f) in the frequency domain by a time-frequency conversion method such as DFT or MDCT.

[0111] The residual signal S r (f) in the frequency domain may be quantized by the split multirate lattice VQ section 103 and the codebook index conversion section 104 as described above. For example, the encoding device 100b may transmit an unused bit number encoded code to the decoding device 200b instead of the codebook index value (encoding code) of a specific subvector among a plurality of subvectors obtained by splitting the residual signal S r (f).

[0112] In the decoding device 200b shown in FIG. 12, the separation section 201 separates the bit stream transmitted from the encoding device 100b into a quantization index and quantization parameters, outputs the quantization index to the inverse quantization section 84, outputs the global gain and the code vector index among the quantization parameters to the split multirate lattice inverse VQ section 203, and outputs the codebook index value (encoding code) and the unused bit number encoded code among the quantization parameters to the codebook index inverse conversion section 202.

[0113] The codebook index inverse conversion section 202 determines, for example, the codebook index value for the subvector at a specific position of the residual signal S r (f) based on the codebook index value (encoding code) and the unused bit number encoded code as described above, and outputs information regarding the codebook index values of the N subvectors to the split multirate lattice inverse VQ section 203.

[0114] The split multi-rate lattice inverse VQ section 203 decodes (or inverse quantizes), for example, the residual signal S r ~(f) in the frequency domain based on the global gain, codebook index value, and code vector index.

[0115] The frequency-time conversion section 83 converts, for example, the decoded residual signal S r ~(f) in the frequency domain into the residual signal S r ~(n) in the time domain by a frequency-time conversion method such as IDFT or IMDCT.

[0116] The inverse quantization section 84 inverse quantizes, for example, the quantization index to restore the LPC parameters.

[0117] The LPC synthesis filter section 85 applies, for example, LPC synthesis filtering using the restored LPC parameters to the residual signal S r ~(n) in the time domain to obtain the time domain signal S~(n).

[0118] The above has described the case of applying the split multi-rate lattice VQ to TCX encoding.

[0119] In this embodiment, the LPC synthesis filter processing is performed in the time domain, but it may also be performed in the frequency domain. As an example of such TCX encoding, MDCT based TCX of the EVS codec can be mentioned.

[0120] [An example of a sub-vector at a specific position] An example of the sub-vector at the specific position described above will be described.

[0121] The split multi-rate lattice VQ may be applied to, for example, the encoding process and decoding process of audio sound such as the EVS (Enhanced Voice Services) codec described in Non-Patent Document 1.

[0122] For example, the 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, the AVQ is applied to various coding modes. For example, when a coded frame is classified as a harmonic signal in the 32 kbit / s GC (Generic Coding) mode, the number of coding bits of the codebook index value in the split multi-rate lattice VQ is likely to be larger for sub-vectors with higher frequencies (for example, in FIG. 7, sub-vector v8).

[0124] This is because the coding in the GC mode for harmonic signals is likely to be performed at the rising edge of vowels, the higher the frequency band, the more likely the expressiveness of harmonics by the adaptive codebook (or adaptive codebook) deteriorates, or the higher the frequency band, the more likely a harmonic shift occurs and the coding error of the adaptive codebook tends to increase. Therefore, in the coding of signals in the frequency domain (for example, the spectrum of the prediction error or residual signal), the higher the sub-vector in the high-frequency region, the greater the signal energy, and a codebook with a larger number of bits used for quantization is more likely to be selected.

[0125] Therefore, for example, as described above, when the signal in the frequency domain is divided into eight sub-vectors v1 to v8, among the plurality of sub-vectors v1 to v8, a larger number of bits are likely to be allocated for coding the sub-vector v8 in the highest frequency band in the frequency domain. Therefore, as described above, in the encoding device 100 and the decoding device 200, the sub-vector v8 may be set for the sub-vector at a specific position.

[0126] Thus, in the GC mode of the EVS codec, when the input signal (or encoded frame) to be vector quantized is a harmonic signal, among the plurality of sub-vectors constituting the input signal, the sub-vector with the highest frequency may be set as one sub-vector for encoding the number of unused bits. Thereby, the effect of reducing the number of encoded bits when applying the split multi-rate lattice VQ to the AVQ of the GC encoding can be improved.

[0127] Note that in the GC mode, when the input signal is not harmonic, depending on the encoding bit rate of EVS, the split multi-rate lattice VQ may be applied to the time-domain signal in some cases. Even in this case, it is effective to set the last sub-vector (in other words, the sub-vector that is the last in time) to a pre-specified sub-vector position. This is because experimentally it has been confirmed that in such cases, the number of bits used for encoding the number of unused bits tends to be less than the number of bits used for encoding the codebook index value. That is, in the frames classified into the GC mode, the number of bits remaining unused during the quantization of the last sub-vector is often small, so it is often more efficient to encode the number of unused bits.

[0128] [Method for Reducing the Number of Encoded Bits] Next, an example of a method for reducing the number of encoded bits for a sub-vector at a specific position will be described.

[0129] [Method 1] For example, when the number of bits used for encoding a sub-vector at a specific position (for example, sub-vector v8) is small (for example, codebook Q0 or Q2) and the number of unused bits is large (for example, when it is equal to or more than a threshold such as 15 bits), the number of bits used for encoding the number of unused bits may be more than the number of bits used for encoding the codebook index value itself.

[0130] For example, when the number of available bits (cb’fix) for encoding the subvector at a specific position is 9 bits or less, the codebook available for the subvector at a specific position (for example, subvector v8) is the codebook Q0 (1-bit with a codebook indication value of “0”), or the special case codebook Q2 (1-bit with a codebook indication value of “1”).

[0131] For example, in either the case of codebook Q0 or the special case codebook Q2, since the codebook indication value is represented by 1 bit (in other words, the minimum value), the method according to an embodiment of the present disclosure cannot reduce the number of encoding bits either.

[0132] Therefore, when the number of bits available for the subvector at a specific position is less than or equal to a threshold (for example, 9 bits or less), the encoding device 100 may determine the codebook indication value of the subvector at the specific position as the code (or encoding information) as it is without applying the method according to an embodiment of the present disclosure (for example, the method of encoding the number of unused bits).

[0133] On the other hand, when the number of bits available for the subvector at a specific position is more than the threshold (for example, more than 9 bits), the encoding device 100 may determine the code obtained by encoding the number of unused bits as the encoding information.

[0134] By Method 1, regardless of the number of bits available for the subvector at a specific position, an increase in the number of encoding bits can be suppressed and the encoding efficiency can be improved.

[0135] Also, as described above, the number of bits available for the subvector at a specific position is information that can also be calculated by the decoding device 200 from other parameters (for example, the total number of bits and the codebook indication values of other subvectors). Therefore, it is not necessary to provide signaling for switching the encoding method according to Method 1 (for example, additional information for notifying the switch).

[0136] <Method 2> For example, when the number of available bits (cb’fix) is any one of 11 to 13 bits, the codebook available for a specific position sub-vector (for example, sub-vector v8) is either codebook Q0 (for example, total number of bits used: 1 bit) or codebook Q2 (for example, total number of bits used: 10 bits). Here, for example, when codebook Q0 is used (for example, total number of bits used: 1 bit), since the number of unused bits is 10 to 12 bits, in the example shown in FIG. 4, the number of encoded bits of the unused bits is 3 bits. Therefore, compared with the case where the codebook indication value is directly encoded (for example, 1 bit), the number of bits increases by 2 bits.

[0137] By the way, as shown in FIG. 1, since the total number of bits used in the case of codebook Q2 is 10 bits, it is clear that at least 1 to 3 bits will be unused when the number of available bits is any one of 11 to 13 bits.

[0138] The number of bits that are clearly unused among such available bits can be calculated, for example, as the remainder of 5 with respect to the number of available bits. 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). Note that the function “a % b” is a function that returns the remainder of b with respect to a (also called modulo operation, for example). Note that 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 with respect to the total number of bits used in the encoding of the sub-vector (or the unit of change in the total number of bits used).

[0139] Information regarding such clearly unused bits may not be transmitted from the encoding device 100 to the decoding device 200 as encoding information. Therefore, the encoding device 100 may subtract the remainder of 5 with respect to the number of available bits (in other words, the number of clearly 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 either 11 to 13 bits, the remainder of 5 with respect to the number of available bits is 1 to 3 bits. Therefore, the subtraction result is 10 bits. The encoding device 100 may, for example, set the 10 bits of the subtraction result as the available bits. For example, in the encoding device 100, when the codebook Q0 (1 bit) is used for the 10 available bits, since the number of unused bits becomes 9 bits, in the example shown in FIG. 4, it is encoded into the 2-bit unused bit number encoding code.

[0141] As a result, the number of bits (e.g., 2 bits) used for encoding the number of unused bits when subtracting the remainder of 5 from the number of available bits is reduced compared to the number of bits (e.g., 3 bits) used for encoding the number of unused bits when not subtracting the remainder of 5 from the number of available bits. In other words, for example, when subtracting the remainder of 5 from the number of available bits, an increase in the number of bits can be suppressed to 1 bit compared to the case of directly encoding the codebook indication value (e.g., 1 bit).

[0142] <Method 3> For example, when the number of available bits (cb’fix) is 10 bits, since the number of unused bits does not exceed 10 bits (in other words, it is 9 bits or less), in the example shown in FIG. 4, the “0” of the code “10” corresponding to the number of unused bits 5 to 9 may not be present. In other words, in this case, it is sufficient to distinguish between the number of unused bits of 0 to 4 (code “0”) and 5 to 9 (code “1”). By such encoding, the number of bits used for encoding the number of unused bits can be further reduced by 1 bit, and an increase in the number of bits can be suppressed.

[0143] Note that when using such encoding, an increase in the number of bits can be suppressed even when the number of available bits is 9 bits or less. Therefore, for example, the encoding device 100 does not need to switch to the method of directly setting the codebook indication value as the code as described in <Method 1> even when the number of available bits is 9 bits or less.

[0144] <Method 4> For example, when the number of available bits (cb’fix) is 8 bits or less, in the example shown in FIG. 1, the codebook indication value cannot be a value other than “0” (Q0). In this case, the decoding device 200 can identify the codebook indication value Q0 even if the information regarding the codebook indication value is not transmitted.

[0145] Therefore, for example, in either the method of directly encoding the codebook indication value or 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 without transmitting and receiving the information regarding the codebook indication value of the codebook Q0 may be performed. As a result, the encoded information can be reduced by 1 bit.

[0146] <Method 5> For example, when the number of available bits (cb’fix) is 14 bits, in the example shown in FIG. 1, the available codebooks for the subvectors at specific positions are the codebook Q0, Q2, and the special case codebook Q3. In the special case codebook Q3, for example, there are no unused bits, and the codebook indication value can be represented by “11” (2 bits) instead of “110”, and it can be encoded with 14 bits in combination with the number of used bits (12 bits) of the code vector.

[0147] Thus, since the 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 remaining bits.

[0148] Therefore, for example, when the number of available bits is 13 bits or less, it is possible to suppress an increase in the number of encoded bits by at least one of <Method 1> to <Method 4> described above, while when the number of available bits is 14 bits or more, the number of encoded bits may increase or decrease according to the number of unused bits.

[0149] Also, for example, in multi-mode coding such as the EVS codec, when a split multi-rate lattice VQ is used in a specific coding mode, it is assumed that it is rare for unused bits to occupy the majority of the available bits (for example, when the number of unused bits is equal to or greater than a threshold). Therefore, for example, it is highly likely that the number of unused bits less than the threshold will be encoded, and on average, a reduction in the number of bits can be achieved. On the other hand, in rare cases, the number of unused bits may increase, and the number of encoded bits may increase by two or more bits. Therefore, for example, the coding method may be switched based on the following method.

[0150] For example, when a split multi-rate lattice VQ is applied to the AVQ in the GC mode of the EVS codec, the closer the input signal is to zero, the more the number of unused bits tends to increase. 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, when the energy of the adaptive codebook vector (or code vector) is less than a threshold (for example, 10), or when the gain multiplied by the excitation signal encoded by the AVQ is less than a threshold (for example, 1.0), the encoding device 100 may determine the codebook indication value of the sub-vector at a specific position as the encoded code without applying the method according to an embodiment of the present disclosure (for example, the method of encoding the number of unused bits).

[0152] On the other hand, when the energy of the adaptive codebook vector is equal to or greater than a threshold (for example, 10), or when the gain multiplied by the excitation signal encoded by the AVQ is equal to or greater than a threshold (for example, 1.0), the encoding device 100 may determine the encoded code obtained by encoding the number of unused bits as the encoded information.

[0153] Note that the encoding device 100 may switch the encoding method based on, for example, the energy of the adaptive codebook vector and the combination of the gains multiplied by the excitation signal encoded by AVQ. At this time, the encoding device 100 may, for example, perform weighting on the energy of the adaptive codebook vector and the gain multiplied by the excitation signal when determining the switching of the encoding method.

[0154] Also, since the gain multiplied by the excitation signal encoded by AVQ is not determined until the AVQ encoding is completed in the encoding target frame, for example, the gain information in the temporally past frame may be referred to.

[0155] Also, in Method 5, as an example, the method of switching the encoding method based on the energy or gain information of the adaptive codebook vector has been described, but it is not limited thereto, 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 the 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. 4.

[0157] For example, since the upper limit value of the number of unused bits becomes the number of available bits, there may be no code (or code) exceeding the number of available bits. In this case, in the code of the upper limit value of the number of unused bits, the 0 at the end of the code (for example, the stop bit) may not be present.

[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)), in the example shown in FIG. 4, the code assigned to the number of unused bits is "1110". 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 4 or more consecutive 1s such as "11110"). Therefore, even if the 0 at the end of the code "1110" assigned to the number of unused bits = 19 bits is missing (for example, even if it is "111"), the decoding device 200 can identify the number of unused bits.

[0159] Therefore, for example, instead of the example shown in FIG. 4, the example shown in FIG. 13 may be applied to the association between the number of unused bits and the code. The code shown in FIG. 13 corresponds to, for example, a Huffman code. In FIG. 13, compared with FIG. 4, the number of bits of the code "111" when the number of unused bits is 15 to 19 bits is 1 bit less.

[0160] In this way, for example, the code code (or encoded information) obtained by encoding the number of unused bits may be represented by a Huffman code with the upper limit value of the number of available bits as the number of unused bits. For example, the encoding device 100 may perform encoding of the unused bits using a Huffman code corresponding to the upper limit of the unused bits. Thereby, the number of bits used for encoding the codebook indication value can be reduced by 1 bit.

[0161] Note that, 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, as described above, when the upper limit value of the number of unused bits is set based on the number of available bits, among the plurality of Unary codes assigned to the number of unused bits, the least significant bit (LSB) of the Unary code corresponding to the upper limit value of the number of unused bits set based on the number of available bits may be truncated (or deleted). For example, similar to the example described above, when the number of available bits is 20 bits, the upper limit value of the number of unused bits is 19 bits. Therefore, in the example shown in FIG. 4, the Unary code corresponding to the upper limit value 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. Thereby, the number of bits used for encoding the codebook indication value can be reduced by 1 bit.

[0162] Here, if appropriate bit allocation is made to the subvector, for a subvector at a specific position (for example, subvector v8), a codebook indication value with a longer word length (or number of bits) corresponding to the number of available bits is more likely to be selected. Also, when a codebook indication value with a longer word length is selected, the number of unused bits becomes closer to 0, and a code for the number of unused bits with a shorter word length is more likely to be selected. In Method 6, taking advantage of this tendency, the encoding device 100 calculates the maximum codebook indication value that can be used for encoding the subvector based on the number of available bits for the subvector at a specific position, and the code assigned to the number of unused bits may be represented by a Huffman code or a Unary code (for example, a code obtained by truncating the LSB of the Unary code assigned to the upper limit number of unused bits). Thereby, the encoded bits of the number of unused bits can be reduced.

[0163] Also, as described in <Method 2>, when the number of available bits is 10 bits or more, the remaining bits modulo 5 are likely to be unused. Therefore, in Method 6, the number of available bits may be the value obtained by subtracting the remainder of 5.

[0164] Also, for example, in the EVS codec, in the probability distribution of the occurrence of the coding result of the number of unused bits, the probability that the number of unused bits is 5 - 9 bits is the highest, the probability that it is 0 - 4 bits is the second highest, and the case where 10 - 14 bits and later follow in the third place and later may occur (for example, when the GC mode is selected). As a method of assigning codes to the number of unused bits in this case, for example, the code "0" for the number of unused bits of 0 - 4 bits shown in FIG. 4 and the code "10" for the number of unused bits of 5 - 9 bits may be swapped (for example, FIG. 14). In other words, among the codes obtained by encoding each candidate for the number of unused bits, 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, since a code with a smaller number of bits is assigned to the number of unused bits with a high occurrence probability, the average number of coding bits can be reduced. Note that FIG. 14 is an example, and codes with different numbers of bits may be assigned according to the occurrence probability of the number of unused bits. Such an assignment may be determined in advance for each coding mode as the optimal assignment method, so it is not necessary to encode or transmit information regarding the assignment method.

[0165] Also, for example, the codes assigned to the number of unused bits shown in FIGS. 4, 13, and 14 are Unary codes with "0" as the stop bit, but are not limited thereto. For example, a code obtained by swapping "1" and "0" in the codes assigned to the number of unused bits shown in FIGS. 4, 13, and 14 may also be used.

[0166] Also, for example, when switching the encoding method such as <Method 1> or <Method 5>, Huffman encoding is applicable to the method of directly encoding the codebook indication value. For example, in the example shown in FIG. 1, when the number of available bits is 23 bits, among the codebooks for the sub-vectors at specific positions, the largest codebook is Q4 (total number of bits used: 20 bits). At this time, in the example shown in FIG. 1, the codebook indication value of Q4 is 4 bits of "1110". Here, when the number of available bits is 23 bits, codebooks of Q5 or higher (total number of bits used is 25 bits or higher) cannot be used. Therefore, for example, as shown in FIG. 15, the codebook indication value of Q4 may be "111" with "0" omitted from "1110". Thereby, the number of encoded bits of the codebook indication value can be reduced.

[0167] The above has described Methods 1 to 6 respectively.

[0168] Note that in one embodiment of the present disclosure, the codebook list is not limited to the example shown in FIG. 1, and the values and the number of bits used (or the total number of bits used) of the codebook indication value and the code vector index in the codebook 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, in FIG. 1, the case where the ratio of the number of bits used for the codebook indication value to the total number of bits used in each codebook is 1 / 5 (in other words, when the divisor when using the remainder is 5) has been described, but it is not limited to this.

[0170] Also, in the above-described embodiment, the case where the number of sub-vectors into which the input signal S(f) is divided is 8 has been described, but the number of sub-vectors into which the input signal S(f) is divided is not limited to 8.

[0171] The above has described the embodiments of the present disclosure.

[0172] Note that the present disclosure can be implemented by software, hardware, or software in cooperation with hardware. Each functional block used in the description of the above embodiments can be realized, partially or entirely, as an LSI which is an integrated circuit, and each process described in the above embodiments can 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 so as to include a part or all of the functional blocks. The LSI may be provided with data input and output. Depending on the degree of integration, the LSI may also be referred to as an IC, a system LSI, a super LSI, or an ultra LSI. The method of integrating into an integrated circuit is not limited to LSI, and it may be realized by a dedicated circuit, a general-purpose processor, or a dedicated processor. Also, after manufacturing the LSI, an FPGA (Field Programmable Gate Array) that can be programmed, or a reconfigurable processor that can reconfigure the connection and setting of circuit cells inside the LSI may be used. The present disclosure may be realized as digital processing or analog processing. Furthermore, if an integrated circuit technology that replaces the LSI appears due to the progress of semiconductor technology or other derived technologies, naturally, the integration of functional blocks may be performed using that technology. The application of biotechnology and the like are possible as examples.

[0173] The present disclosure can be implemented in any type of device, apparatus, system having a communication function (collectively referred to as a communication device). The communication device may include a wireless transceiver (transceiver) and a processing / control circuit. The wireless transceiver may include a receiving unit and a transmitting unit, or may include them as functions. The wireless transceiver (transmitting unit, receiving unit) may include an RF (Radio Frequency) module and one or more antennas. The RF module may include an amplifier, an RF modulator / demodulator, or the like. Non-limiting examples of the communication device include a telephone (mobile phone, smartphone, etc.), a tablet, a personal computer (PC) (laptop, desktop, notebook, etc.), a camera (digital still / video camera, etc.), a digital player (digital audio / video player, etc.), a wearable device (wearable camera, smartwatch, tracking device, etc.), a game console, a digital book reader, a telehealth / telemedicine (remote healthcare / medical prescription) device, a vehicle or mobile transportation means with a communication function (automobile, airplane, ship, etc.), and combinations of the various devices described above.

[0174] The communication device is not limited to being portable or movable, and includes any type of device, apparatus, system that is not portable or is fixed, for example, a smart home device (home appliance, lighting device, smart meter or measuring device, control panel, etc.), a vending machine, and any "Thing" that can exist on the IoT (Internet of Things) network.

[0175] Communication includes data communication by a cellular system, a wireless LAN system, a communication satellite system, etc., as well as data communication by combinations thereof.

[0176] In addition, the communication device also includes devices such as a controller and a sensor that are connected or coupled to a communication device that executes the communication function described in the present disclosure. For example, a controller and a sensor that generate a control signal and a data signal used by the communication device that executes the communication function of the communication device are included.

[0177] In addition, the communication device includes infrastructure facilities, such as a base station, an access point, and any other device, device, and system, that communicate with or control the above-described various devices.

[0178] An encoding device according to an embodiment of the present disclosure includes a quantization circuit that generates quantization parameters including first information regarding a codebook of vector quantization and second information regarding a code vector included in the codebook, and a control circuit that controls encoding of the first information with respect to the sub-vector using a second number of bits based on a difference between a first number of bits that can be used for encoding the sub-vector in the vector quantization and a number of bits of the quantization parameters of the sub-vector.

[0179] In an embodiment of the present disclosure, the control circuit determines information obtained by encoding the second number of bits as encoded information.

[0180] In an 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 set as an upper limit value of the second number of bits.

[0181] In an 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 the upper limit value of the second number of bits set based on the first number of bits is deleted.

[0182] In an embodiment of the present disclosure, among the information obtained by encoding each of the candidates for the second number of bits, the number of bits of the information corresponding to the candidate with a higher occurrence probability is smaller.

[0183] In one embodiment of the present disclosure, when the number of the first bits is greater than a threshold, the control circuit determines the information obtained by encoding the number of the second bits as encoded information, and when the number of the first bits is less than or equal to the threshold, the control circuit determines the first information as encoded information.

[0184] In one embodiment of the present disclosure, in the Generic Coding (mode) of an Enhanced Voice Services (EVS) codec, the sub-vector is the sub-vector with the highest frequency (or the last in time) among a plurality of sub-vectors obtained by dividing the signal.

[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 the information obtained by encoding the number of the second bits as encoded information, and when the energy of the code vector is less than the threshold, the control circuit determines the first information as encoded information.

[0186] In one embodiment of the present disclosure, when the gain for the sub-vector is greater than or equal to a threshold, the control circuit determines the information obtained by encoding the number of the second bits as encoded information, and when the gain is less than the threshold, the control circuit determines the first information as encoded information.

[0187] In one embodiment of the present disclosure, the number of the second bits is a number obtained by subtracting the number of bits of the quantization parameter of the sub-vector from the remainder of 5 with respect to the number of the first bits.

[0188] A decoding apparatus according to one embodiment of the present disclosure includes a control circuit that controls decoding of the first information for the sub-vector using a number of second bits based on a difference between a number of first bits available for encoding the sub-vector in vector quantization and a number of bits of a quantization parameter including first information regarding a codebook of the sub-vector and second information regarding 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 an embodiment of the present disclosure, an encoding device generates quantization parameters including first information regarding a codebook of vector quantization and second information regarding code vectors included in the codebook, and controls encoding of the first information for the sub-vector using a second number of bits based on a difference between a first number of bits available for encoding the sub-vector in the vector quantization and a number of bits of the quantization parameters of the sub-vector.

[0190] In a decoding method according to an embodiment of the present disclosure, a decoding device controls decoding of the first information for the sub-vector using a second number of bits based on a difference between a first number of bits available for encoding the sub-vector in the vector quantization and a number of bits of quantization parameters including first information regarding a codebook of the sub-vector and second information regarding code vectors included in the codebook, and performs inverse vector quantization based on the first information.

[0191] The disclosure contents of the specification, drawings and abstract included in Japanese Patent Application No. 2020-105470 filed on June 18, 2020 are all incorporated herein by reference.

Industrial Applicability

[0192] An embodiment of the present disclosure is useful for an encoding system and the like.

Explanation of Signs

[0193] 51 CELP Encoding Unit 52 CELP Local Decoding Unit 53, 65 Adder 64 CELP Decoding Unit 71 LPC Analysis Unit 72 Quantization Unit 73, 84 Inverse Quantization Unit 74 LPC Inverse Filter Unit 85 LPC Synthesis Filter Unit 100, 100a, 100b Encoding Device 54, 75, 101 Time-Frequency Conversion Unit 102 Psychoacoustic model analysis unit 103 Split multi-rate lattice quantization unit 104 Codebook index value conversion unit 105 Multiplexing unit 121 Codebook index value separation unit 122, 221 Available bit number calculation unit 123 Unused bit number calculation unit 124 Unused bit number encoding unit 200, 200a, 200b Decoder 201 Separation unit 202 Codebook index value inverse conversion unit 203 Split multi-rate lattice inverse quantization unit 63, 83, 204 Frequency-time conversion unit 222 Unused bit number decoding unit 223 Restoration unit 224 Codebook index value generation unit

Claims

1. For each of N (N is an integer of 2 or more) sub-vectors obtained by dividing a signal in the frequency domain, a quantization circuit that generates quantization parameters including first information regarding a codebook for vector quantization and second information regarding code vectors included in the codebook; In a sub-vector at a previously specified position among the N sub-vectors, by subtracting the number of bits used for encoding N - 1 sub-vectors other than the sub-vector at the previously specified position from the total number of bits available for encoding the signal in the frequency domain, the number of available bits that can be used for encoding the sub-vector is calculated. When the number of available bits is less than or equal to a threshold value, the quantization parameter is encoded. When the number of available bits is greater than the threshold value, the number of unused bits is calculated based on the difference between the number of available bits for the sub-vector and the number of bits required for encoding the quantization parameter of the sub-vector, and a control circuit that controls the encoding of the quantization parameter so as to encode the number of unused bits; An encoding device comprising the above.

2. The number of unused bits is a number calculated based on a number obtained by subtracting the remainder of 5 with respect to the number of available bits from the number of available bits. The encoding device according to Claim 1.

3. The information encoding the number of unused bits is represented by a Huffman code with the number of available bits as the upper limit value of the number of unused bits. The encoding device according to Claim 1.

4. The information encoding the number of unused bits is represented by a Unary code, and 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 1.

5. Among the information encoding each candidate for the number of unused bits, the number of bits of the information corresponding to the candidate with a higher occurrence probability is smaller. The encoding device according to Claim 1.

6. The control circuit When the number of available bits is more than the threshold value, determines the information encoding the number of unused bits as the encoded information; When the number of available bits is less than or equal to the threshold value, determines the information encoding the first information as the encoded information. The encoding device according to Claim 1.

7. ​ In the Generic Coding (mode) of the Enhanced Voice Services (EVS) codec, when the signal to be vector quantized is a harmonic signal, the subvector at the pre-specified position is the subvector with the highest frequency or the last subvector in terms of time among the N subvectors. The encoding device according to claim 1.

8. The control circuit when the energy of the code vector for the subvector is equal to or greater than a threshold, determines the information obtained by encoding the number of unused bits as the encoded information; when the energy of the code vector is less than the threshold, determines the first information as the encoded information. The encoding device according to claim 1.

9. The control circuit when the gain for the subvector is equal to or greater than a threshold, determines the information obtained by encoding the number of unused bits as the encoded information; when the gain is less than the threshold, determines the first information as the encoded information. The encoding device according to claim 1.

10. The encoding device generates quantization parameters including first information regarding the codebook for vector quantization and second information regarding the code vectors included in the codebook for each of N (N is an integer greater than or equal to 2) subvectors obtained by dividing the signal in the frequency domain, in the subvector at a pre-specified position among the N subvectors, calculates the available number of bits for encoding the subvector by subtracting the number of bits used for encoding the N - 1 subvectors other than the subvector at the pre-specified position from the total number of bits available for encoding the signal in the frequency domain. When the available number of bits is less than or equal to a threshold, encodes the quantization parameters. When the available number of bits is greater than the threshold, calculates the number of unused bits based on the difference between the available number of bits for the subvector and the number of bits required for encoding the quantization parameters of the subvector, and controls the encoding of the quantization parameters to encode the number of unused bits. Encoding method.

11. The number of unused bits is a number calculated based on the number obtained by subtracting the remainder of the available number of bits divided by 5 from the available number of bits. The encoding method according to claim 10.

12. The information obtained by encoding the number of unused bits is represented by a Huffman code in which the number of available bits is set to the upper limit value of the number of unused bits. The encoding method according to claim 10.

13. The information obtained by encoding the number of unused bits is represented by a Unary code, and 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 method according to claim 10.

14. Among the information obtained by encoding each candidate of the number of unused bits, the number of bits of the information corresponding to the candidate with a higher occurrence probability is smaller. The encoding method according to claim 10.

15. When the number of available bits is more than the threshold value, the information obtained by encoding the number of unused bits is determined as the encoded information, and when the number of available bits is less than or equal to the threshold value, the information obtained by encoding the first information is determined as the encoded information. The encoding method according to claim 10.

16. In the Generic Coding (mode) of the Enhanced Voice Services (EVS) codec, when the signal to be vector quantized is a harmonic signal, the subvector at the pre-specified position is the subvector with the highest frequency or the last subvector in terms of time among the N subvectors. The encoding method according to claim 10.

17. When the energy of the code vector for the subvector is equal to or higher than the threshold value, the information obtained by encoding the number of unused bits is determined as the encoded information, and when the energy of the code vector is less than the threshold value, the first information is determined as the encoded information. The encoding method according to claim 10.

18. When the gain for the subvector is equal to or higher than the threshold value, the information obtained by encoding the number of unused bits is determined as the encoded information, and when the gain is less than the threshold value, the first information is determined as the encoded information. The encoding method according to claim 10.

Citation Information

Patent Citations

  • Audio and speech coding device, audio and speech decoding device, method for coding audio and speech, and method for decoding audio and speech

    US20150025879A1

  • 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