Encoding device, decoding device, encoding method, and decoding method

By converting and encoding the codebook indicator value in split multi-rate dot matrix vector quantization, and using the unused bit count to control the encoding of sub-vectors, the problem of insufficient encoding bits in the prior art is solved, achieving more efficient encoding and decoding and simplifying the processing flow.

CN122050408APending Publication Date: 2026-05-15PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
Filing Date
2021-04-22
Publication Date
2026-05-15

AI Technical Summary

Technical Problem

Existing multi-rate lattice vector quantization methods have shortcomings in reducing the number of encoded bits, especially in certain special cases where they cannot effectively reduce the number of encoded bits, and the encoding complexity is high.

Method used

By converting and encoding the codebook indicator value in the split multi-rate dot matrix vector quantization, the encoding process of the sub-vector is controlled by using the unused bit number encoding, thereby reducing the number of encoded bits. The encoding device and the decoding device are used to convert and inversely convert the codebook indicator value respectively, thereby controlling the difference in the number of encoded bits.

Benefits of technology

It effectively reduces the number of encoded bits, simplifies encoding processing, improves encoding efficiency, and avoids negative quantitative complexity increases in special cases, achieving more efficient encoding and decoding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122050408A_ABST
    Figure CN122050408A_ABST
Patent Text Reader

Abstract

The present invention reduces the number of coding bits in vector quantization. The encoding apparatus includes: a quantization circuit generating a quantization parameter including first information related to a codebook of vector quantization and second information related to a code vector 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 usable for encoding of the sub-vector in vector quantization and a number of bits of a quantization parameter of the sub-vector.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of Chinese invention patent application filed on April 22, 2021, with application number 202180043347.2, entitled "Encoding Device, Decoding Device, Encoding Method and Decoding Method", and filed by Panasonic Corporation (USA). Technical Field

[0002] This disclosure relates to encoding devices, decoding devices, encoding methods, and decoding methods. Background Technology

[0003] As one of the quantization methods in the encoding of audio or sound (e.g., encoding of excitation signals), multi-rate lattice vector quantization (MLV) has been developed (see, for example, Non-Patent Document 1). MLV can be applied, for example, to split vector quantization (e.g., referred to as "split multi-rate lattice vector quantization"). Additionally, split multi-rate lattice vector quantization can be applied, for example, to algebraic vector quantization (also referred to as "AVQ: Algebraic Vector Quantization").

[0004] Existing technical documents

[0005] Patent documents

[0006] Patent Document 1: International Publication No. 2013 / 061531

[0007] Non-patent literature

[0008] Non-patent literature 1: 3GPP TS 26.445 V16.0.0, "Codec for Enhanced VoiceServices (EVS); Detailed Algorithmic Description (Release 16)", 2019-06. Summary of the Invention

[0009] However, there is still room for research into methods to reduce the number of encoded bits in multi-rate lattice vector quantization.

[0010] The non-limiting embodiments of this disclosure help to provide encoding apparatus, decoding apparatus, encoding method, and decoding method for reducing the number of encoded bits in vector quantization.

[0011] An encoding apparatus according to an embodiment of this disclosure includes: a quantization circuit that generates quantization parameters, the quantization parameters including first information related to a codebook of vector quantization and second information related to code vectors contained in the codebook; and a control circuit that uses a second number of bits to control the encoding of the first information for a sub-vector, the second number of bits being the difference between a first number of bits available for encoding the sub-vector in the vector quantization and the number of bits of the quantization parameters of the sub-vector.

[0012] It should be noted that these general or specific methods can be implemented by systems, devices, methods, integrated circuits, computer programs or recording media, or by any combination of systems, devices, methods, integrated circuits, computer programs and recording media.

[0013] According to one embodiment of this disclosure, it is possible to reduce the number of encoded bits in multi-rate lattice vector quantization.

[0014] Further advantages and effects of one embodiment of this disclosure will be illustrated by the specification and drawings. These advantages and / or effects are provided by the various embodiments and the features described in the specification and drawings, but not necessarily all of them need to be provided in order to obtain one or more of the same features. Attached Figure Description

[0015] Figure 1 This is a diagram representing an example of a codebook list in split multirate lattice vector quantization.

[0016] Figure 2 This is a block diagram representing a structural example of an encoding device.

[0017] Figure 3 This is a block diagram representing a structural example of the codebook indicator value conversion section.

[0018] Figure 4 This is a diagram illustrating an example of the correspondence between unused bits and unused bit encoded codes.

[0019] Figure 5 This is a block diagram illustrating a structural example of a decoding device.

[0020] Figure 6 This is a block diagram representing a structural example of the codebook indicator value inverse conversion unit.

[0021] Figure 7 This is a diagram showing an example of the spectrum of an input signal.

[0022] Figure 8 This is a diagram representing an example of a codebook applied to a subvector.

[0023] Figure 9This is a block diagram representing other structural examples of an encoding device.

[0024] Figure 10 This is a block diagram representing other structural examples of a decoding device.

[0025] Figure 11 This is a block diagram representing other structural examples of an encoding device.

[0026] Figure 12 This is a block diagram representing other structural examples of a decoding device.

[0027] Figure 13 This is a diagram showing other examples of the correspondence between unused bits and encoded codes.

[0028] Figure 14 This is a diagram showing other examples of the correspondence between unused bits and encoded codes.

[0029] Figure 15 This is a diagram illustrating an example of the relationship between the codebook and its indicator values.

[0030] Explanation of reference numerals in the attached figures

[0031] 51 CELP Coding Department

[0032] 52 CELP Local Decoding Unit

[0033] 53, 65 adders

[0034] 64 CELP Decoding Section

[0035] 71 LPC Analysis Department

[0036] 72 Quantitative Department

[0037] 73, 84 Inverse Quantization Section

[0038] 74 LPC Inverse Filter Section

[0039] 85 LPC Synthesis Filter Section

[0040] 100, 100a, 100b encoding devices

[0041] 54, 75, 101 Time-to-Frequency Conversion Unit

[0042] 102 Psychoacoustic Model Analysis Department

[0043] 103 Split Multi-Rate Lattice Quantization Unit

[0044] 104 Codebook Indicator Value Conversion Unit

[0045] 105 Reuse Department

[0046] 121 Codebook Indicator Value Separation Section

[0047] 122 and 221 can use the bit count calculation unit.

[0048] 123 Unused bit count calculation unit

[0049] 124 Unused bit encoding section

[0050] 200, 200a, 200b decoding devices

[0051] 201 Demultiplexing Department

[0052] 202 codebook indicator value inverse conversion unit

[0053] 203 Split Multirate Lattice Inverse Quantization Unit

[0054] 63, 83, 204 Frequency-Time Conversion Section

[0055] 222 Unused bit-count decoding unit

[0056] 223 Recovery Department

[0057] 224 Codebook Indicator Value Generation Unit. Detailed Implementation

[0058] Hereinafter, embodiments of the present disclosure will be described in detail with reference to the accompanying drawings.

[0059] For example, in split multi-rate lattice vector quantization, the signal in the frequency domain (or spectral domain) can be divided into multiple sub-vectors (SVs, also known as "sub-bands"), and multi-rate lattice vector quantization can be performed on each of the divided sub-vectors.

[0060] Figure 1 This is a diagram of an example of a list of codebooks (or, referred to as "codebook") for multi-rate lattice vector quantization of subvectors (e.g., see Patent Document 1 or Non-Patent Document 1).

[0061] For example, such as Figure 1 As shown, the quantization parameters in split multi-rate lattice vector quantization may include information for identifying the codebook used for quantization (e.g., referred to as "codebook indicator" or "codebook index"), and information for identifying the selected code vector among the multiple code vectors contained in the codebook (e.g., referred to as "code vector index").

[0062] For example, in Figure 1In the codebooks Q0, Q2, Q3, Q4, Q5, ..., Qn shown, 1, 10, 15, 20, 25, ..., 5n bits (n being an integer greater than 2) can be used for encoding (or quantizing) a subvector (SV). The 1, 2, 3, 4, 5, ..., n bits (n being an integer greater than 2) from the number of bits used in the encoding of each codebook (e.g., the total number of bits used) can be used for the codebook indicator value. In other words, in Figure 1 In this context, the proportion of bits allocated to encoding codebook indicator values ​​to the total number of bits used in encoding using each codebook (e.g., 5n) can be 1 / 5.

[0063] Furthermore, codebook Q0 may contain a vector (e.g., a zero vector). A zero vector is, for example, a vector whose quantization value is 0. Therefore, code vector indices may not be specified for codebook Q0, and the number of bits used for code vector indices may be 0.

