Decoding device and decoding method

By encoding the number of unused bits alongside the codebook index and vector index, the method addresses the inefficiency in multi-rate lattice vector quantization, reducing the number of encoded bits and simplifying the encoding process while maintaining information integrity.

JP2026099962APending Publication Date: 2026-06-18PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
Filing Date
2026-04-07
Publication Date
2026-06-18

AI Technical Summary

Technical Problem

Existing multi-rate lattice vector quantization methods face challenges in reducing the number of encoded bits, leading to increased complexity and inefficiency in encoding processes.

Method used

A method is introduced that involves encoding and decoding the number of unused bits in addition to the codebook index and code vector index for each subvector, allowing for the calculation of available bits and reducing the number of bits required for encoding by utilizing the difference in available bits across subvectors.

Benefits of technology

This approach effectively reduces the number of encoded bits, simplifies the encoding process, and maintains the integrity of the encoded information, thereby lowering the bitrate and reducing complexity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026099962000001_ABST
    Figure 2026099962000001_ABST
Patent Text Reader

Abstract

This reduces the number of encoded bits in vector quantization. [Solution] The decoding device comprises: a receiving unit that receives from an encoding device a bitstream encoding the quantization parameters for each of the N subvectors (where N is an integer of 2 or more) obtained by dividing a frequency domain signal, or a bitstream encoding the number of unused bits and the code vector index; a decoding unit that estimates the codebook index and code vector index of a specific subvector; and an inverse quantization unit that outputs the frequency domain signal before vector quantization for each of the N subvectors by performing inverse vector quantization, wherein the number of unused bits is calculated based on the number of available bits minus the remainder of 5 relative to the number of available bits.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This disclosure relates to an encoding device, a decoding device, an encoding method, and a decoding method. [Background technology]

[0002] One quantization method in audio or speech encoding (for example, encoding excitation signals) 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 split multi-rate lattice vector quantization). Split multi-rate lattice vector quantization may also be applied to, for example, algebraic vector quantization (AVQ). [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. [Overview of the Initiative] [Problems that the invention aims to solve]

[0005] However, there is room for consideration of methods to reduce the number of encoded bits in multirate lattice vector quantization.

[0006] Non-limiting embodiments of this disclosure contribute to providing an encoding device, a decoding device, an encoding method, and a decoding method that reduce the number of encoded bits in vector quantization. [Means for solving the problem]

[0007] A decoding device according to one embodiment of the present disclosure includes a receiving unit that receives from the encoding device a bitstream encoding quantization parameters for each of N subvectors (where N is an integer of 2 or more) obtained by dividing a frequency domain signal, the bitstream encoding the number of unused bits obtained by subtracting the number of bits required to encode the quantization parameters of the subvector from the number of available bits available for encoding the quantization parameters of the subvector, and the code vector index, for each of the subvectors from which the encoded quantization parameters have been received, and a receiving unit that receives a bitstream encoding the number of unused bits obtained by subtracting the number of bits required to encode the quantization parameters of the subvector from the number of available bits available for encoding the quantization parameters of the subvector, and the code vector index, and for each of the subvectors from which the encoded quantization parameters have been received, the codebook index and the code vector index are obtained by decoding the encoded quantization parameters, and for a specific subvector from which the encoded number of unused bits and the code vector index have been received, the encoded The system comprises: a decoding unit that decodes the number of unused bits and the code vector index to obtain the number of unused bits and the code vector index before encoding, calculates the number of available bits that can be used to encode the quantization parameters of the specific subvector by subtracting the sum of the number of bits used to encode the quantization parameters of each of the N subvectors other than the specific subvector from the total number of bits available to encode the frequency domain signal of the specific subvector, calculates the number of bits required to encode the quantization parameters of the specific subvector by subtracting the decoded number of unused bits from the calculated number of available bits, and estimates the codebook index and the code vector index of the specific subvector; and an inverse quantization unit that performs inverse vector quantization based on the codebook index and the code vector index of each of the N subvectors to output the frequency domain signal before vector quantization for each of the N subvectors, wherein the number of unused bits isIt is a number calculated based on the number obtained by subtracting the remainder of 5 with respect to the available number of bits from the available number of bits.

[0008] Note that these general or specific aspects may be implemented in a system, apparatus, method, integrated circuit, computer program, or recording medium, or may be implemented by 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 encoded 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 respectively provided by several embodiments and the features described in the specification and drawings, but not necessarily all are provided to obtain one or more identical features.

Brief Description of the Drawings

[0011] [Figure 1] Figure showing an example of a codebook list in split multi-rate lattice vector quantization [Figure 2] Block diagram showing a configuration example of an encoding device [Figure 3] Block diagram showing a configuration example of a codebook index value conversion unit [Figure 4] Figure showing an example of the correspondence between the number of unused bits and the encoded code for the number of unused bits [Figure 5] Block diagram showing a configuration example of a decoding device [Figure 6] Block diagram showing a configuration example of a codebook index value inverse conversion unit [Figure 7] Figure showing an example of the spectrum of an input signal [Figure 8] Figure showing an example of a codebook applied to a subvector [Figure 9]Block diagram showing other configuration examples of the encoding device. [Figure 10] Block diagram showing other configuration examples of the decoding device. [Figure 11] Block diagram showing other configuration examples of the encoding device. [Figure 12] Block diagram showing other configuration examples of the decoding device. [Figure 13] A diagram showing another example of the correspondence between the number of unused bits and the unused bit encoding code. [Figure 14] A diagram showing another example of the correspondence between the number of unused bits and the unused bit encoding code. [Figure 15] A diagram showing an example of the relationship between a codebook and its specified values. [Modes for carrying out the invention]

[0012] Embodiments of this disclosure will be described in detail below with reference to the drawings.

[0013] For example, in split multirate lattice vector quantization, a signal in the frequency domain (or spectral domain) is divided into multiple sub-vectors (SV: sub-vector, also called subbands), and multirate lattice vector quantization may be performed on each of these divided sub-vectors.

[0014] Figure 1 shows an example of a list of codebooks (or codebooks) for multirate lattice vector quantization of subvectors (see, for example, Patent Document 1 or Non-Patent Document 1).

[0015] For example, the quantization parameters in split multirate lattice vector quantization may include information that identifies the codebook used for quantization (e.g., called a "codebook indicator" or codebook index), as shown in Figure 1, and information that identifies a selected code vector from among multiple code vectors contained in the codebook (e.g., called a "code vector index").

[0016] For example, in each of the codebooks Q0, Q2, Q3, Q4, Q5, ..., Qn shown in Figure 1, 1, 10, 15, 20, 25, ..., 5n bits (where n is an integer greater than or equal to 2) may be used to encode (or quantize) one subvector (SV). Of the total number of bits used for encoding with each codebook (e.g., the total number of bits used), 1, 2, 3, 4, 5, ..., n bits (where n is an integer greater than or equal to 2) may be used for the codebook instruction value. In other words, in Figure 1, the proportion of bits allocated to encoding the codebook instruction value out of the total number of bits used for encoding with each codebook (e.g., 5n) may be 1 / 5.

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

[0018] For example, an encoder may encode multiple subvectors (e.g., eight SVs in Non-Patent Document 1) together using the codebook shown in Figure 1. The number of bits available for encoding multiple 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 multirate lattice vector quantization for eight SVs. For example, based on the number of bits used for seven of the eight SVs, the codebook index used for the remaining SV may be estimated according to the following equation (1) (see, for example, Patent Document 1).

number

[0020] In equation (1), cb'fix represents an estimate of the number of bits used in the codebook-indicated value for one SV (e.g., sub-vector number i=Pfix), and Bits available This indicates the total number of bits available for encoding the 8 SVs, ΣBits cbvi This represents the total number of bits used for encoding the seven other sub-vectors vi (i≠Pfix) that are different from sub-vector number i=Pfix (e.g., the total number of bits used in Figure 1).

[0021] In Patent Document 1, the encoding device quantizes (or encodes) the difference between the estimated number of bits used in the codebook instruction value shown in equation (1) and the actual number of bits in the codebook instruction value for a single SV (e.g., i=Pfix), and transmits the difference information to the decoding device. For example, the larger the codebook number n used for a single SV, the less information (e.g., number of bits) in the difference information described above will be than the codebook instruction value, and the number of encoded bits can be reduced.

[0022] However, in Patent Document 1, for example, there are cases where the difference information (in other words, the data to be encoded) is a negative number (for example, -1), and since a quantization level or code corresponding to the negative number is used, the complexity of encoding (or quantization) may increase.

[0023] Furthermore, if a single identified 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 encoded bits may not be reduced.

[0024] Here, a special case is, for example, a case where, of the total number of bits available for encoding, there are no bits that are not used for encoding, and all bits are used for encoding. In this case, for example, in Figure 1, the trailing "0" (also called a stop bit) of the multiple bits that indicate the codebook indication value of each codebook may be omitted. For example, in the special case, the codebook indication value of codebook Q2 may be "1" (1 bit) by omitting the "0" from "10".

[0025] Furthermore, if we focus on reducing the number of bits used for encoding in SVs (Subscripts) that have a larger number of bits used for encoding, for example, there is a possibility that the number of encoded bits will not be reduced if an SV occurs that has 0 bits used for encoding. Note that SVs that have 0 bits used for encoding tend to be high-frequency SVs among multiple SVs (for example, the 6th, 7th, or 8th SV out of 8 SVs).

[0026] Therefore, in one embodiment of this disclosure, a method for reducing the number of encoding bits used to encode (in other words, variable-length encoding) the codebook indication values ​​of multirate lattice vector quantization (LVQ) applied to split vector quantization (e.g., SVQ) is described.

[0027] In the following section, we will explain, as an example, the case where conversion coding is applied to the coding scheme.

[0028] [Example of encoding device configuration] Figure 2 is a block diagram showing an example configuration of an encoding device 100 according to one embodiment of the present disclosure. The encoding device 100 shown in Figure 1 may include, for example, a time-frequency conversion unit 101, a psychoacoustic model analysis unit 102, a split multirate lattice vector quantization (VQ) unit 103 (corresponding to, for example, a quantization circuit), a codebook instruction value conversion unit 104 (corresponding to, for example, a control circuit), and a multiplexing unit 105.

[0029] The time-frequency conversion unit 101 may convert a time-domain input signal S(n) to a frequency-domain input signal (also called spectral coefficients) S(f) using a time-frequency conversion method such as the Discrete Fourier Transform (DFT) or the Modified Discrete Cosine Transform (MDCT). The time-frequency conversion unit 101 may output the frequency-domain input signal S(f) to the psychoacoustic model analysis unit 102 and the split multirate grid VQ unit 103.

[0030] The psychoacoustic model analysis unit 102 may, for example, perform psychoacoustic model analysis on the frequency domain input signal S(f) input from the time-frequency conversion unit 101 and obtain a masking curve. The psychoacoustic model analysis unit 102 may, for example, output information regarding the obtained masking curve to the split multirate grid VQ unit 103.

[0031] The split multirate grid VQ unit 103 may, for example, perform split multirate grid quantization on a frequency domain input signal S(f) input from the time-frequency conversion unit 101. For example, the split multirate grid 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 quantization parameters that include a codebook indicator value indicating a codebook, and a code vector index indicating one of the plurality of code vectors contained in the codebook.

[0032] Furthermore, for example, the split multirate grid VQ section 103 may apply the split multirate grid VQ to the frequency domain input signal S(f) according to the information on the masking curve input from the psychoacoustic model analysis section 102. This can, for example, make the quantization noise in the split multirate grid VQ inaudible.

[0033] The split multirate grid VQ unit 103 may output, for example, the global gain and code vector index, which are among the quantization parameters obtained by quantization, to the multiplexing unit 105. The split multirate grid VQ unit 103 may also output, for example, information regarding the codebook indicator value and code vector index, which are among the quantization parameters, to the codebook indicator value conversion unit 104. Furthermore, the split multirate grid VQ unit 103 may output, for example, the number of bits (e.g., Bits) available for encoding the input signal S(f). available Information regarding ) may be output to the codebook instruction value conversion unit 104.