[0064] For example, an encoder can use Figure 1 The codebook shown encodes multiple subvectors (e.g., the eight SVs in Non-Patent Document 1) together. Furthermore, the number of bits available for encoding the multiple subvectors (e.g., referred to as the "total number of bits") can be known between the encoding and decoding devices.

[0065] For example, Patent Document 1 proposes a bit reduction method for split multi-rate lattice vector quantization of 8 SVs. For example, the codebook indicator value (codebook index) used by the remaining SV can be estimated according to the following formula (1) based on the number of bits used by 7 of the 8 SVs (see, for example, Patent Document 1).

[0066] [Formula 1]

[0067] (1)

[0068] In equation (1), cb'fix represents an estimate of the number of bits used for a codebook indicator value of a single SV (e.g., subvector number i = Pfix). available ΣBits represents the total number of bits that can be used in the encoding of 8 SVs. cbvi This represents the number of bits used to encode the other 7 subvectors vi (i ≠ Pfix) that are different from the subvector number i = Pfix (e.g., Figure 1 The total (using bits) is the total.

[0069] In Patent Document 1, the encoding device, for example for an SV (e.g., i = Pfix), quantizes (or encodes) the difference between the estimated number of bits used for the codebook indication value shown in Equation (1) and the actual number of bits for the codebook indication value, and transmits the difference information to the decoding device. For example, the larger the codebook number n used by an SV, the less information (e.g., number of bits) the difference information contains compared to the codebook indication value, thereby reducing the number of encoded bits.

[0070] However, in Patent Document 1, for example, there are cases where the differential information (in other words, the encoded object) becomes a negative number (e.g., -1), and because a quantization level or code corresponding to a negative number is used, the complexity of encoding (or quantization) increases.

[0071] Furthermore, when encoding a determined SV based on codebook Q0 (e.g., codebook indicator value "0") or codebook Q2 under special conditions (e.g., codebook indicator value "1"), it may be impossible to reduce the number of encoded bits.

[0072] Here, a special case could be, for example, where all bits of the total number of bits available for encoding are used for encoding, with no bits left unused. In this case, for example, the following could be omitted: Figure 1 The codebook indicator value of each codebook is represented by trailing zeros (also known as "stop bits"). For example, in a special case, the codebook indicator value of codebook Q2 can be "1" (1 bit) obtained by omitting the zeros from "10".

[0073] Additionally, for example, if the focus is on reducing the number of bits used in encoding of an SV with more bits in a plurality of SVs, it may be impossible to reduce the number of encoding bits if an SV with 0 bits in encoding is generated. It should be noted that SVs with 0 bits in encoding are more likely to be, for example, the higher-order SVs in a plurality of SVs (e.g., the 6th, 7th, or 8th SV in a plurality of SVs).

[0074] Therefore, in one embodiment of this disclosure, a method is described that reduces the number of encoded bits used in encoding codebook indicator values ​​(in other words, variable-length codes) applied to multi-rate lattice vector quantization (LVQ) for split vector quantization (e.g., SVQ).

[0075] Furthermore, the following example illustrates the use of conversion encoding as an encoding method.

[0076] [Example of an encoding device structure]

[0077] Figure 2This is a block diagram illustrating a structural example of an encoding device 100 according to an embodiment of the present disclosure. Figure 1 The encoding device 100 shown may include, for example, a time-frequency conversion unit 101, a psychoacoustic model analysis unit 102, a split multi-rate vector quantization (VQ) unit 103 (e.g., equivalent to a quantization circuit), a codebook indicator conversion unit 104 (e.g., equivalent to a control circuit), and a multiplexing unit 105.

[0078] The time-to-frequency conversion unit 101 can, for example, use a time-to-frequency conversion method such as Discrete Fourier Transform (DFT) or Modified Discrete Cosine Transform (MDCT) to convert the time-domain input signal S(n) into a frequency-domain input signal (or, also called "spectral coefficients") S(f). The time-to-frequency conversion unit 101 can, for example, output the frequency-domain input signal S(f) to the psychoacoustic model analysis unit 102 and the split multi-rate lattice VQ unit 103.

[0079] The psychoacoustic model analysis unit 102 can, for example, perform psychoacoustic model analysis on the frequency domain input signal S(f) input from the time-to-frequency conversion unit 101 and obtain a masking curve. The psychoacoustic model analysis unit 102 can, for example, output information related to the obtained masking curve to the split multi-rate lattice VQ unit 103.

[0080] The split multi-rate lattice VQ unit 103 can, for example, perform split multi-rate lattice quantization on the frequency domain input signal S(f) input from the time-to-frequency conversion unit 101. For example, the split multi-rate lattice VQ unit 103 can divide the input signal S(f) into multiple sub-vectors (SVs) and quantize each of the multiple sub-vectors to generate quantization parameters that include a codebook indicator value representing the codebook and a code vector index representing one of the multiple code vectors contained in the codebook.

[0081] Furthermore, for example, the split multi-rate lattice VQ unit 103 can apply the split multi-rate lattice VQ to the frequency domain input signal S(f) based on information related to the masking curve input from the psychoacoustic model analysis unit 102. This, for example, can eliminate quantization noise in the split multi-rate lattice VQ.

[0082] The split multi-rate lattice VQ unit 103 can, for example, output the global gain and code vector index from the quantization parameters obtained through quantization to the multiplexing unit 105. Additionally, the split multi-rate lattice VQ unit 103 can, for example, output information related to the codebook indicator and code vector index from the quantization parameters to the codebook indicator conversion unit 104. Furthermore, the split multi-rate lattice VQ unit 103 can, for example, output the number of bits (e.g., bits) usable for encoding the input signal S(f). available The relevant information is output to the codebook indicator value conversion unit 104.

[0083] The codebook indicator conversion unit 104 may, for example, convert the encoded information (or, referred to as "encoded code") of the codebook indicator based on the information input from the split multi-rate dot matrix VQ unit 103.

[0084] For example, the codebook indicator conversion unit 104 can perform the following steps 1 to 3 based on the codebook indicator values ​​of each of the multiple sub-vectors input from the split multi-rate dot matrix VQ unit 103.

[0085] (Step 1)

[0086] The codebook indicator conversion unit 104, for example, sets the codebook indicator 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 indicator values ​​to codes (or, encoded codes). Then, the codebook indicator conversion unit 104, for example, can calculate the sum of the number of bits used for the codebook indicator value and the number of bits used for the code vector index for the N-1 subvectors.

[0087] (Step 2)

[0088] The codebook indicator value conversion unit 104 can, for example, calculate the number of bits available for the codebook indicator value of a subvector at a predetermined position. For example, the codebook indicator value conversion unit 104 can also calculate the total number of bits available for encoding the input signal S(f). available Subtract the sum of the number of bits used in the encoding of the N-1 sub-vectors calculated in (step 1) to calculate the number of bits that can be used in the encoding of the codebook indicator value of the sub-vector at the predetermined position.

[0089] (Step 3)

[0090] The codebook indicator conversion unit 104 can, for example, calculate the number of bits not used for encoding (e.g., referred to as "unused bits") out of the number of bits available for encoding the subvector at the predetermined position calculated in (step 2), and encode the unused bits. For example, the codebook indicator conversion unit 104 can calculate the unused bits by subtracting the sum of the number of bits used for the codebook indicator value of the subvector at the predetermined position and the number of bits used for the code vector index from the number of usable bits calculated in (step 2).

[0091] The codebook indicator value conversion unit 104 can, for example, output the codebook indicator value (encoded code) obtained through (steps 1) to (steps 3) and the unused bit number encoding code to the multiplexing unit 105.

[0092] Furthermore, an example of the operation of the codebook indicator value conversion unit 104 will be described later.

[0093] The multiplexing unit 105 can multiplex the global gain and code vector index input from the split multi-rate dot matrix VQ unit 103, and the codebook indicator value (encoded code) and unused bit number encoding code input from the codebook indicator value conversion unit 104, and send the multiplexed bit stream information to the decoding device 200.

[0094] Next, an example of the operation of the codebook indicator value conversion unit 104 will be explained.

[0095] Figure 3 This is a block diagram illustrating a structural example of the codebook indicator value conversion unit 104. Figure 3 The codebook indicator value conversion unit 104 shown may include, for example, a codebook indicator value separation unit 121, a usable bit count calculation unit 122, an unused bit count calculation unit 123, and an unused bit count encoding unit 124.

[0096] For example, the codebook indicator values ​​cbvi (i=1 to N) of the N sub-vectors output from the split multi-rate lattice VQ section 103 can be input to the codebook indicator value separation section 121.