[0034] The codebook instruction value conversion unit 104 may, for example, convert the encoded information (or encoded code) of the codebook instruction value based on the information input from the split multirate grid VQ unit 103.

[0035] For example, the codebook instruction value conversion unit 104 may perform the following steps 1 to 3 based on the codebook instruction values ​​of each of the multiple sub-vectors input from the split multirate grid VQ unit 103.

[0036] (Step 1) The codebook instruction value conversion unit 104 sets the codebook instruction values ​​of other subvectors (e.g., N-1 subvectors) that are different from the subvector at a predetermined position among a plurality of (e.g., N) codebook instruction values ​​as codes (or encoded codes). The codebook instruction value conversion unit 104 may then calculate, for example, the sum of the number of bits used in the codebook instruction values ​​and the number of bits used in the code vector index for the N-1 subvectors.

[0037] (Step 2) The codebook instruction value conversion unit 104 may, for example, calculate the number of bits available for the codebook instruction value of a sub-vector at a predetermined position. For example, the codebook instruction value conversion unit 104 may calculate the total number of bits available for encoding the input signal S(f) (Bits available Alternatively, the number of bits available for encoding the codebook reference value of a predetermined subvector may be calculated by subtracting the sum of the number of bits used to encode the N-1 subvectors calculated in (Step 1) from the above.

[0038] (Step 3) The codebook instruction value conversion unit 104 may, for example, calculate the number of bits that are not used for encoding (for example, called the number of unused bits) from the number of bits available for encoding the sub-vector at a predetermined position calculated in (step 2), and encode the number of unused bits. For example, the codebook instruction value conversion unit 104 may calculate the number of unused bits by subtracting the sum of the number of bits used for the codebook instruction value of the sub-vector at a 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 conversion unit 104 may output, for example, the codebook instruction value (encoded code) obtained by (step 1) to (step 3) and the unused bit number encoding code to the multiplexing unit 105.

[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 multirate grid VQ unit 103 with the codebook instruction value (encoded code) and unused bit number encoding code input from the codebook instruction value conversion unit 104, and transmit the multiplexed bitstream 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] Figure 3 is a block diagram showing an example configuration of the codebook instruction value conversion unit 104. The codebook instruction value conversion unit 104 shown in Figure 3 may include, for example, a codebook instruction value separation unit 121, a usable 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 instruction values ​​cbvi (i=1 to N) of the N subvectors output from the split multirate grid VQ unit 103 may be input to the codebook instruction value separation unit 121.

[0045] The codebook instruction value separation unit 121 outputs the codebook instruction value cbfixx (or cbvi(i=Pfix)) of a subvector at a predetermined position (e.g., i=Pfix) based on the N codebook instruction values ​​cbvi input to the unused bit count calculation unit 123. The codebook instruction value separation unit 121 also outputs the codebook instruction values ​​cbvi(i≠Pfix) of N-1 subvectors at positions different from the predetermined positions to the usable bit count calculation unit 122, and may also output them to the multiplexing unit 105 as codebook instruction 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 a subvector at a previously specified position (corresponding to step 2 above). For example, the available bit number calculation unit 122 may calculate the number of bits Bits available input. From this, by subtracting the number of bits used for encoding N - 1 subvectors calculated using N - 1 codebook index values (cbvi (i ≠ Pfix)), the number of bits available for encoding the subvector at the previously specified position may be calculated. 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] Thus, the available bit number calculation unit 122, for example, as shown in formula (2), from the total number of bits Bits available subtracts the number of bits used for encoding N - 1 subvectors (for example, ΣBits cbvi (i ≠ Pfix)) to calculate the available bit number cb'fix for encoding the subvector at the previously specified position.

[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 calculation unit 123 may calculate the number of bits used to encode the sub-vector at a predetermined location (for example, the number of bits used to encode the codebook instruction value and the code vector index) based on the number of bits used in the codebook instruction value of the sub-vector at a predetermined location (actual value cbfix) input from the codebook instruction value separation unit 121. The unused bit calculation unit 123 may then calculate the number of unused bits by subtracting the number of bits used to encode the sub-vector at a predetermined location from the number of available bits input from the available bit calculation unit 122. The unused bit calculation unit 123 may then output information regarding the calculated number of unused bits to the unused bit encoding unit 124.

[0051] The unused bit encoding unit 124 may, for example, encode the unused bit count input from the unused bit calculation unit 123 to generate an unused bit encoding code (or encoding information). For example, the unused bit encoding unit 124 may generate an unused bit information encoding code from the unused bit count based on the association between the unused bit count and the unused bit encoding code (or code) shown in Figure 4 (for example, this may be represented in a table). The unused bit encoding unit 124 may, for example, output the unused bit encoding code to the multiplexing unit 105.

[0052] Here, as shown in Figure 4, the number of unused bits is a non-negative integer. Also, in Figure 4, there are 5 candidate numbers of unused bits (in other words, quantization resolutions) that can be assigned to a single code. In other words, in Figure 4, the same code is assigned to 5 integers among the unused bits. This is because, for example, as shown in Figure 1, when the number of bits used in the codebook instruction value is 2 or more, the number of bits used in the codebook instruction 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 combines both the codebook instruction value and the code vector index, changes in units of 5.

[0053] Furthermore, the unused bit encoding unit 124 may modify the codeword with the maximum number of unused bits using, for example, the number of available bits input from the available bit calculation unit 122. For example, if the number of available bits is 23 bits, the maximum number of unused bits that can take place is 22 bits (for example, when codebook Q0 is used), and in the example in Figure 4, that codeword is 11110 (5 bits). The unused bit encoding unit 124 may, for example, change (or modify) this codeword 11110 to 1111 (4 bits). This is because, when the number of available bits is 23 bits, there can be no codeword corresponding to 25 bits or more of unused bits, so when the upper 4 bits of the codeword are "1111" (in other words, regardless of the least significant bit of the codeword), it is determined that the number of unused bits is between 20 and 24 bits. This makes it possible to reduce the number of encoded bits by 1 bit when the number of unused bits is at its maximum.

[0054] [Example of a decoding device configuration] Figure 5 is a block diagram showing an example configuration of a decoding device 200 according to one embodiment of the present disclosure. The decoding device 200 shown in Figure 5 may include, for example, a separation unit 201, a codebook instruction value inverse conversion unit 202 (corresponding to, for example, a control circuit), a split multirate lattice inverse quantization (inverse VQ) unit 203 (corresponding to, for example, an inverse quantization circuit), and a frequency-time conversion unit 204.

[0055] In the decoding device 200, the bitstream transmitted from the encoding device 100 is input to the separation unit 201.

[0056] The separation unit 201 may, for example, separate the global gain, the code vector index, the codebook instruction value (encoded code), and the unused bit count information encoded code from the input bitstream. The separation unit 201 may, for example, output the global gain and the code vector index to the split multirate grid inverse VQ unit 203, and output the codebook instruction value (encoded code) and the unused bit count information encoded code to the codebook instruction value inverse conversion unit 202.

[0057] The codebook indicator inverse conversion unit 202 may, for example, calculate the codebook indicator value of a subvector at a predetermined position (e.g., i=Pfix) based on the information input from the separation unit 201.

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

[0059] (Step 4) The codebook indicator inverse conversion unit 202, for example, decodes the codebook indicator values ​​of other sub-vectors that are different from a predetermined position (e.g., i=Pfix) based on the codebook indicator values ​​(encoded codes). The codebook indicator inverse conversion unit 202 may also calculate, for example, the number of bits used to encode multiple sub-vectors (e.g., i≠Pfix) based on the decoded codebook indicator values ​​(e.g., the sum of the number of bits used in the codebook indicator values ​​and the number of bits used in the code vectors).

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

[0061] (Step 6) The codebook inverse conversion unit 202 may, for example, calculate the number of encoded bits of a sub-vector at a predetermined position based on the number of encoded bits of the multiple sub-vectors calculated in (step 4) and the number of unused bits decoded in (step 5).

[0062] (Step 7) The codebook indicator value inverse conversion unit 202 may calculate (or decode) the codebook indicator value of the subvector at a predetermined location based, for example, on the number of encoded bits of the subvector at the predetermined location calculated in (step 6).

[0063] The codebook indicator value inverse conversion unit 202 may, for example, output the codebook indicator value obtained by (step 4) to (step 7) to the split multirate grid 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 multirate inverse grid VQ unit 203 performs split multirate inverse grid VQ based, for example, the global gain and code vector index input from the separation unit 201 and the output codebook indicator input from the codebook indicator inverse conversion unit 202, to obtain a frequency domain decoded signal S~(f). The split multirate inverse grid 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 multirate grid inverse VQ unit 203 into a time domain signal S~(n) using a frequency-time conversion method such as the inverse discrete Fourier transform (IDFT) or the inverse modified discrete cosine transform (IMDCT).

[0067] Next, we will explain an example of the operation of the codebook instruction value inverse conversion unit 202.

[0068] Figure 6 is a block diagram showing an example configuration of the codebook instruction value inverse conversion unit 202. The codebook instruction value inverse conversion unit 202 shown in Figure 6 may include, for example, a usable 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 instruction value (encoded code) output from the separation unit 201 may be input to the usable bit count calculation unit 221 and the codebook instruction value generation unit 224. Also, for example, the unused bit count encoding code output from the separation unit 201 may be input to the unused bit count decoding unit 222.

[0070] The input codebook reference value (encoded code) may represent, for example, the codebook reference values ​​cbvi (i≠Pfix) of N-1 subvectors that are different from the subvector at a specific position (e.g., i=Pfix).

[0071] The available bit calculation unit 221 may, for example, calculate the number of bits available for encoding a sub-vector at a predetermined position. For example, the available bit calculation unit 221 calculates the number of bits used for encoding N-1 sub-vectors using N-1 codebook indicator values ​​(cbvi(i≠Pfix)) (corresponding to step 4 above), and the number of bits input is Bits available The number of bits available for encoding the subvector at a predetermined position, cb'fix, can be calculated by subtracting the number of bits used to encode N-1 subvectors. The available bits calculation unit 221 may output the calculated available bits to the restoration unit 223.

[0072] The unused bit decoding unit 222 may, for example, decode the unused bit encoding code input from the separation unit 201. For example, the unused bit decoding unit 222 may determine the number of unused bits from the unused bit encoding code based on the association between the number of unused bits and the unused bit encoding code (e.g., a code) shown in Figure 4 (corresponding to step 5 above). The unused bit decoding unit 222 may, for example, output information regarding the determined number of unused bits to the restoration unit 223.

[0073] The restoration unit 223 may determine (or restore) the codebook instruction value of a sub-vector at a predetermined location based, for example, on the number of available bits input from the available bit calculation unit 221 and the number of unused bits input from the unused bit decoding unit 222. For example, the restoration unit 223 may calculate the number of bits used to encode the sub-vector at a predetermined location (for example, the total number of bits used shown in Figure 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 in the codebook instruction value based on the calculated number of bits (for example, the total number of bits used) and output an encoded code indicating the codebook instruction value to the codebook instruction value generation unit 224 (corresponding to steps 6 and 7 above).

[0074] The codebook instruction value generation unit 224 may, for example, generate N codebook instruction values ​​cbvi(i=1~N) based on the N-1 subvector codebook instruction values ​​cbvi(i≠Pfix) input from the separation unit 201 and the codebook instruction values ​​cbvi(i=Pfix) of the subvectors at predetermined positions input from the reconstruction unit 223, such that the codebook instruction value cbvi with i=Pfix is ​​placed at the predetermined position. The codebook instruction value generation unit 224 may output the generated codebook instruction values ​​to the split multirate grid inverse VQ unit 203.

[0075] [Example of converting codebook values] Next, an example of the operation of the codebook instruction value conversion unit 104 of the encoding device 100 will be described.

[0076] Figure 7 shows an example of an input signal S(f) in the frequency domain. In Figure 7, for example, the input signal S(f) may be divided into eight subvectors v1 to v8.

[0077] Furthermore, in Figure 7, as an example, v8 is defined as the position (i=Pfix) of a pre-specified sub-vector in the input signal S(f).

[0078] Figure 8 shows an example of codebook indication values ​​(or codebooks) for each of the subvectors v1 to v8 obtained by split multirate lattice quantization.

[0079] In the examples shown in Figures 7 and 8, the codebook instruction value conversion unit 104 outputs, for example, the codebook instruction value separation unit 121 to the unused bit count calculation unit 123 the codebook instruction value of sub-vector v8 (for example, the 5 bits of "11110"). The codebook instruction value separation unit 121 may also output, for example, the codebook instruction values ​​of sub-vectors v1 to v7 that are different from sub-vector v8 (for example, "10", "10", "110", "110", "1110", "1110", "11110") as code codes to the multiplexing unit 105.

[0080] The available bit calculation unit 122 may, for example, calculate the number of bits available for encoding the sub-vector v8. For example, the total number of bits available in the transmission unit of the input signal (Bits in equation (2)) available ) is set to 144 bits. In this case, the usable bit calculation unit 122 calculates, for example, the number of bits used per subvector v1 to v7 that are different from subvector v8 (total number of bits used. For example, the Bits in equation (2) cbvi The sum of the values ​​of the values ​​is calculated. The usable bit number calculation unit 122 may then calculate the usable bit number cb'fix = (144 - 10 - 10 - 15 - 15 - 20 - 20 - 25) = 29 according to equation (2).

[0081] The unused bit calculation unit 123 may, for example, calculate the unused bit count (in this case, 29-25=4 bits) by subtracting the 25 bits used for encoding the subvector v8 from the available bit count cb'fix=29 bits.

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

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

[0084] As described above, in the example shown in Figure 7, the codebook number applied to sub-vector v8 is 5 (Q5), and the number of bits used when encoding the codebook instruction value of codebook Q5 itself is 5 bits. On the other hand, in one embodiment of this disclosure, the number of bits of the unused bit encoding code transmitted instead of the codebook instruction value for sub-vector v8 is 1 bit, as described above. Therefore, in the example shown in Figure 7, the notification of the unused bit encoding code reduces the number of encoded bits by 4 bits compared to the case where the codebook instruction value of sub-vector 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 the codebook instruction value can be restored in the decoding device 200.

[0085] Thus, the encoding device 100 and the decoding device 200 control the encoding or decoding of the codebook instruction value for a subvector, for example, using the number of unused bits based on the difference between the number of bits available for encoding a subvector in vector quantization (e.g., split multirate lattice VQ) and the number of bits in the quantization parameters of the subvector (e.g., the codebook instruction value and the code vector).

[0086] For example, the encoding device 100 converts the codebook instruction value used to encode a specific sub-vector from the spectrum of the input signal, which has been divided into multiple sub-vectors, into information about the number of unused bits. Similarly, the decoding device 200 uses the code code for the number of unused bits transmitted from the encoding device 100 to convert the information about the number of unused bits into information about the codebook instruction value.

[0087] This conversion can improve the efficiency of encoding the codebook indication value (or codebook index) of a specific subvector in lattice vector quantization (LVQ), for example, in split vector quantization (SVQ). According to this embodiment, the number of bits used for the codebook indication value used to encode a particular subvector can be reduced, thereby lowering the bitrate.

[0088] Furthermore, as mentioned above, in a method of encoding the difference information between the estimated value and the actual value of the codebook indication, such as in Patent Document 1, there are cases where the difference information to be encoded can be -1. For example, if the number of bits available for encoding a particular subvector is 9 bits, the estimated codebook indication in Patent Document 1 may be 0 (Q0), while the actual codebook indication may be 1 (Q1). This can increase the complexity of the encoding process, such as setting associations that include a quantization level or sign corresponding to -1 (a negative number). On the other hand, in one embodiment of this disclosure, for example, the number of unused bits in the number of bits including both the codebook indication and the code vector index is encoded, so the minimum value of the number of unused bits to be encoded is 0, and there is no need to consider encoding negative numbers, thus simplifying the encoding process.

[0089] In the embodiments described above, a case in which transform coding is applied to the coding scheme was explained as an example, but the coding scheme is not limited to transform coding. For example, one embodiment of this disclosure may be applied to coding that quantizes each of the multiple subvectors obtained by dividing a frequency domain signal (spectrum).

[0090] In this embodiment, the total number of bits available for encoding is input to the available bit calculation units 122 and 221. This total number of available bits is not information input from outside the encoder (e.g., encoding device 100) or decoder (e.g., decoding device 200), but may also be information held internally within the encoder or decoder. The total number of available bits may be, for example, a predetermined fixed value. Alternatively, a predetermined fixed value may be used as the initial value, and the number of unused bits may be added to the initial value to obtain the total number of available bits, which may then be input for the subsequent split multirate grid VQ.

[0091] [Application of CELP (Code Excited Linear Prediction) and transform coding to hierarchical coding] For example, the split multirate grid VQ according to this embodiment may be applied to hierarchical coding of CELP and transform coding. Figure 9 is a block diagram showing an example configuration of the coding device 100a when the split multirate grid VQ is applied to hierarchical coding of CELP and transform coding. Figure 10 is a block diagram showing an example configuration of the decoding device 200a when the split multirate grid VQ is applied to hierarchical coding of CELP and transform coding.

[0092] In Figures 9 and 10, components that perform the same processing as the encoding device 100 and the decoding device 200 are denoted by the same reference numerals.

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

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

[0095] The adder 53, for example, converts the input signal S(n) into a combined signal S syn By subtracting (n), the prediction error signal S is obtained. e Generate (n).

[0096] The time-frequency conversion unit 54 receives the time-domain coded error signal S. e (n) is encoded into a frequency domain coding error signal S by a time-frequency conversion scheme such as DFT or MDCT. e Convert to (f).

[0097] Frequency domain coding error signal S e(f) may be quantized by the split multirate grid VQ unit 103 and the codebook indicator value conversion unit 104 as described above. For example, the encoding device 100a encodes the encoding error signal S e In addition to the codebook instruction value (encoded code) of a particular subvector among the multiple subvectors obtained by dividing (f), the unused bit number encoding code may be sent to the decoding device 200a.

[0098] In the decoding device 200a shown in Figure 10, the separation unit 201 separates the bitstream transmitted from the encoding device 100a into CELP parameters and quantization parameters, outputs the CELP parameters to the CELP decoding unit 64, outputs the global gain and code vector index of the quantization parameters to the split multirate lattice inverse VQ unit 203, and outputs the codebook instruction value (encoded code) and unused bit number encoding code of the quantization parameters to the codebook instruction value inverse conversion unit 202.

[0099] The codebook indicator value inverse conversion unit 202, for example, as described above, converts the encoding error signal S based on the codebook indicator value (encoded code) and the unused bit number encoding code. e The codebook instruction values ​​for the subvectors at specific positions in (f) are determined, and information regarding the codebook instruction values ​​of N subvectors is output to the split multirate grid inverse VQ unit 203.

[0100] The split multirate grid inverse VQ section 203 generates a frequency domain coding error signal S based, for example, on global gain, codebook indicated value, and code vector index. e Decode (or dequantize) ~(f).

[0101] The frequency-time conversion unit 63, for example, converts the decoded frequency domain coding error signal S e ~(f) is converted into a time-domain coded error signal S using a frequency-time conversion scheme such as IDFT or IMDCT. e Convert to ~(n).

[0102] The CELP decoding unit 64, for example, decodes the CELP parameters to produce the synthesized signal S syn We obtain (n).

[0103] The adder 65, for example, processes the encoded error signal S e ~(n) and the combined signal S syn (n) is added to obtain the time-domain signal S~(n).

[0104] [Application to TCX (Transform Coded eXcitation) encoding] For example, the split multirate grid VQ according to this embodiment may be applied to TCX encoding (or referred to as a TCX codec). Figure 11 is a block diagram showing an example configuration of the encoding device 100b in this case, and Figure 12 is a block diagram showing an example configuration of the decoding device 200b.

[0105] In Figures 11 and 12, components that perform the same processing as the encoding device 100 and the decoding device 200 are denoted by the same reference numerals.

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

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

[0108] The inverse quantization unit 73, for example, inverse quantization of the quantization index 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 recovered LPC parameters input from the inverse quantization unit 73, for example, thereby generating a time-domain residual signal S r We obtain (n).

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

[0111] Frequency domain residual signal S r (f) may be quantized by the split multirate grid VQ unit 103 and the codebook indicator value conversion unit 104 as described above. For example, the encoding device 100b uses the residual signal S r In addition to the codebook instruction value (encoded code) of a particular subvector among the multiple subvectors obtained by dividing (f), the unused bit number encoding code may be sent to the decoder 200b.

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

[0113] The codebook indicator value inverse conversion unit 202, for example, as described above, converts the residual signal S based on the codebook indicator value (encoded code) and the unused bit number encoding code. r The codebook instruction values ​​for the subvectors at specific positions in (f) are determined, and information regarding the codebook instruction values ​​of N subvectors is output to the split multirate grid inverse VQ unit 203.

[0114] The split multirate grid inverse VQ section 203 generates the frequency domain residual signal S based, for example, on the global gain, the codebook indicated value, and the code vector index. r Decode (or dequantize) ~(f).

[0115] The frequency-time conversion unit 83, for example, processes the decoded frequency domain residual signal S r ~(f) is converted to a time-domain residual signal S using a frequency-time conversion method such as IDFT or IMDCT. r Convert to ~(n).

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

[0117] The LPC synthesis filter section 85 processes, for example, the time-domain residual signal S. r For ~(n), LPC synthesis filtering using the recovered LPC parameters is applied to obtain the time-domain signal S~(n).

[0118] The above explains the application of split multirate grid 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. An example of such TCX coding is the MDCT-based TCX of the EVS codec.

[0120] [An example of a sub-vector at a specific location] Let's describe an example of a sub-vector at the specific location mentioned above.

[0121] Split multirate grid VQ may be applied to speech acoustic encoding and decoding processes, such as the EVS (Enhanced Voice Services) codec described in Non-Patent Document 1.

[0122] For example, the split multirate lattice VQ may be applied to the algebraic vector quantizer (AVQ) described in Non-Patent Document 1.

[0123] For example, in the EVS codec, AVQ is applied to various encoding modes. For instance, in 32kbit / s Generic Coding (GC) mode, if the encoded frame is classified as a harmonic signal, the number of encoded bits in the codebook indication value in the split multirate grid VQ is likely to be higher for higher frequency sub-vectors (e.g., sub-vector v8 in Figure 7).

[0124] This is because GC mode encoding for harmonic signals is likely to occur at the rising edge of vowels, the expressiveness of harmonics by adaptive codebooks is likely to degrade at higher frequency bands, or harmonic deviations are more likely to occur at higher frequency bands, leading to larger encoding errors in adaptive codebooks. For this reason, in encoding frequency domain signals (e.g., prediction error or residual signal spectrum), higher-frequency subvectors have greater signal energy, and codebooks with a larger number of bits used for quantization are more likely to be selected.

[0125] Therefore, for example, if a frequency domain signal is divided into eight subvectors v1 to v8 as described above, a larger number of bits are likely to be allocated to encoding the subvector v8 with the highest frequency band in the frequency domain among the multiple subvectors v1 to v8. For this reason, as described above, the encoding device 100 and the decoding device 200 may set subvector v8 to a subvector 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, the sub-vector with the highest frequency among the multiple sub-vectors that make up the input signal may be set as one sub-vector for encoding the unused bits. This improves the effect of reducing the number of encoded bits when applying split multirate lattice VQ to AVQ for GC encoding.

[0127] In GC mode, if the input signal is not harmonic, split multirate grid VQ may be applied to the time-domain signal depending on the EVS encoding bitrate. Even in this case, it is effective to set the last sub-vector (in other words, the sub-vector that is furthest back in time) to a predetermined sub-vector position. This is because it has been experimentally confirmed that in such cases, the number of bits used to encode the unused bits tends to be less than the number of bits used to encode the codebook indicated value. In other words, in frames classified as GC mode, the number of bits remaining unused when the last sub-vector is quantized is often small, so encoding the unused bits tends to improve encoding efficiency.

[0128] [Methods for reducing the number of encoded bits] Next, we will describe an example of how to reduce the number of encoding bits for a sub-vector at a specific location.

[0129] <Method 1> For example, if the number of bits used to encode a subvector at a particular location (e.g., subvector v8) is small (e.g., codebook Q0 or Q2) and the number of unused bits is large (e.g., above a threshold of 15 bits), then the number of bits used to encode the 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 specific position (cb'fix) is 9 bits or less, the codebook available for the subvector at that position (e.g., subvector v8) is codebook Q0 (codebook indication value is 1 bit of "0"), or in the special case, codebook Q2 (codebook indication value is 1 bit of "1").

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

[0132] Therefore, if the number of bits available for a sub-vector at a particular 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 sub-vector at a particular position as the code code (or encoding information) without applying the method according to one embodiment of the present disclosure (for example, the method of encoding the number of unused bits).

[0133] On the other hand, if the encoding device 100 has more than a threshold number of bits available for a sub-vector at a particular position (for example, more than 9 bits), it may determine the encoded code to be the encoded information by encoding the number of unused bits.

[0134] Method 1 can suppress the increase in the number of encoded bits and improve encoding efficiency, regardless of the number of bits available for the sub-vector at a particular position.

[0135] Furthermore, as mentioned above, the number of bits available for a sub-vector at a specific position is information that can be calculated by the decoder 200 from other parameters (e.g., the total number of bits and the codebook indication values ​​of other sub-vectors), so there is no need to provide signaling for switching the encoding method related to Method 1 (e.g., additional information to notify of the switch).

[0136] <Method 2> For example, if the number of available bits (cb'fix) is between 11 and 13 bits, the available codebook for a subvector at a specific position (e.g., subvector v8) is either codebook Q0 (e.g., total number of used bits: 1 bit) or codebook Q2 (e.g., total number of used bits: 10 bits). Here, for example, if codebook Q0 is used (e.g., total number of used bits: 1 bit), the number of unused bits will be between 10 and 12 bits, so in the example shown in Figure 4, the number of encoded bits for the unused bits will be 3 bits. Therefore, the number of bits increases by 2 bits compared to encoding the codebook indication value directly (e.g., 1 bit).

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

[0138] The number of bits that are clearly unused from the available bits can be calculated, for example, as the remainder of 5 relative to the available bits. For example, if 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 relative to a (also called modulo arithmetic). The divisor b (here, b=5) can be a value determined based on the ratio of the number of bits used in the codebook instruction value to the total number of bits used in the encoding of the subvector (or the unit of change in the total number of bits used).

[0139] Information regarding the number of bits that are clearly unused does not need to be transmitted from the encoding device 100 to the decoding device 200 as encoded information. Therefore, the encoding device 100 may calculate the number of unused bits by subtracting the remainder of 5 (in other words, the number of bits that are clearly unused) from the number of available bits (cb'fix).

[0140] For example, if the number of available bits is between 11 and 13 bits, the remainder of 5 relative to the number of available bits is between 1 and 3 bits, so the subtraction result is 10 bits. The encoding device 100 may, for example, set the 10 bits of the subtraction result as available bits. For example, if the encoding device 100 uses codebook Q0 (1 bit) for 10 available bits, the number of unused bits becomes 9 bits, so in the example shown in Figure 4, it is encoded into a 2-bit unused bit encoding code.

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

[0142] <Method 3> For example, if the number of available bits (cb'fix) is 10 bits, the number of unused bits will not exceed 10 bits (in other words, it will be 9 bits or less), so in the example shown in Figure 4, the "0" in the code "10" corresponding to unused bits 5 to 9 does not need to be present. In other words, in this case, it is sufficient to distinguish between unused bits 0 to 4 (code "0") and 5 to 9 (code "1"). This type of encoding allows for a further reduction of 1 bit in the number of bits used for the code of unused bits, thereby suppressing an increase in the total number of bits.

[0143] Furthermore, when using this type of encoding, the increase in the number of bits can be suppressed even when the number of available bits is 9 bits or less. For this reason, for example, even when the number of available bits is 9 bits or less, the encoding device 100 does not need to switch to the method of setting the codebook instruction value directly as the code code, as described in Method 1.

[0144] <Method 4> For example, if the number of available bits (cb'fix) is 8 bits or less, in the example shown in Figure 1, there is no possibility that the codebook instruction value will be anything other than "0" (Q0). In this case, the decoding device 200 can determine the codebook instruction value Q0 even if no information regarding the codebook instruction value is transmitted.

[0145] Therefore, in both the method of encoding the codebook instruction value directly and the method of encoding the number of unused bits, if the number of available bits is 8 bits or less, the encoding and decoding processes may be performed without transmitting or receiving information about the codebook instruction value of codebook Q0. This makes it possible to reduce the encoded information by 1 bit.

[0146] <Method 5> For example, if the number of available bits (cb'fix) is 14 bits, the codebooks available for a sub-vector at a specific position in the example shown in Figure 1 are codebooks 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 as "11" (2 bits) instead of "110", and combined with the number of bits used in the code vector (12 bits), it can be encoded with 14 bits.

[0147] Thus, since Codebook Q3 can be used even when the number of available bits is 14, when the number of available bits is 14, the 4 bits that are the remainder of 5 in Method 2 may not be a number of bits that are left over.

[0148] Therefore, for example, if the number of available bits is 13 bits or less, it is possible to suppress an increase of 2 bits or more in the number of encoded bits based on at least one of the above-mentioned methods 1 to 4. On the other hand, if the number of available bits is 14 bits or more, the number of encoded bits may increase or decrease depending on the number of unused bits.

[0149] Furthermore, in multimode coding such as the EVS codec, it is assumed that it is rare for the majority of available bits to be unused (for example, when the number of unused bits exceeds a threshold) when split multirate grid VQ is used in a particular coding mode. Therefore, for example, it is highly likely that the number of unused bits below the threshold will be coded, 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 become large, and the number of coded bits may increase by 2 bits or more. In such cases, the coding method may be switched based on the following method, for example.

[0150] For example, when a split multirate grid VQ is applied to AVQ in GC mode of the EVS codec, the closer the input signal is to zero, the more unused bits tend to be. Also, for example, it is possible to determine whether the input signal is close to zero based on the energy of the adaptive codebook vector or the gain information (or gain data) multiplied by the excitation signal encoded by AVQ.

[0151] Therefore, if the energy of the adaptive codebook vector (or code vector) is less than a threshold (e.g., 10), or if the gain multiplied by the excitation signal encoded by AVQ is less than a threshold (e.g., 1.0), the encoding device 100 may determine the code code directly from the codebook indication value of the sub-vector at a specific position without applying the method according to one embodiment of the present disclosure (e.g., the method of encoding the number of unused bits).

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

[0153] The encoding device 100 may switch the encoding method based, for example, on a combination of the energy of the adaptive codebook vector and the gain multiplied by the excitation signal encoded by AVQ. In this case, the encoding device 100 may, for example, weight the energy of the adaptive codebook vector and the gain multiplied by the excitation signal when determining whether to switch the encoding method.

[0154] Furthermore, since the gain multiplied by the excitation signal encoded by AVQ is not determined until AVQ encoding is completed in the frame being encoded, for example, gain information from a frame in the past may be referenced.

[0155] Furthermore, while Method 5 describes, as an example, a method for switching the encoding method based on the energy or gain information of the adaptive codebook vector, the method is not limited to this, and the encoding method may be switched based on other parameters related to the increase or decrease in the number of unused bits. Alternatively, the encoding method may be switched based on a comparison of the number of unused bits with a threshold.

[0156] <Method 6> The association between the number of unused bits and the sign is not limited to the example shown in Figure 4.

[0157] For example, the upper limit of the number of unused bits is equal to the number of available bits, so there do not need to be any code codes (or codes) that exceed the number of available bits. In this case, the code with the upper limit of unused bits does not need to have a trailing zero (e.g., a stop bit).

[0158] For example, if the number of available bits is 20 bits and 19 bits are unused (for example, if the codebook instruction value is "0" (codebook Q0)), then in the example shown in Figure 4, the code assigned to the unused bits is "1110". On the other hand, when the number of available bits is 20 bits, the number of unused bits will never be 20 bits or more (for example, a code with four or more consecutive ones, such as the code "11110"). Therefore, even if the trailing zero of the code "1110" assigned to the 19 unused bits is missing (for example, it could be "111"), the decoding device 200 can still determine the number of unused bits.

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

[0160] Thus, for example, the code (or coded information) that encodes the number of unused bits may be represented by a Huffman code where the number of available bits is the upper limit of the number of unused bits. For example, the coding device 100 may encode the unused bits using a Huffman code corresponding to the upper limit of the unused bits. This makes it possible to reduce the number of bits used to encode the codebook instruction value by 1 bit.

[0161] Furthermore, as shown in Figure 4, for example, the code assigned to the unused bits may be represented by a Unary code. For example, in Method 6, as described above, if the upper limit of the unused bits is set based on the number of available bits, the least significant bit (LSB) of the Unary code corresponding to the upper limit of the unused bits set based on the number of available bits may be truncated (or deleted). For example, as in the example above, if the number of available bits is 20 bits, the upper limit of the unused bits is 19 bits, so in the example shown in Figure 4, the Unary code corresponding to the upper limit of the unused bits is the 4-bit code "1110". In Method 6, the least significant bit "0" of this Unary code "1110" may be truncated to "111", and the association between the unused bits and the code will be the same as in the example shown in Figure 13. This makes it possible to reduce the number of bits used to encode the codebook instruction value by 1 bit.

[0162] Here, if the sub-vectors are appropriately bit-assigned, a codebook instruction value with a longer word length (or number of bits) is more likely to be selected for a sub-vector at a particular position (e.g., sub-vector v8), depending on the number of available bits. Furthermore, when a codebook instruction value with a longer word length is selected, the number of unused bits approaches zero, making it more likely to select a code code with a shorter word length and fewer unused bits. Method 6 utilizes this tendency, and the encoding device 100 calculates the maximum codebook instruction value that can be used to encode a sub-vector at a particular position based on the number of available bits for that sub-vector, and may represent the code assigned to the unused bits using a Huffman code or a Unary code (e.g., a code with the LSB of the Unary code assigned to the upper limit of unused bits truncated). This reduces the number of encoded bits for the unused bits.

[0163] Furthermore, as explained in Method 2, if the number of available bits is 10 bits or more, the bits of the remainder of 5 are likely to remain unused. Therefore, in Method 6, the number of available bits may be the value obtained by subtracting the remainder of 5.

[0164] Furthermore, for example, in the EVS codec, the probability distribution of the encoding result for unused bits may show that the probability of 5-9 bits being unused is the highest, followed by 0-4 bits, and then 10-14 bits and beyond (for example, when GC mode is selected). In this case, as a method of assigning codes to unused bits, for example, the code "0" for unused bits 0-4 bits and the code "10" for unused bits 5-9 bits shown in Figure 4 may be swapped (for example, Figure 14). In other words, among the codes obtained by encoding each candidate for unused bits, the code corresponding to the candidate with a higher probability of occurrence may have fewer bits. In the example shown in Figure 14, since a code with fewer bits is assigned to unused bits with a higher probability of occurrence, the average number of encoded bits can be reduced. Note that Figure 14 is just one example, and different codes with different numbers of bits may be assigned depending on the probability of occurrence of unused bits. Such assignments only need to be predetermined for each encoding mode, so it is not necessary to encode or transmit information about the assignment method.

[0165] Furthermore, the codes assigned to the unused bits shown in Figures 4, 13, and 14 are, for example, unary codes with "0" as the stop bit, but are not limited to these. For example, the codes assigned to the unused bits shown in Figures 4, 13, and 14 may be obtained by swapping "1" and "0".

[0166] Furthermore, when switching between encoding methods such as <Method 1> or <Method 5>, Huffman coding can be applied to methods that encode the codebook indication value directly. For example, in the example shown in Figure 1, if the number of available bits is 23 bits, the largest codebook among the codebooks for a subvector at a particular position is Q4 (total number of bits used: 20 bits). In this case, in the example shown in Figure 1, the codebook indication value for Q4 is the 4 bits "1110". Here, if the number of available bits is 23 bits, codebooks of Q5 or higher (total number of bits used: 25 bits or more) cannot be used. Therefore, for example, as shown in Figure 15, the codebook indication value for Q4 may be "111" by omitting the "0" from "1110". This reduces the number of encoded bits in the codebook indication value.

[0167] Methods 1 through 6 have been explained above.

[0168] In one embodiment of this disclosure, the codebook list is not limited to the example shown in Figure 1, and the codebook indicator value and the sign value and number of bits used (or total number of bits used) of the code vector index in the codebook may be other values. Also, the thresholds described in Methods 1 to 6 above may be set according to the codebook list applied to encoding and decoding.

[0169] Furthermore, while Figure 1 illustrates the case where the ratio of the number of bits used in the codebook instruction value to the total number of bits used in each codebook is 1 / 5 (in other words, where the divisor when using the remainder is 5), it is not limited to this case.

[0170] Furthermore, although the above-described embodiment explained the case where the input signal S(f) is divided into 8 sub-vectors, the number of sub-vectors into which the input signal S(f) is divided is not limited to 8.

[0171] The embodiments of this disclosure have been described above.

[0172] This disclosure can be implemented as software, hardware, or software linked to hardware. Each functional block used in the description of the above embodiments may be implemented partially or entirely as an integrated circuit (LSI), and each process described in the above embodiments may be controlled partially or entirely by a single LSI or a combination of LSIs. An LSI may consist of individual chips, or it may consist of a single chip that includes some or all of the functional blocks. An LSI may have data inputs and outputs. Depending on the degree of integration, LSIs may be referred to as ICs, system LSIs, super LSIs, or ultra LSIs. The method of integrated circuit implementation is not limited to LSIs, and may also be implemented with dedicated circuits, general-purpose processors, or dedicated processors. Furthermore, an FPGA (Field Programmable Gate Array) that can be programmed after LSI manufacturing, or a reconfigurable processor that can reconfigure the connections and settings of circuit cells inside the LSI, may be used. This disclosure may be implemented as digital processing or analog processing. Furthermore, if advancements in semiconductor technology or related technologies lead to the emergence of integrated circuit technologies that replace LSIs, then naturally, these technologies could be used to integrate functional blocks. The application of biotechnology, for example, is a possible possibility.

[0173] This disclosure is applicable to all types of devices, systems, and equipment having communication capabilities (collectively referred to as communication equipment). Communication equipment may include a radio transceiver and a processing / control circuit. A radio transceiver may include a receiver and a transmitter, or both as functions. A radio transceiver (transmitter, receiver) may include an RF (Radio Frequency) module and one or more antennas. The RF module may include an amplifier, an RF modulator / demodulator, or similar. Non-exclusive examples of communication devices include telephones (mobile phones, smartphones, etc.), tablets, personal computers (PCs) (laptops, desktops, notebooks, etc.), cameras (digital still / video cameras, etc.), digital players (digital audio / video players, etc.), wearable devices (wearable cameras, smartwatches, tracking devices, etc.), game consoles, digital book readers, telehealth / telemedicine devices, vehicles or mobile transport with communication capabilities (cars, airplanes, ships, etc.), and combinations of the above-mentioned devices.

[0174] Communication devices are not limited to portable or movable devices, but also include all kinds of non-portable or fixed devices, devices, and systems, such as smart home devices (appliances, lighting equipment, smart meters or measuring instruments, control panels, etc.), vending machines, and any other "things" that may exist on an IoT (Internet of Things) network.

[0175] Communication includes data communication via cellular systems, wireless LAN systems, and communication satellite systems, as well as data communication using combinations of these.

[0176] Furthermore, the communication device also includes devices such as controllers and sensors that are connected to or linked to a communication device that performs the communication functions described in this disclosure. For example, this includes controllers and sensors that generate control signals and data signals used by the communication device that performs the communication functions of the communication device.

[0177] Furthermore, communication equipment includes infrastructure facilities such as base stations, access points, and any other devices, devices, and systems that communicate with or control the aforementioned non-limited types of equipment.

[0178] An encoding device according to one embodiment of the present disclosure comprises: a quantization circuit that generates quantization parameters including first information relating to a vector quantization codebook and second information relating to code vectors contained in the codebook; and a control circuit that controls the encoding of the first information for the subvector using a second number of bits based on the difference between a first number of bits available for encoding a subvector and the number of bits of the quantization parameters of the subvector in the vector quantization.

[0179] In one embodiment of the present disclosure, the control circuit determines the encoded information to be the information obtained by encoding the second bit number.

[0180] In one embodiment of the present disclosure, the information encoded by the second bit number is represented by a Huffman code in which the first bit number is the upper limit of the second bit number.

[0181] In one embodiment of the present disclosure, the information encoded by the second bit number is represented by a Unary code, and the least significant bit of the Unary code corresponding to the upper limit of the second bit number, which is set based on the first bit number, is deleted.

[0182] In one embodiment of the present disclosure, among the information encoded for each candidate of the second bit length, the number of bits of the information corresponding to the candidate with a higher probability of occurrence is smaller.

[0183] In one embodiment of the present disclosure, the control circuit determines the encoded information to be the encoded information if the number of first bits is greater than a threshold, and determines the first information to be the encoded information if the number of first bits is less than or equal to the threshold.

[0184] In one embodiment of the present disclosure, in the Generic Coding (mode) of the 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, the control circuit determines the information obtained by encoding the second number of bits as encoded information if the energy of the code vector with respect to the subvector is equal to or greater than a threshold, and determines the first information as encoded information if the energy of the code vector is less than the threshold.

[0186] In one embodiment of the present disclosure, the control circuit determines the encoded information to be the encoded information if the gain for the subvector is greater than or equal to a threshold, and determines the first information to be the encoded information if the gain is less than the threshold.

[0187] In one embodiment of the present disclosure, the second bit number is the remainder of 5 with respect to the first bit number minus the number of bits of the quantization parameter of the subvector.

[0188] A decoding device according to one embodiment of the present disclosure comprises a control circuit that controls the decoding of the first information for the subvector using a first number of bits usable for encoding the subvector in vector quantization and a second number of bits based on the difference between a first number of bits usable for encoding the subvector and a quantization parameter number including first information relating to the subvector's codebook and second information relating to the code vector contained 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, the encoding device generates quantization parameters including first information relating to a vector quantization codebook and second information relating to a code vector contained in the codebook, and controls the encoding of the first information for the subvector using a second number of bits based on the difference between the first number of bits available for encoding the subvector and the number of bits of the quantization parameters of the subvector.

[0190] In a decoding method according to one embodiment of the present disclosure, the decoding device controls the decoding of the first information for the subvector using a second number of bits based on the difference between a first number of bits usable for encoding the subvector in vector quantization and a second number of bits of quantization parameters including first information relating to the codebook of the subvector and second information relating to the code vector contained in the codebook, and performs inverse vector quantization based on the first information.

[0191] All disclosures in the specification, drawings, and abstract contained in the Japanese application 2020-105470, filed on 18 June 2020, are incorporated herein by reference. [Industrial applicability]

[0192] One embodiment of this disclosure is useful for coding systems and the like. [Explanation of symbols]

[0193] 51 CELP encoder 52 CELP Local Decryption Unit 53,65 Adder 64 CELP decoding unit 71 LPC Analysis Department 72 Quantization section 73,84 Inverse quantization section 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 Department 103 Split Multirate Lattice Quantization Unit 104 Codebook instruction value conversion unit 105 Multiplexer 121 Codebook Indication Value Separation Unit 122,221 Available bits calculation unit 123 Unused Bit Calculation Unit 124 Unused bits encoding section 200, 200a, 200b Decoding Device 201 Separation part 202 Codebook Indication Value Inverse Transformation Unit 203 Split Multirate Lattice Inverse Quantization Unit 63,83,204 Frequency-Time Conversion Unit 222 Unused bits Decoding section 223 Restoration Section 224 Codebook instruction value generation unit

Claims

1. A receiving unit that receives from the encoding device a bitstream encoding quantization parameters for each of N subvectors (where N is an integer of 2 or more) obtained by dividing a signal in the frequency domain, which include a codebook index indicating the codebook used for vector quantization in the encoding device and a code vector index indicating a selected code vector from among a plurality of code vectors contained in the codebook, or a bitstream encoding the number of unused bits obtained by subtracting the number of bits required to encode the quantization parameters of the subvector from the number of available bits that can be used to encode the quantization parameters of the subvector in the encoding device, and the code vector index. For each of the subvectors that have received the encoded quantization parameters, the codebook index and the code vector index are obtained by decoding the encoded quantization parameters. For a specific subvector that has received the encoded number of unused bits and the code vector index, the number of unused bits and the code vector index before encoding are obtained by decoding the encoded number of unused bits and the code vector index. A decoding unit that calculates the number of available bits for encoding the quantization parameters of the specific subvector by subtracting the sum of the number of bits used for encoding the quantization parameters of each of the N subvectors other than the specific subvector from the total number of bits available for encoding the frequency domain signal in the specific subvector, calculates the number of bits required for encoding the quantization parameters of the specific subvector by subtracting the number of decoded unused bits from the calculated number of available bits, and estimates the codebook index and the code vector index of the specific subvector. An inverse quantization unit outputs a frequency domain signal before vector quantization for each of the N subvectors by performing inverse vector quantization based on the codebook index and code vector index of each of the N subvectors, It is equipped with, The number of unused bits is calculated based on the number obtained by subtracting the remainder of 5 from the number of available bits. Decoding device.

2. The aforementioned specific sub-vector is a sub-vector at a predetermined position among the N sub-vectors, and the receiving unit receives information about the position of the aforementioned specific sub-vector. The decoding device according to claim 1.

3. The information encoded by the number of unused bits is represented by a Huffman code, where the number of available bits is the upper limit of the number of unused bits. The decoding device according to claim 1.

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 of the number of unused bits, which is set based on the number of available bits, is deleted. The decoding device according to claim 1.

5. If the number of available bits is greater than the threshold, the number of unused bits and the code vector index are encoded, and if the number of available bits is less than or equal to the threshold, the codebook index and the code vector index are encoded. The decoding device according to claim 1.

6. In the Generic Coding (mode) of the Enhanced Voice Services (EVS) codec, if the signal to be vector-quantized is a harmonic signal, The aforementioned specific subvector is the subvector with the highest frequency among the N subvectors. The decoding device according to claim 1.

7. The aforementioned specific subvector is the third subvector from the lowest frequency in the frequency domain among the eight subvectors. The decoding device according to claim 1.

8. A decoding method for a decoding device, For each of the N subvectors (where N is an integer of 2 or more) obtained by dividing a signal in the frequency domain, a bitstream is received from the encoding device that encodes quantization parameters including a codebook index indicating the codebook used for vector quantization in the encoding device and a code vector index indicating a selected code vector from among the multiple code vectors contained in the codebook, or a bitstream that encodes the number of unused bits obtained by subtracting the number of bits required to encode the quantization parameters of the subvector from the number of available bits that can be used to encode the quantization parameters of the subvector in the encoding device, and the code vector index. For each of the subvectors that have received the encoded quantization parameters, the codebook index and the code vector index are obtained by decoding the encoded quantization parameters. For a specific subvector that has received the encoded number of unused bits and the code vector index, the number of unused bits and the code vector index before encoding are obtained by decoding the encoded number of unused bits and the code vector index. In the specific subvector, the number of available bits available for encoding the quantization parameters of the specific subvector is calculated by subtracting the sum of the number of bits used for encoding the quantization parameters of each of the N subvectors other than the specific subvector from the total number of bits available for encoding the frequency domain signal, the number of bits required for encoding the quantization parameters of the specific subvector is calculated by subtracting the number of decoded unused bits from the calculated number of available bits, and the codebook index and code vector index of the specific subvector are estimated. By performing inverse vector quantization based on the codebook index and code vector index of each of the N subvectors, the frequency domain signal before vector quantization is output for each of the N subvectors. The number of unused bits is calculated based on the number obtained by subtracting the remainder of 5 from the number of available bits. Decryption method.

9. The aforementioned specific sub-vector is a sub-vector at a predetermined position among the N sub-vectors, and receives information about the position of the aforementioned specific sub-vector. The decoding method according to claim 8.

10. The information encoded by the number of unused bits is represented by a Huffman code, where the number of available bits is the upper limit of the number of unused bits. The decoding method according to claim 8.

11. 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 of the number of unused bits, which is set based on the number of available bits, is deleted. The decoding method according to claim 8.

12. If the number of available bits is greater than the threshold, the number of unused bits and the code vector index are encoded, and if the number of available bits is less than or equal to the threshold, the codebook index and the code vector index are encoded. The decoding method according to claim 8.

13. In the Generic Coding (mode) of the Enhanced Voice Services (EVS) codec, if the signal to be vector-quantized is a harmonic signal, The aforementioned specific subvector is the subvector with the highest frequency among the N subvectors. The decoding method according to claim 8.

14. The aforementioned specific subvector is the third subvector from the lowest frequency in the frequency domain among the eight subvectors. The decoding method according to claim 8.