[0097] The codebook indicator value separation unit 121, for example, based on the input N codebook indicator values ​​cbvi, outputs the codebook indicator value cbfixx (or cbvi(i=Pfix)) of the subvector at a predetermined position (e.g., i=Pfix) to the unused bit count calculation unit 123. Alternatively, the codebook indicator value separation unit 121 can output the codebook indicator values ​​cbvi (i≠Pfix) of N-1 subvectors at positions different from the predetermined positions to the usable bit count calculation unit 122, and output them as codebook indicator values ​​(encoded codes) to the multiplexing unit 105 (equivalent to step 1 above).

[0098] The bit count calculation unit 122 can, for example, calculate the number of bits available for encoding a subvector at a predetermined position (equivalent to step 2 above). For example, the bit count calculation unit 122 can calculate the number of bits to be input (Bits). available The number of usable bits for encoding the N-1 subvectors calculated using N-1 codebook indicator values ​​(cbvi (i≠Pfix)) is subtracted from the number of bits used. The usable bit count calculation unit 122 can output the calculated usable bit count to the unused bit count calculation unit 123 and the unused bit count encoding unit 124.

[0099] For example, the number of usable bits cb'fix can also be calculated using the bit number calculation unit 122 according to the following formula (2).

[0100] [Equation 2]

[0101] (2)

[0102] In equation (2), cb'fix represents the number of bits available for encoding a codebook indicator value for a given SV (e.g., subvector number i = Pfix). available Bits represents the total number of bits available for encoding in the transmitting unit of the input signal S(f). cbvi This represents the number of bits used in encoding subvector vi of subvector number i (e.g., the sum of the number of bits used for the codebook indicator value and the number of bits used for the code vector).

[0103] Thus, for example, as shown in equation (2), the bit count calculation unit 122 can be used to calculate the total number of bits (Bits). available Subtract the number of bits used to encode the N-1 subvectors (e.g., ΣBits). cbvi (i≠Pfix)), calculate the number of bits cb'fix that can be used to encode the subvector at a predetermined position.

[0104] The unused bit calculation unit 123 can calculate the number of unused bits in the encoding of the input signal S(f) (equivalent to step 3 above).

[0105] For example, the unused bit calculation unit 123 can calculate the number of bits used for encoding the subvector at a predetermined position (e.g., the number of bits used for encoding the codebook indicator value and the code vector index) based on the number of used bits (actual value cbfix) of the codebook indicator value of the subvector at a predetermined position input from the codebook indicator value separation unit 121. Next, the unused bit calculation unit 123 can calculate the unused bit count, for example, by subtracting the number of bits used for encoding the subvector at the predetermined position from the usable bit count input from the usable bit count 122. The unused bit calculation unit 123 can output information related to the calculated unused bit count to the unused bit count encoding unit 124, for example.

[0106] The unused bit number encoding unit 124 can, for example, encode the unused bit number input to the unused bit number calculation unit 123, thereby generating unused bit number encoded code (or, referred to as "encoded information"). For example, the unused bit number encoding unit 124 can be based on... Figure 4 The association between the number of unused bits and the unused bit encoding code (or code) shown (e.g., it can also be represented by a table) is used to generate an unused bit information encoding code based on the number of unused bits. The unused bit encoding unit 124 can, for example, output the unused bit encoding code to the multiplexing unit 105.

[0107] Here, as Figure 4 As shown, integers with more than 0 bits were not used. Additionally, in Figure 4 In this context, the number of candidates for allocating unused bits to a code (in other words, the quantization resolution) is 5. In other words, in... Figure 4 In this context, the same code is assigned to the five integers in the unused bit count. The reasoning is as follows: for example, ... Figure 1 As shown, when the number of bits used for the codebook indicator value is 2 or more, the ratio of the number of bits used for the codebook indicator value to the number of bits used for the code vector index is 1:4. The total number of bits used for encoding that combines the codebook indicator value and the code vector index changes in units of 5.

[0108] Furthermore, the unused bit encoding unit 124 can, for example, use the usable bit count input from the usable bit count calculation unit 122 to correct the codeword with the maximum unused bit count. For example, when the usable bit count is 23 bits, the maximum acceptable unused bit count is 22 bits (for example, when using codebook Q0). Figure 4In the example, the codeword is 11110 (5 bits). The unused bit encoding unit 124 can, for example, change (or modify) this codeword 11110 to 1111 (4 bits). The reason is that when the usable bit count is 23 bits, since there is no codeword corresponding to an unused bit count of 25 bits or more, when the high 4 bits of the codeword are "1111" (in other words, regardless of the lowest bit of the codeword), the unused bit count is determined to be 20 to 24 bits. Therefore, the number of encoded bits can be reduced by 1 bit when the unused bit count reaches its maximum.

[0109] [Example of a decoding device structure]

[0110] Figure 5 This is a block diagram illustrating a structural example of a decoding apparatus 200 according to an embodiment of the present disclosure. Figure 5 The decoding device 200 shown may include, for example, a demultiplexing unit 201, a codebook indicator value inverse conversion unit 202 (e.g., equivalent to a control circuit), a split multi-rate dot matrix inverse quantization (inverse VQ) unit 203 (e.g., equivalent to an inverse quantization circuit), and a frequency-time conversion unit 204.

[0111] In the decoding device 200, the bit stream sent from the encoding device 100 is input to the demultiplexing unit 201.

[0112] The demultiplexing unit 201 can, for example, demultiplex the global gain, code vector index, codebook indicator (encoded code), and unused bit information encoding code from the input bitstream. The demultiplexing unit 201 can, for example, output the global gain and code vector index to the split multi-rate dot matrix inverse VQ unit 203, and output the codebook indicator (encoded code) and unused bit information encoding code to the codebook indicator inverse conversion unit 202.

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

[0114] For example, the codebook indicator value inverse conversion unit 202 can perform the following steps 4 to 7 based on the codebook indicator value (encoded code) input from the demultiplexing unit 201 and the unused bit number information encoding code.

[0115] (Step 4)

[0116] The codebook indicator inverse conversion unit 202, for example, decodes the codebook indicator values ​​of other subvectors that are different from a predetermined position (e.g., i = Pfix) based on the codebook indicator value (encoded code). Furthermore, the codebook indicator inverse conversion unit 202 can, for example, calculate the number of bits used for encoding multiple subvectors (e.g., i ≠ Pfix) based on the decoded codebook indicator value (e.g., the sum of the number of bits used in the codebook indicator value and the number of bits used in the code vector).

[0117] (Step 5)

[0118] The codebook indicator value inverse conversion unit 202 can, for example, encode codes based on unused bit information and decode unused bits.

[0119] (Step 6)

[0120] The codebook indicator value inverse conversion unit 202 can, for example, calculate the number of encoded bits of a subvector at a predetermined position based on the number of encoded bits of multiple subvectors calculated in (step 4) and the number of unused bits decoded in (step 5).

[0121] (Step 7)

[0122] The codebook indicator value inverse conversion unit 202 can, for example, calculate (or decode) the codebook indicator value of the subvector at the predetermined position based on the number of encoded bits of the subvector at the predetermined position calculated in (step 6).

[0123] The codebook indicator value inverse conversion unit 202 can, for example, output the codebook indicator value obtained through (steps 4) to (steps 7) to the split multi-rate lattice inverse VQ unit 203.

[0124] Furthermore, the operation example of the codebook indicator value inverse conversion unit 202 will be described later.

[0125] The split-rate inverse VQ unit 203 performs split-rate inverse VQ based on the global gain and code vector index input from the demultiplexing unit 201, and the codebook indication value output from and input from the codebook indication value inverse conversion unit 202, and obtains the frequency domain decoded signal S̃(f). The split-rate inverse VQ unit 203 can output the frequency domain decoded signal S̃(f) to the frequency-to-time conversion unit 204.

[0126] The frequency-time conversion unit 204 can, for example, use frequency-time conversion methods such as Inverse Discrete Fourier Transform (IDFT) or Inverse Modified Discrete Cosine Transform (IMDCT) to convert the frequency domain signal S̃(f) output from the split multi-rate lattice inverse VQ unit 203 into the time domain signal S̃(n).

[0127] Next, an example of the operation of the codebook indicator value inverse conversion unit 202 will be explained.

[0128] Figure 6 This is a block diagram illustrating a structural example of the codebook indicator value inverse conversion unit 202. Figure 6 The codebook indicator value inverse conversion unit 202 shown may include, for example, a usable bit count calculation unit 221, an unused bit count decoding unit 222, a recovery unit 223, and a codebook indicator value generation unit 224.

[0129] For example, the codebook indication value (encoded code) output from the demultiplexing unit 201 can be input to the usable bit count calculation unit 221 and the codebook indication value generation unit 224. Additionally, for example, the unused bit count encoding code output from the demultiplexing unit 201 can be input to the unused bit count decoding unit 222.

[0130] Furthermore, the input codebook indicator value (encoded code) can, for example, represent the codebook indicator value cbvi (i≠Pfix) of N-1 subvectors that are different from the subvector at a specific position (e.g., i=Pfix).

[0131] The bit count calculation unit 221 can, for example, calculate the number of bits that can be used to encode a subvector at a predetermined position. For example, the bit count calculation unit 221 can use N-1 codebook indicator values ​​(cbvi (i≠Pfix)) to calculate the number of bits used to encode N-1 subvectors (equivalent to step 4 above), and calculate the number of bits used to encode N-1 subvectors using the input bit count Bits. available Subtract the number of bits used for encoding the N-1 subvectors, and calculate the number of usable bits cb'fix for encoding the subvector at a predetermined position. The usable bit count calculation unit 221 can output the calculated usable bit count to the recovery unit 223.

[0132] The unused bit number decoding unit 222 can, for example, decode the unused bit number encoded code input from the demultiplexing unit 201. For example, the unused bit number decoding unit 222 can be based on... Figure 4The association between the number of unused bits and the unused bit encoding code (e.g., symbol) is shown, and the number of unused bits is determined based on the unused bit encoding code (equivalent to step 5 above). The unused bit decoding unit 222 may, for example, output information related to the determined number of unused bits to the recovery unit 223.

[0133] The recovery unit 223 can, for example, determine (or recover) the codebook indication value of a subvector at a predetermined position based on the number of usable bits input from the usable bit count calculation unit 221 and the number of unused bits input from the unused bit count decoding unit 222. For example, the recovery unit 223 can calculate the number of bits used for encoding the subvector at a predetermined position by subtracting the number of unused bits from the usable bit count (e.g., Figure 1 (The total number of bits used is shown). Next, the recovery unit 223 can calculate the number of bits of the codebook indicator value based on the calculated number of bits (e.g., the total number of bits used), and output the encoded code representing the codebook indicator value to the codebook indicator value generation unit 224 (equivalent to steps 6 and 7 above).

[0134] The codebook indication value generation unit 224 can, for example, generate N codebook indication values ​​cbvi (i=1~N) based on the codebook indication values ​​cbvi (i≠Pfix) of the N-1 sub-vectors input from the demultiplexing unit 201 and the codebook indication values ​​cbvi (i=Pfix) of the sub-vectors at predetermined positions input from the recovery unit 223, such that the codebook indication values ​​cbvi of i=Pfix are arranged at predetermined positions. The codebook indication value generation unit 224 can output the generated codebook indication values ​​to the split multi-rate matrix inverse VQ unit 203.

[0135] [Example of codebook indicator value conversion]

[0136] Next, an example of the operation of the codebook indication value conversion unit 104 of the encoding device 100 will be described.

[0137] Figure 7 This is a diagram representing an example of an input signal S(f) in the frequency domain. Figure 7 For example, the input signal S(f) can be divided into eight sub-vectors, from sub-vector v1 to sub-vector v8.

[0138] In addition, Figure 7 In this example, the position (i=Pfix) of a predetermined subvector in the input signal S(f) is set to v8.

[0139] Figure 8 This is a diagram representing an example of the codebook indicator values ​​(or codebooks) for subvectors v1 to v8 obtained by split multi-rate lattice quantization.

[0140] exist Figure 7 and Figure 8 In the example shown, the codebook indicator value separation unit 121 in the codebook indicator value conversion unit 104 outputs the codebook indicator value of subvector v8 (e.g., 5 bits of "11110") to the unused bit number calculation unit 123. Alternatively, the codebook indicator value separation unit 121 can output the codebook indicator values ​​of subvectors v1 to v7 (e.g., "10", "10", "110", "110", "1110", "1110", "1110", "11110") that are different from subvector v8 to the multiplexing unit 105 as encoded codes.

[0141] The bit count calculation unit 122 can, for example, calculate the number of bits that can be used to encode the subvector v8. For example, it can calculate the total number of usable bits in the input signal transmission unit (Bits in Equation (2)). available The value is set to 144 bits. In this case, the bit count calculation unit 122 can be used to calculate, for example, the number of bits used by each of the subvectors v1 to v7 that are different from subvector v8 (total number of bits used). For example, Bits in equation (2) cbvi The sum of ) . Next, the number of bits that can be used can be calculated using the bit number calculation unit 122, for example, according to equation (2), the number of bits that can be used is cb'fix=(144-10-10-15-15-20-20-25)=29.

[0142] The unused bit count calculation unit 123 can calculate the unused bit count (here, 29-25=4 bits) by subtracting the number of bits used for encoding subvector v8, which is 29 bits, from the number of usable bits cb'fix=29 bits.

[0143] For example, since the number of unused bits is 4 bits, the unused bit encoding section 124 can be based on Figure 4 The association shown produces an unused bit-encoded code "0" (1 bit).

[0144] In the encoding device 100, the codebook indication values ​​(encoding codes) “10”, “10”, “110”, “110”, “1110”, “1110”, “1110”, “1110”, and “0” of the unused bit number encoding code of sub-vectors v1 to v7 generated in the above manner are multiplexed in the multiplexing unit 105 and sent to the decoding device 200.

[0145] As mentioned above, in Figure 7In the example shown, the codebook number applied to subvector v8 is 5 (Q5), and the number of bits used when encoding the codebook indicator value of codebook Q5 itself is 5 bits. On the other hand, in one embodiment of this disclosure, as described above, the number of bits used to transmit the unused bit-counted encoded code instead of the codebook indicator value for subvector v8 is 1 bit. Thus, in Figure 7 In the example shown, by notifying the code that the number of bits used for encoding is not used, compared to notifying the codebook indication value of subvector v8 itself, 4 bits of encoded bits can be reduced. Furthermore, in this embodiment, even with the reduction of encoded bits, information related to the codebook is not lost; therefore, the codebook indication value can be recovered in the decoding device 200.

[0146] Thus, the encoding device 100 and the decoding device 200, for example, use unused bits to control the encoding or decoding of the codebook indication value for a subvector. The unused bits are the difference between the number of bits available for encoding a subvector in vector quantization (e.g., split multi-rate VQ) and the number of bits of the quantization parameters (e.g., codebook indication value and code vector) of the subvector.

[0147] For example, encoding device 100 converts the codebook indication value used for encoding a specific subvector in the spectrum of an input signal divided into multiple subvectors into information related to the number of unused bits. Similarly, decoding device 200 uses the encoded code of the unused number of bits sent from encoding device 100 to convert the information related to the number of unused bits into information related to the codebook indication value.

[0148] This conversion, for example in lattice vector quantization (LVQ) used in split vector quantization (SVQ), can improve the coding efficiency of the codebook indicator value (or codebook index) of a determined SV. According to this embodiment, the number of bits used for the codebook indicator value for encoding a particular subvector can be reduced, thereby reducing the bit rate.

[0149] Furthermore, for example, in the method described above for encoding the difference between the estimated and actual values ​​of the codebook indicator value, as in Patent Document 1, there are cases where the difference information to be encoded is -1. For example, there may be a situation where, when the number of bits available for encoding a specific subvector is 9 bits, the estimated codebook indicator value in Patent Document 1 is 0 (Q0), while the actual codebook indicator value is 1 (Q1). Therefore, the complexity of encoding processes, such as those involving the setting of quantization levels or code associations corresponding to -1 (negative numbers), increases. On the other hand, in one embodiment of this disclosure, for example, since the unused bits in the number of bits including both the codebook indicator value and the code vector index are encoded, the minimum value of the unused bits to be encoded is 0, and the encoding of negative numbers can be ignored, thus simplifying the encoding process.

[0150] Furthermore, while the above embodiments illustrate the application of conversion coding as an encoding method as an example, the encoding method is not limited to conversion coding. For example, one embodiment of this disclosure can also be applied to encoding multiple sub-vectors formed by segmenting the frequency domain signal (spectrum) and quantizing them separately.

[0151] Furthermore, in this embodiment, the total number of usable bits is input to the usable bit count calculation unit 122 and the usable bit count calculation unit 221. This total number of usable bits may be information stored internally by the encoder (e.g., encoding device 100) or decoder (e.g., decoding device 200), rather than information input from outside the encoder or decoder. The total number of usable bits may, for example, be a predetermined fixed value. Alternatively, a predetermined fixed value may be used as the initial value, and during subsequent splitting of the multi-rate matrix VQ, the value obtained by adding the unused bits to the initial value may be input as the total number of usable bits.

[0152] [Application of hierarchical coding to CELP (Code Excited Linear Prediction) and transformation coding]

[0153] For example, the split multi-rate lattice VQ of this embodiment can also be applied to the layered coding of CELP and conversion coding. Figure 9 This is a block diagram illustrating a structural example of a coding apparatus 100a in the case of applying split multi-rate lattice VQ to CELP and layered coding of transition coding. Furthermore, Figure 10 This is a block diagram illustrating a structural example of a decoding device 200a in which split multi-rate dot matrix VQ is applied to CELP and layered coding of conversion coding.

[0154] In addition, Figure 9 and Figure 10In the figures, the structural parts that perform the same processing as the encoding device 100 and the decoding device 200 are given the same reference numerals.

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

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

[0157] Adder 53, for example, subtracts the synthesized signal S from the input signal S(n). syn (n) generates the prediction error signal S e (n).

[0158] The time-to-frequency conversion unit 54 uses time-to-frequency conversion methods such as DFT or MDCT to convert the time-domain coding error signal S e (n) is converted into the frequency domain coding error signal S e (f).

[0159] As described above, the frequency domain coding error signal S can be processed by the split multi-rate dot matrix VQ section 103 and the codebook indicator value conversion section 104. e (f) Quantization is performed. For example, the encoding device 100a can also replace the segmented encoding error signal S. e (f) The codebook indicator value (encoded code) of a specific subvector among the multiple subvectors is sent to the decoding device 200a with the unused bit number of encoded codes.

[0160] exist Figure 10 In the decoding apparatus 200a shown, the demultiplexing unit 201 demultiplexes the bit stream sent from the encoding apparatus 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 in the quantization parameters to the split multi-rate dot matrix inverse VQ unit 203, and outputs the codebook indicator value (encoded code) and unused bit number encoding code in the quantization parameters to the codebook indicator value inverse conversion unit 202.

[0161] For example, as described above, the codebook indicator inverse conversion unit 202 determines the encoding error signal S based on the codebook indicator (encoded code) and the unused bit number of encoded codes. e(f) The codebook indication value of the sub-vector at a specific position is output to the split multi-rate lattice inverse VQ unit 203, and information related to the codebook indication values ​​of the N sub-vectors is output.

[0162] The split multi-rate lattice inverse VQ unit 203, for example, based on global gain, codebook indicator value, and code vector index, encodes the frequency domain error signal S. e ̃(f) is used for decoding (or inverse quantization).

[0163] The frequency-to-time conversion unit 63, for example, uses a frequency-to-time conversion method such as IDFT or IMDCT to convert the decoded frequency domain coding error signal S e ̃(f) is converted into the time-domain coding error signal S e ̃(n).

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

[0165] Adder 65, for example, encodes the error signal S e ̃(n) and the synthesized signal S syn The time-domain signal S̃(n) is obtained by adding (n) together.

[0166] [Applications of TCX (Transform Coded eXcitation) coding]

[0167] For example, the split multi-rate matrix VQ of this embodiment can also be applied to TCX encoding (or, referred to as "TCX encoding and decoding"). Figure 11 This is a block diagram illustrating an example of the structure of the encoding device 100b in this case. Figure 12 This is a block diagram illustrating a structural example of the decoding device 200b.

[0168] In addition, Figure 11 and Figure 12 In the figures, the structural parts that perform the same processing as the encoding device 100 and the decoding device 200 are given the same reference numerals.

[0169] exist Figure 11 In the encoding apparatus 100b shown, 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. Furthermore, the LPC analysis utilizes, for example, the predictable properties of the time-domain signal.

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

[0171] The inverse quantization unit 73, for example, performs inverse quantization on the quantization index input from the quantization unit 72 to recover the LPC parameters.

[0172] The LPC inverse filter unit 74, for example, obtains the time-domain residual signal S by applying LPC inverse filtering to the input signal S(n). r (n), the recovered LPC parameters input from the inverse quantization unit 73 are used in the above LPC inverse filtering.

[0173] The time-to-frequency conversion unit 75, for example, uses a time-to-frequency conversion method such as DFT or MDCT to convert the residual signal S in the time domain... r (n) is converted into the residual signal S in the frequency domain. r (f).

[0174] As described above, the residual signal S in the frequency domain can be processed by the split multi-rate matrix VQ section 103 and the codebook indicator value conversion section 104. r (f) Quantization is performed. For example, the encoding device 100b can also replace the segmented residual signal S. r (f) The codebook indicator value (encoded code) of a specific subvector among the multiple subvectors is sent to the decoding device 200b with the unused bit number of encoded codes.

[0175] exist Figure 12 In the decoding device 200b shown, the demultiplexing unit 201 demultiplexes the bit stream sent 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 in the quantization parameters to the split multi-rate dot matrix inverse VQ unit 203, and outputs the codebook indicator value (encoded code) and the unused bit number encoding code in the quantization parameters to the codebook indicator value inverse conversion unit 202.

[0176] For example, as described above, the codebook indicator inverse conversion unit 202 determines the value of the residual signal S based on the codebook indicator (encoded code) and the unused bit encoding code. r (f) The codebook indication value of the sub-vector at a specific position is output to the split multi-rate lattice inverse VQ unit 203, and information related to the codebook indication values ​​of the N sub-vectors is output.

[0177] The split multi-rate lattice inverse VQ section 203, for example, is based on global gain, codebook indicator value, and code vector index, for the residual signal S in the frequency domain. r ̃(f) is used for decoding (or inverse quantization).

[0178] The frequency-to-time conversion unit 83, for example, uses a frequency-to-time conversion method such as IDFT or IMDCT to convert the decoded frequency domain residual signal S r ̃(f) is converted into the time-domain residual signal S r ̃(n).

[0179] The inverse quantization unit 84, for example, performs inverse quantization on the quantization index to recover the LPC parameters.

[0180] The LPC synthesis filter unit 85, for example, filters the residual signal S in the time domain. r The time-domain signal S̃(n) is obtained by applying LPC synthesis filtering, and the recovered LPC parameters are used in the above LPC synthesis filtering.

[0181] The above explains the application of split multi-rate lattice VQ to TCX encoding.

[0182] Furthermore, although LPC synthesis filtering is performed in the time domain in this embodiment, it can also be performed in the frequency domain. As an example of this type of TCX encoding, the Modified Discrete Cosine Transform-based Transform Coded Excitation (MDCT-based TCX) for EVS (Enhanced Voice Services) encoding and decoding can be cited.

[0183] [An example of a subvector at a specific position]

[0184] This illustrates an example of a subvector at a specific position.

[0185] Split multi-rate dot matrix VQ can also be applied to speech acoustic encoding and decoding processes, such as EVS (Enhanced Voice Services) encoding and decoding as described in Non-Patent Document 1.

[0186] For example, the split multi-rate lattice VQ can also be applied to the Algebraic Vector Quantizer (AVQ) in Non-Patent Document 1.

[0187] For example, in EVS encoding and decoding, AVQ is applied to various coding modes. For instance, in the 32kbit / s GC (Generic Coding) mode, where the coded frame is classified as a harmonic signal, the higher the frequency of the subvector (e.g., ...), the better. Figure 7 If the subvector v8 in the split multi-rate matrix VQ has a higher probability of having more encoded bits in the codebook indicator value, then the split multi-rate matrix VQ is more likely to have more encoded bits.

[0188] The reasons can be listed as follows: The encoding of GC mode for harmonic signals is more likely to occur in the rising part of the vowel; the higher the frequency band, the more likely the harmonic representation using an adaptive codebook is to be worse; or, the higher the frequency band, the more likely it is to generate harmonic shifts, and the greater the encoding error of the adaptive codebook. Therefore, in the encoding of signals in the frequency domain (e.g., the spectrum of prediction errors or residual signals), the higher the subvector in the region, the greater the signal energy, and the easier it is to choose a codebook with more bits used for quantization.

[0189] Therefore, for example, as described above, when the signal in the frequency domain is divided into eight sub-vectors v1 to v8, it is easy to allocate more bits for encoding the sub-vector v8, which is the highest frequency vector in the frequency domain among the multiple sub-vectors v1 to v8. Thus, as described above, sub-vector v8 can be set as a sub-vector at a specific position in both the encoding device 100 and the decoding device 200.

[0190] Thus, in the GC mode of EVS encoding and decoding, when the input signal (or coded frame) that is the object of vector quantization is a harmonic signal, the highest-frequency subvector among the multiple subvectors constituting the input signal can be set as a subvector for encoding the unused bits. This improves the effect of reducing the number of encoded bits when applying split multi-rate lattice VQ in GC-encoded AVQ.

[0191] Furthermore, in GC mode, when the input signal is not harmonic, split multi-rate lattice (VQ) is sometimes applied to the time-domain signal based on the EVS coding bit rate. Even in this case, setting the last subvector (in other words, the last subvector in time) to a predetermined subvector position is effective. The reason is that experiments have confirmed a tendency in this situation that the number of bits used for encoding unused bits is less than the number of bits used for encoding the codebook indicator value. That is, for frames classified into GC mode, in most cases, the number of unused bits remaining when quantizing the last subvector is small; therefore, encoding the unused bits can easily increase coding efficiency.

[0192] [Methods for reducing the number of encoded bits]

[0193] Next, an example of a method for reducing the number of encoded bits for a subvector at a specific position will be given.

[0194] <Method 1>

[0195] For example, encoding a subvector at a specific location (e.g., subvector v8) uses fewer bits (e.g., codebook Q0 or codebook Q2), while encoding using more unused bits (e.g., above a threshold such as 15 bits) may use more bits than encoding the codebook indicator value itself.

[0196] For example, if the number of bits (cb'fix) that can be used to encode a subvector at a specific position is less than 9 bits, the codebook that can be used for the subvector at that specific position (e.g., subvector v8) is codebook Q0 (the 1 bit with a codebook indicator value of "0") or, in special cases, codebook Q2 (the 1 bit with a codebook indicator value of "1").

[0197] For example, in any 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 even the method of one embodiment of this disclosure cannot reduce the number of encoded bits.

[0198] Therefore, for example, if the number of bits available for a subvector at a specific position is below a threshold (e.g., below 9 bits), the encoding device 100 can directly determine the codebook indication value of the subvector at the specific position as the encoding code (or encoding information) without applying the method of one embodiment of this disclosure (e.g., the method of encoding unused bits).

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

[0200] According to Method 1, the increase in the number of encoded bits can be suppressed and the encoding efficiency can be improved when the number of bits available for the subvector at a specific position is any number of bits.

[0201] In addition, as mentioned above, the number of bits that can be used in a subvector at a specific position is also information that can be calculated by the decoding device 200 based on other parameters (e.g., the total number of bits and the codebook indication value of other subvectors). Therefore, it is not necessary to set up signaling for switching the encoding method of method 1 (e.g., new information for notifying the switching).

[0202] <Method 2>

[0203] For example, when the number of usable bits (cb'fix) is any one of 11 to 13 bits, the codebook that can be used for a specific subvector (e.g., subvector v8) is either codebook Q0 (e.g., total number of bits used: 1 bit) or codebook Q2 (e.g., total number of bits used: 10 bits). Here, for example, when using codebook Q0 (e.g., total number of bits used: 1 bit), the number of unused bits is 10 to 12 bits, therefore, in Figure 4 In the example shown, the unused bit count is 3 bits. Therefore, the bit count increases by 2 bits compared to directly encoding the codebook indicator value (e.g., 1 bit).

[0204] In addition, such as Figure 1 As shown, the total number of bits used in the case of codebook Q2 is 10 bits. Therefore, when the number of bits that can be used is any one of 11 to 13 bits, it is clear that at least 1 to 3 bits are not used.

[0205] For the number of obviously unused bits in this usable bit count, it can be calculated, for example, as the remainder when the usable bit count is divided by 5. For example, in the case of 11, 12, or 13 usable bits, the remainder of 5 is 1 (=11%5), 2 (=12%5), or 3 (=13%5). Furthermore, the function "a%b" is a function that returns the remainder of b relative to a (e.g., also called "modulo operation"). Additionally, the divisor b (here, b=5) can be a value determined based on the proportion of the number of bits used by the codebook indicator value in the subvector encoding relative to the total number of bits used (or, the unit of variation of the total number of bits used).

[0206] Information related to this number of obviously unused bits may also be sent from the encoding device 100 to the decoding device 200 without being encoded information. Therefore, the encoding device 100 may also subtract the remainder of 5 relative to the number of usable bits (cb'fix) (in other words, the number of obviously unused bits) from the number of usable bits (cb'fix) and use the result of the subtraction to calculate the number of unused bits.

[0207] For example, when the number of usable bits is 11 to 13 bits, the remainder relative to 5 of the usable bit number is 1 to 3 bits. Therefore, the result of the subtraction operation is 10 bits. The encoding device 100 can, for example, set the 10 bits that are the result of the subtraction operation as usable bits. For example, in the encoding device 100, when codebook Q0 (1 bit) is used for the 10 usable bits, the number of unused bits is 9 bits. Therefore, in... Figure 4 In the example shown, the code is encoded as 2 bits of unused bits.

[0208] Therefore, the number of bits used for encoding unused bits (e.g., 2 bits) when the remainder after subtracting 5 from the number of usable bits is not used (e.g., 3 bits) is reduced. In other words, for example, compared to directly encoding the codebook indicator value (e.g., 1 bit), the increase in the number of bits can be suppressed to 1 bit when the remainder after subtracting 5 from the number of usable bits is used.

[0209] <Method 3>

[0210] For example, if the number of usable bits (cb'fix) is 10 bits, the number of unused bits will not be more than 10 bits (in other words, less than 9 bits), therefore, in Figure 4 In the example shown, it is acceptable to omit the "0" corresponding to the unused bits 5-9 of code "10". In other words, in this case, it is sufficient to distinguish between the unused bits 0-4 (code "0") and the unused bits 5-9 (code "1"). This encoding method can further reduce the number of bits used by the unused bits by 1 bit, thereby suppressing the increase in the number of bits.

[0211] Furthermore, when using this type of encoding, the increase in the number of bits can still be suppressed even when the number of usable bits is 9 bits or less. Therefore, for example, even when the number of usable bits is 9 bits or less, the encoding device 100 can directly set the codebook indicator value to the encoding code without switching to the method described in <Method 1>.

[0212] <Method 4>

[0213] For example, when the number of usable bits (cb'fix) is 8 bits or less, in Figure 1 In the example shown, the codebook indication value cannot be any value other than "0" (Q0). In this case, the decoding device 200 can determine the codebook indication value Q0 even if no information related to the codebook indication value is sent.

[0214] Therefore, for example, either the method of directly encoding the codebook indicator value or the method of encoding the unused number of bits, when the number of usable bits is 8 bits or less, encoding and decoding processes that do not transmit or receive information related to the codebook indicator value of codebook Q0 can be performed. Thus, the encoded information can be reduced by 1 bit.

[0215] <Method 5>

[0216] For example, when the number of usable bits (cb'fix) is 14 bits, in Figure 1In the example shown, the codebooks that can be used for a subvector at a specific position are codebook Q0, codebook Q2, and the special case codebook Q3. In the special case codebook Q3, for example, there are no unused bits, "11" (2 bits) can be used instead of "110" to represent the codebook indicator value, and it can be encoded with 14 bits together with the number of bits used in the code vector (12 bits).

[0217] Thus, even when the number of usable bits is 14, codebook Q3 can be used. Therefore, when the number of usable bits is 14, the 4 bits that are the remainder of 5 in <Method 2> will sometimes not reach the number of obviously remaining bits.

[0218] Thus, for example, when the number of usable bits is 13 bits or less, the increase of the number of encoded bits of 2 bits or more can be suppressed based on at least one of the methods described in <Method 1> to <Method 4> above. On the other hand, when the number of usable bits is 14 bits or more, the number of encoded bits will increase or decrease depending on the number of unused bits.

[0219] Furthermore, in multi-mode coding such as EVS encoding / decoding, it is rare for unused bits to constitute the majority of the available bits when using a split multi-rate lattice (VQ) in a specific coding mode (e.g., when the number of unused bits exceeds a threshold). Therefore, it is highly likely that unused bits below the threshold will be encoded, resulting in an average reduction in the number of bits. On the other hand, it is also possible that, in rare cases, the number of unused bits will increase, requiring an increase of more than 2 bits in the number of encoded bits. Therefore, the coding method can be switched based on methods such as the following.

[0220] For example, when using split multi-rate lattice VQ in GC mode AVQ of EVS encoding / decoding, there is a tendency for the number of unused bits to increase as the input signal approaches zero. Furthermore, the proximity of the input signal to zero can be determined, for example, based on the energy of the adaptive codebook vector or gain information multiplied by the excitation signal encoded through AVQ.

[0221] Therefore, for example, 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 directly determine the codebook indication value of the subvector at a specific position as the encoding code, without applying the method of one embodiment of this disclosure (e.g., the method of encoding without using a number of bits).

[0222] On the other hand, for example, if the energy of the adaptive codebook vector is above a threshold (e.g., 10), or if the gain of multiplying the excitation signal encoded by AVQ is above a threshold (e.g., 1.0), the encoding device 100 may determine the encoded code obtained by encoding the unused number of bits as encoded information.

[0223] It should be noted that the encoding device 100 may, for example, switch the encoding method based on a combination of the energy of the adaptive codebook vector and the gain multiplied by the excitation signal encoded via 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 the switching of the encoding method.

[0224] Additionally, since the gain multiplied by the excitation signal encoded by AVQ is uncertain before the AVQ encoding of the object frame ends, gain information from frames in the past can also be referenced.

[0225] Furthermore, while Method 5 illustrates, as an example, a method for switching encoding methods based on the energy or gain information of the adaptive codebook vector is not limited to this. Encoding methods can also be switched based on other parameters related to the increase or decrease of the number of unused bits. Alternatively, the encoding method can be switched based on a comparison between the number of unused bits and a threshold.

[0226] <Method 6>

[0227] The association between the number of bits and the code is not limited to Figure 4 The example shown.

[0228] For example, since the upper limit of the number of unused bits is the number of usable bits, it is also possible to have an encoding code (or code) with no more than the number of usable bits. In this case, a code with the upper limit of the number of unused bits may also be without a trailing 0 (e.g., a stop bit).

[0229] For example, when the number of usable bits is 20 bits and the number of unused bits is 19 bits (e.g., when the codebook indicator value is "0" (codebook Q0)), in Figure 4 In the example shown, the code assigned to the unused bits is "1110". On the other hand, when the number of usable bits is 20, the number of unused bits will not be more than 20 bits (for example, a code like "11110" with more than 4 consecutive 1s). Therefore, even without the trailing 0 assigned to the code "1110" with 19 unused bits (for example, even if it is "111"), the decoding device 200 can determine the number of unused bits.

[0230] Therefore, for example, it can also be applied Figure 13 The example shown is replaced Figure 4 The example shown illustrates the correlation between the number of unused bits and the code. Figure 13 The code shown is, for example, equivalent to Huffman code. Figure 13 In, with Figure 4 In comparison, the code "111" which does not use 15 to 19 bits has 1 less bit.

[0231] Thus, for example, the encoded code (or encoded information) obtained by encoding the unused bits can also be represented by Huffman code that sets the number of usable bits to the upper limit of the number of unused bits. For example, the encoding device 100 can also use Huffman code corresponding to the upper limit of the unused bits to encode the unused bits. As a result, the number of bits used to encode the codebook indicator value can be reduced by 1 bit.

[0232] In addition, for example, such as Figure 4 As shown, the code allocated to unused bits can be represented by a unary code. For example, in method 6, as described above, when the upper limit of the number of unused bits is set based on the number of usable bits, the least significant bit (LSB) of the unary code allocated to the number of unused bits, corresponding to the upper limit of the number of unused bits set based on the number of usable bits, can also be truncated (or deleted). For example, similar to the example above, when the number of usable bits is 20 bits, the upper limit of the number of unused bits is 19 bits, therefore, in Figure 4 In the example shown, the unary code corresponding to the upper limit of the number of unused bits is the 4 bits "1110". In method 6, the least significant bit "0" of the unary code "1110" can be truncated and set to "111", thus establishing the association between the number of unused bits and the code. Figure 13 The example shown is the same. Therefore, the number of bits used to encode the codebook indicator value can be reduced by 1 bit.

[0233] Here, provided the subvectors are appropriately bit-allocated, for a specific position of the subvector (e.g., subvector v8), it is easy to select a codebook indicator value with a longer code length (or number of bits) corresponding to the number of usable bits. Furthermore, if a longer codebook indicator value is selected, the number of unused bits will be closer to 0, making it easier to select an encoding code with a shorter number of unused bits. Utilizing this tendency in method 6, the encoding device 100 can calculate the maximum codebook indicator value usable for encoding the subvector based on the number of usable bits for that specific position, and represent the code allocated to the unused bits using a Huffman code or a unary code (e.g., a code obtained by truncating the LSB of a unary code allocated to the upper limit of unused bits). Thus, it is possible to reduce the number of unused encoded bits.

[0234] Furthermore, as explained in <Method 2>, when the number of usable bits is 10 or more, the bits of the remainder of 5 are likely to be unused. Therefore, in Method 6, the number of usable bits can also be the value obtained by subtracting the remainder of 5.

[0235] Furthermore, the probability distribution related to the encoding results of unused bits in EVS encoding and decoding sometimes (e.g., when GC mode is selected) takes the following form: the probability of 5-9 unused bits is the highest, followed by 0-4 unused bits, and then 10-14 bits and beyond. As a method for allocating unused bits in this case, for example, it is also possible to change the code. Figure 4 The code “0” with 0-4 unused bits and the code “10” with 5-9 unused bits are shown (e.g., Figure 14 In other words, the codes obtained by encoding the unused bits of each candidate can have fewer bits corresponding to the candidate with a higher probability of occurrence. Figure 14 In the example shown, fewer bits are allocated to unused bits with high probability of occurrence, thus reducing the average number of encoded bits. Furthermore, Figure 14 One example is that different numbers of bits can be allocated to codes based on the probability of unused bits occurring. Regarding this allocation, as long as the optimal allocation method is predetermined according to the encoding pattern, information related to the allocation method does not need to be encoded or transmitted.

[0236] In addition, for example Figure 4 , Figure 13 and Figure 14 The code shown for allocating unused bits, while unary with "0" as the stop bit, is not limited to this. For example, it could also be set to interleaving. Figure 4 , Figure 13 and Figure 14 The code shown is the result of assigning "1" and "0" to the unused bits.

[0237] Furthermore, Huffman coding can be applied to methods that directly encode codebook indicator values, for example, when switching between encoding methods such as <Method 1> or <Method 5>. Figure 1 In the example shown, with 23 bits available, the maximum codebook for a specific subvector is Q4 (total bits used: 20 bits). At this point, in... Figure 1 In the example shown, the codebook indicator for Q4 is the 4 bits "1110". Here, with 23 bits available, codebooks above Q5 (totaling more than 25 bits) will not be used. Therefore, for example, as... Figure 15 As shown, the codebook indicator value of Q4 can also be "111" obtained by omitting the "0" from "1110". This reduces the number of encoded bits for the codebook indicator value.

[0238] The above describes methods 1 through 6 respectively.

[0239] Furthermore, in one embodiment of this disclosure, the codebook list is not limited to Figure 1 In the example shown, the codebook indicator value and the code value of the code vector index in the codebook, as well as the number of bits used (or, the total number of bits used), can also be other values. Alternatively, the thresholds described in <Method 1> to <Method 6> above can be set according to the list of codebooks used for encoding and decoding.

[0240] Additionally, for example, although in Figure 1 The document describes the case where the number of bits used in each codebook indicator value is 1 / 5 of the total number of bits used (in other words, the divisor is 5 when using the remainder), but it is not limited to this.

[0241] Furthermore, although the above embodiment describes the case where the number of sub-vectors of the segmented input signal S(f) is 8, the number of sub-vectors of the segmented input signal S(f) is not limited to 8.

[0242] The above describes the implementation methods of this disclosure.

[0243] Furthermore, this disclosure can be implemented in software, hardware, or software in cooperation with hardware. The functional blocks used in the above embodiments are implemented partially or entirely as LSIs (Large Scale Integrations), and the processes described in the above embodiments can also be controlled partially or entirely by a single LSI or a combination of LSIs. An LSI can be composed of individual chips, or it can be composed of a single chip containing some or all of the functional blocks. An LSI can also include data input and output. Depending on the degree of integration, an LSI can also be called an "IC (Integrated Circuit)," a "System LSI," a "Super LSI," or an "Ultra LSI." The method of integrated circuit implementation is not limited to LSIs; it can also be implemented using dedicated circuits, general-purpose processors, or special-purpose processors. Additionally, FPGAs (Field Programmable Gate Arrays) that can be programmed after LSI fabrication, or reconfigurable processors that can reconfigure the connections or settings of the circuit blocks within an LSI, can also be used. This disclosure can also be implemented for digital or analog processing. Furthermore, if advancements in semiconductor technology or the emergence of other derivative technologies lead to integrated circuit technologies that can replace LSIs, these technologies could also be used to integrate functional blocks. There are also possibilities for applications such as biotechnology.

[0244] This disclosure can be implemented in all kinds of devices, apparatuses, and systems with communication capabilities (collectively referred to as "communication devices"). A communication device may also include a wireless transceiver and processing / control circuitry. The wireless transceiver may also include a receiving unit and a transmitting unit, or perform the functions of these units. The wireless transceiver (transmitting unit, receiving unit) may also include an RF (Radio Frequency) module and one or more antennas. The RF module may also include an amplifier, an RF modulator / demodulator, or similar devices. Non-limiting examples of communication devices include: telephones (mobile phones, smartphones, etc.), tablet computers, personal computers (PCs) (laptops, desktops, laptops, etc.), cameras (digital cameras, digital camcorders, etc.), digital players (digital audio / video players, etc.), wearable devices (wearable cameras, smartwatches, tracking devices, etc.), game consoles, e-book readers, remote health / telemedicine (remote healthcare / medical prescription) devices, vehicles or transportation vehicles with communication capabilities (cars, airplanes, ships, etc.), and combinations of the various devices described above.

[0245] Communication devices are not limited to portable or movable devices, but also include all kinds of devices, equipment, and systems that cannot be carried or fixed. Examples include: smart home devices (home appliances, lighting equipment, smart meters or meters, control panels, etc.), vending machines, and all other "things" that can exist on the IoT (Internet of Things) network.

[0246] In addition to data communication via cellular systems, wireless LAN (Local Area Network) systems, and communication satellite systems, communication also includes data communication via a combination of these systems.

[0247] In addition, the communication device also includes devices such as controllers or sensors that are connected or linked to a communication device performing the communication functions described in this disclosure. For example, it includes a controller or sensor that generates control signals or data signals used by the communication device to perform the communication functions of the communication device.

[0248] In addition, the communication device includes infrastructure equipment that communicates with or controls the various devices described above (not limited to these), such as base stations, access points, and all other devices, equipment, and systems.

[0249] An encoding apparatus according to an embodiment of this disclosure includes: a quantization circuit that generates quantization parameters, the quantization parameters including first information related to a codebook of vector quantization and second information related to code vectors contained in the codebook; and a control circuit that uses a second number of bits to control the encoding of the first information for a sub-vector, the second number of bits being the difference between a first number of bits available for encoding the sub-vector in the vector quantization and the number of bits of the quantization parameters of the sub-vector.

[0250] In one embodiment of this disclosure, the control circuit determines the information obtained by encoding the second number of bits as encoded information.

[0251] In one embodiment of this disclosure, the information obtained by encoding the second number of bits is represented by a Huffman code that sets the first number of bits as the upper limit of the second number of bits.

[0252] In one embodiment of this 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 of the second number of bits set based on the first number of bits is deleted.

[0253] In one embodiment of this disclosure, the information obtained by encoding the candidates of the second number of bits has fewer bits corresponding to the candidate with a higher probability of occurrence.

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

[0255] In one embodiment of this disclosure, in the Generic Coding mode of Enhanced Voice Services (EVS) codec, the subvector is the most frequent (or, temporally last) subvector among a plurality of subvectors formed by segmenting the signal.

[0256] In one embodiment of this disclosure, when the energy of the code vector for the sub-vector is above a threshold, the control circuit determines the information obtained by encoding the second number of bits as encoded information; when the energy of the code vector is less than the threshold, the control circuit determines the first information as encoded information.

[0257] In one embodiment of this disclosure, when the gain of the subvector is above a threshold, the control circuit determines the information obtained by encoding the second number of bits as encoded information; when the gain is less than the threshold, the control circuit determines the first information as encoded information.

[0258] In one embodiment of this disclosure, the second number of bits is the number obtained by subtracting the number of bits of the quantization parameter of the subvector from the remainder of the first number of bits divided by 5.

[0259] A decoding apparatus according to an embodiment of this disclosure includes: a control circuit that controls the decoding of the first information of a subvector using a second number of bits based on the difference between a first number of bits and a number of bits containing a quantization parameter containing first information and second information, the first number of bits being the number of bits available for encoding the subvector in vector quantization, the first information being information related to the codebook of the subvector, and the second information being information related to code vectors contained in the codebook; and an inverse quantization circuit that performs vector inverse quantization based on the first information.

[0260] In an embodiment of the encoding method of this disclosure, an encoding device generates quantization parameters, which include first information related to a codebook of vector quantization and second information related to code vectors contained in the codebook. Furthermore, a second number of bits is used to control the encoding of the first information for a sub-vector. The second number of bits is the difference between the first number of bits that can be used for encoding the sub-vector in the vector quantization and the number of bits of the quantization parameters of the sub-vector.

[0261] In a decoding method according to an embodiment of this disclosure, the decoding device uses a second number of bits based on the difference between a first number of bits and the number of bits of a quantization parameter containing first information and second information to control the decoding of the first information of a sub-vector. The first number of bits is the number of bits that can be used for encoding the sub-vector in the vector quantization. The first information is information related to the codebook of the sub-vector, and the second information is information related to the code vectors contained in the codebook. Furthermore, vector inverse quantization is performed based on the first information.

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

[0263] Industrial applicability

[0264] One embodiment of this disclosure is useful for encoding systems, etc.

Claims

1. An encoding device comprising: A quantization circuit, for each of the N sub-vectors obtained by segmenting the signal in the frequency domain, generates quantization parameters including first information related to the codebook of the vector quantization and second information related to the code vectors contained in the codebook, where N is an integer greater than 2; and The control circuit calculates the number of unused bits in a subvector at a predetermined position among the N subvectors, based on the difference between the number of usable bits for encoding the subvector (obtained by subtracting the number of bits used in the encoding of the N-1 subvectors other than the subvector at the predetermined position from the total number of bits available for encoding the signal in the frequency domain) and the number of bits required for encoding the quantization parameters of the subvector. The control circuit then controls the encoding of the quantization parameters to encode the unused bits. The number of unused bits is calculated based on the remainder of subtracting 5 from the number of available bits.

2. The encoding device as claimed in claim 1, wherein, The control circuit determines the information obtained by encoding the unused bits as encoded information.

3. The encoding device as claimed in claim 2, wherein, The information obtained by encoding the unused bits is represented by Huffman codes that set the number of usable bits to the upper limit of the unused bits.

4. The encoding device as claimed in claim 2, wherein, The information obtained by encoding the unused bits is represented by a unary code, and The least significant bit of the unary code corresponding to the upper limit of the number of unused bits set based on the number of usable bits is deleted.

5. The encoding device as claimed in claim 2, wherein, The information obtained by encoding the candidates with unused bits has fewer bits corresponding to the candidates with higher probability of occurrence.

6. The encoding device as claimed in claim 1, wherein, If the number of usable bits is greater than the threshold, the control circuit will determine the information obtained by encoding the unused bits as the encoded information. When the number of usable bits is below the threshold, the control circuit determines the information obtained by encoding the first information as the encoded information.

7. The encoding device as claimed in claim 1, wherein, In the general coding mode of enhanced voice service codec, when the signal of the object of vector quantization is a harmonic signal, the sub-vector at the predetermined position is the sub-vector with the highest frequency or the last sub-vector in time among the N sub-vectors.

8. The encoding device as claimed in claim 1, wherein, When the energy of the code vector for the sub-vector is above a threshold, the control circuit determines the information obtained by encoding the unused bits as encoded information; when the energy of the code vector is less than the threshold, the control circuit determines the first information as encoded information.

9. The encoding device as claimed in claim 1, wherein, When the gain of the subvector is above a threshold, the control circuit determines the information obtained by encoding the unused bits as encoded information; when the gain is less than the threshold, the control circuit determines the first information as encoded information.

10. An encoding method, performed by an encoding device: For each of the N sub-vectors obtained by segmenting the signal in the frequency domain, generate quantization parameters including first information related to the codebook of vector quantization and second information related to the code vectors contained in the codebook, where N is an integer greater than 2. In the N subvectors at predetermined positions, the number of unused bits is calculated based on the difference between the number of usable bits for encoding the subvector (obtained by subtracting the number of bits used in the encoding of the N-1 subvectors other than the subvector at the predetermined position from the total number of bits available for encoding the signal in the frequency domain) and the number of bits required for encoding the quantization parameters of the subvector. The encoding of the quantization parameters is then controlled to encode the unused bits. The number of unused bits is calculated based on the remainder of subtracting 5 from the number of available bits.