US 20030135365 A1 Abstract In a Noise Feedback Coding (NFC) system having a corresponding ZERO-STATE filter structure, the first ZERO-STATE filter structure including multiple filters, a method of producing a ZERO-STATE response error vector. The method includes: (a) transforming the first ZERO-STATE filter structure to a second ZERO-STATE filter structure including only an all-zero filter, the all-zero filter having a filter response substantially equivalent to a filter response of the ZERO-STATE filter structure including multiple filters; and (b) filtering a VQ codevector with the all-zero filter to produce the ZERO-STATE response error vector corresponding to the VQ codevector.
Claims(15) 1. In a Noise Feedback Coding (NFC) system having a corresponding ZERO-STATE filter structure, the ZERO-STATE filter structure including multiple filters, a method of producing a ZERO-STATE response error vector, comprising:
(a) transforming the ZERO-STATE filter structure including multiple filters to a ZERO-STATE filter structure including only an all-zero filter, the all-zero filter having a filter response substantially equivalent to a filter response of the ZERO-STATE filter structure including multiple filters; and (b) filtering a VQ codevector with the all-zero filter to produce the ZERO-STATE response error vector corresponding to the VQ codevector. 2. The method of F(z)=N(z)−1 where N(z) is a noise shaping (NS) filter of the form: where t _{i }and u_{i }are i^{th }filter coefficients of an all-zero section and an all-pole section of the NS filter, respectively, and K _{T }and K_{U }are the orders of the all-zero section and the all-pole section, respectively. 3. The method of _{i }and u_{i }are related to prediction coefficients, a_{i}, according to: where γ
_{z} ^{i }and γ_{p} ^{i }are bandwidth expansion factors of the all-zero and all-pole sections, respectively, and N
_{NFF }is the order of the NS filter. 6. The method of 8. The method of _{zs}(n), corresponding to a VQ codevector, denoted u_{q}(n), where n=0,1, . . . K−1, according to: 9. The method of _{i}, i=0,1, . . . K−1 excludes the gain-scaling. 10. The method of _{q}(n) is a non-scaled VQ codevector and h_{i}, i=0,1, . . . K−1 includes the gain-scaling. 11. The method of 12. The method of (c) repeating step (b) for each of the remaining N−1 VQ codevectors, to produce N ZERO-STATE response error vectors; (d) producing a ZERO-INPUT response error vector common to each of the N VQ codevectors; and (e) selecting a preferred one of the N VQ codevectors corresponding to an input signal vector based on the ZERO-INPUT response error vector and the N ZERO-STATE response error vectors. 13. In a Noise Feedback Coding (NFC) system having a corresponding ZERO-STATE filter structure, the ZERO-STATE filter structure including a noise feedback (NF) loop, the NF loop including a NF filter, a method of excitation quantization corresponding to an input signal vector, comprising:
(a) separately filtering each of N VQ codevectors with an all-zero filter having a filter response that is substantially equivalent to a filter response of the ZERO-STATE filter structure including the noise feedback filter, to produce N ZERO-STATE response error vectors; (b) producing a ZERO-INPUT response error vector common to each of N VQ codevectors; and (c) selecting a preferred one of the N VQ codevectors corresponding to the input signal vector based on the ZERO-INPUT response error vector and the N ZERO-STATE response error vectors. 14. The method of prior to step (a), transforming the ZERO-STATE filter structure to a filter structure including only the all-zero filter. 15. The method of Description [0001] This application claims priority to Provisional Application No. 60/344,375, filed Jan. 4, 2002, entitled “Improved Efficient Excitation Quantization in Noise Feedback Coding With General Noise Shaping,” which is incorporated herein in its entirety by reference. [0002] 1. Field of the Invention [0003] This invention relates generally to digital communications, and more particularly, to digital coding (or compression) of speech and/or audio signals. [0004] 2. Related Art [0005] In speech or audio coding, the coder encodes the input speech or audio signal into a digital bit stream for transmission or storage, and the decoder decodes the bit stream into an output speech or audio signal. The combination of the coder and the decoder is called a codec. [0006] In the field of speech coding, predictive coding is a very popular technique. Prediction of the input waveform is used to remove redundancy from the waveform, and instead of quantizing an input speech waveform directly, a residual signal waveform is quantized. The predictor(s) used in predictive coding can be either backward adaptive or forward adaptive predictors. Backward adaptive predictors do not require any side information as they are derived from a previously quantized waveform, and therefore can be derived at a decoder. On the other hand, forward adaptive predictor(s) require side information to be transmitted to the decoder as they are derived from the input waveform, which is not available at the decoder. [0007] In the field of speech coding, two types of predictors are commonly used. A first type of predictor is called a short-term predictor. It is aimed at removing redundancy between nearby samples in the input waveform. This is equivalent to renioving a spectral envelope of the input waveform. A second type of predictor is often referred as a long-term predictor. It removes redundancy between samples further apart, typically spaced by a time difference that is constant for a suitable duration. For speech, this time difference is typically equivalent to a local pitch period of the speech signal, and consequently the long-term predictor is often referred as a pitch predictor. The long-term predictor removes a harmonic structure of the input waveform. A residual signal remaining after the removal of redundancy by the predictor(s) is quantized along with any information needed to reconstruct the predictor(s) at the decoder. [0008] This quantization of the residual signal provides a series of bits representing a compressed version of the residual signal. This compressed version of the residual signal is often denoted the excitation signal and is used to reconstruct an approximation of the input waveform at the decoder in combination with the predictor(s). Generating the series of bits representing the excitation signal is commonly denoted excitation quantization and generally requires the search for, and selection of, a best or preferred candidate excitation among a set of candidate excitations with respect to some cost function. The search and selection require a number of mathematical operations to be performed, which translates into a certain computational complexity when the operations are implemented on a signal processing device. It is advantageous to minimize the number of mathematical operations in order to minimize a power consumption, and maximize a processing bandwidth, of the signal processing device. [0009] Excitation quantization in predictive coding can be based on a sample-by-sample quantization of the excitation. This is referred to as Scalar Quantization (SQ). Techniques for performing Scalar Quantization of the excitation are relatively simple, and thus, the computational complexity associated with SQ is relatively manageable. [0010] Alternatively, the excitation can be quantized based on groups of samples. Quantizing groups of samples is often referred to as Vector Quantization (VQ), and when applied to the excitation, simply as excitation VQ. The use of VQ can provide superior performance to SQ, and may be necessary when the number of coding bits per residual signal sample becomes small (typically less than two bits per sample). Also, VQ can provide a greater flexibility in bit-allocation as compared to SQ, since a fractional number of bits per sample can be used. However, excitation VQ can be relatively complex when compared to excitation SQ. Therefore, there is need to reduce the complexity of excitation VQ as used in a predictive coding environment. [0011] One type of predictive coding is Noise Feedback Coding (NFC), wherein noise feedback filtering is used to shape coding noise, in order to improve a perceptual quality of quantized speech. Therefore, it would be advantageous to use excitation VQ with noise feedback coding, and further, to do so in a computationally efficient manner. [0012] Summary [0013] The present invention includes efficient methods related to excitation quantization in noise feedback coding, for example, in NFC systems, where the short-term shaping of the coding noise is generalized. The methods are described primarily in Section IX.D and in connection with FIGS. [0014] In an embodiment, the method is performed in a Noise Feedback Coding (NFC) system having a corresponding ZERO-STATE filter structure, the ZERO-STATE filter structure including multiple filters. The method includes: (a) transforming the ZERO-STATE filter structure to a second ZERO-STATE filter structure including only an all-zero filter, the all-zero filter having a filter response substantially equivalent to a filter response of the ZERO-STATE filter structure including multiple filters; and (b) filtering a VQ codevector with the all-zero filter to produce the ZERO-STATE response error vector corresponding to the VQ codevector. [0015] Terminology [0016] Predictor: [0017] A predictor P as referred to herein predicts a current signal value (e.g., a current sample) based on previous or past signal values (e.g., past samples). A predictor can be a short-term predictor or a long-term predictor. A short-term signal predictor (e.g., a short tern speech predictor) can predict a current signal sample (e.g., speech sample) based on adjacent signal samples from the immediate past. With respect to speech signals, such “short-term” predicting removes redundancies between, for example, adjacent or close-in signal samples. A long-term signal predictor can predict a current signal sample based on signal samples from the relatively distant past. With respect to a speech signal, such “long-term” predicting removes redundancies between relatively distant signal samples. For example, a long-term speech predictor can remove redundancies between distant speech samples due to a pitch periodicity of the speech signal. [0018] The phrases “a predictor P predicts a signal s(n) to produce a signal ps(n)” means the same as the phrase “a predictor P makes a prediction ps(n) of a signal s(n).” Also, a predictor can be considered equivalent to a predictive filter that predictively filters an input signal to produce a predictively filtered output signal. [0019] Coding Noise and Filtering Thereof: [0020] Often, a speech signal can be characterized in part by spectral characteristics (i.e., the frequency spectrum) of the speech signal. Two known spectral characteristics include 1) what is referred to as a harmonic fine structure or line frequencies of the speech signal, and 2) a spectral envelope of the speech signal. The harmonic fine structure includes, for example, pitch harmonics, and is considered a long-term (spectral) characteristic of the speech signal. On the other hand, the spectral envelope of the speech signal is considered a short-term (spectral) characteristic of the speech signal. [0021] Coding a speech signal can cause audible noise when the encoded speech is decoded by a decoder. The audible noise arises because the coded speech signal includes coding noise introduced by the speech coding process, for example, by quantizing signals in the encoding process. The coding noise can have spectral characteristics (i.e., a spectrum) different from the spectral characteristics (i.e., spectrum) of natural speech (as characterized above). Such audible coding noise can be reduced by spectrally shaping the coding noise (i.e., shaping the coding noise spectrum) such that it corresponds to or follows to some extent the spectral characteristics (i.e., spectrum) of the speech signal. This is referred to as “spectral noise shaping” of the coding noise, or “shaping the coding noise spectrum.” The coding noise is shaped to follow the speech signal spectrum only “to some extent” because it is not necessary for the coding noise spectrum to exactly follow the speech signal spectrum. Rather, the coding noise spectrum is shaped sufficiently to reduce audible noise, thereby improving the perceptual quality of the decoded speech. [0022] Accordingly, shaping the coding noise spectrum (i.e. spectrally shaping the coding noise) to follow the harmonic fine structure (i.e., long-term spectral characteristic) of the speech signal is referred to as “harmonic noise (spectral) shaping” or “long-term noise (spectral) shaping.” Also, shaping the coding noise spectrum to follow the spectral envelope (i.e., short-term spectral characteristic) of the speech signal is referred to a “short-term noise (spectral) shaping” or “envelope noise (spectral) shaping.” [0023] Noise feedback filters can be used to spectrally shape the coding noise to follow the spectral characteristics of the speech signal, so as to reduce the above mentioned audible noise. For example, a short-term noise feedback filter can short-term filter coding noise to spectrally shape the coding noise to follow the short-term spectral characteristic (i.e., the envelope) of the speech signal. On the other hand, a long-term noise feedback filter can long-term filter coding noise to spectrally shape the coding noise to follow the long-term spectral characteristic (i.e., the harmonic fine structure or pitch harmonics) of the speech signal. Therefore, short-term noise feedback filters can effect short-term or envelope noise spectral shaping of the coding noise, while long-term noise feedback filters can effect long-term or harmonic noise spectral shaping of the coding noise, in the present invention. [0024] The present invention is described with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements. [0025]FIG. 1 is a block diagram of a first conventional noise feedback coding structure or codec. [0026]FIG. 1A is a block diagram of an example NFC structure or codec using composite short-term and long-term predictors and a composite short-term and long-term noise feedback filter, according to a first embodiment of the present invention. [0027]FIG. 2 is a block diagram of a second conventional noise feedback coding structure or codec. [0028]FIG. 2A is a block diagram of an example NFC structure or codec using a composite short-tern and long-term predictor and a composite short-term and long-term noise feedback filter, according to a second embodiment of the present invention. [0029]FIG. 3 is a block diagram of a first example arrangement of an example NFC structure or codec, according to a third embodiment of the present invention. [0030]FIG. 4 is a block diagram of a first example arrangement of an example nested two-stage NFC structure or codec, according to a fourth embodiment of the present invention. [0031]FIG. 5 is a block diagram of a first example arrangement of an example nested two-stage NFC structure or codec, according to a fifth embodiment of the present invention. [0032]FIG. 5A is a block diagram of an alternative but mathematically equivalent signal combining arrangement corresponding to a signal combining arrangement of FIG. 5. [0033]FIG. 6 is a block diagram of a first example arrangement of an example nested two-stage NFC structure or codec, according to a sixth embodiment of the present invention. [0034]FIG. 6A is an example method of coding a speech or audio signal using any one of the codecs of FIGS. [0035]FIG. 6B is a detailed method corresponding to a predictive quantizing step of FIG. 6A. [0036]FIG. 7 is a detailed block diagram of an example NFC encoding structure or coder based on the codec of FIG. 5, according to a preferred embodiment of the present invention. [0037]FIG. 8 is a detailed block diagram of an example NFC decoding structure or decoder for decoding encoded speech signals encoded using the coder of FIG. 7. [0038]FIG. 9 is a detailed block diagram of a short-term linear predictive analysis and quantization signal processing block of the coder of FIG. 7. The signal processing block obtains coefficients for a short-term predictor and a short-term noise feedback filter of the coder of FIG. 7. [0039]FIG. 10 is a detailed block diagram of a Line Spectrum Pair (LSP) quantizer and encoder signal processing block of the short-term linear predictive analysis and quantization signal processing block of FIG. 9. [0040]FIG. 11 is a detailed block diagram of a long-term linear predictive analysis and quantization signal processing block of the coder of FIG. 7. The signal processing block obtains coefficients for a long-term predictor and a long-term noise feedback filter of the coder of FIG. 7. [0041]FIG. 12 is a detailed block diagram of a prediction residual quantizer of the coder of FIG. 7. [0042]FIG. 13A is a block diagram of an example NFC system for searching through N VQ codevectors stored in a VQ codebook for a preferred one of the N VQ codevectors to be used for coding a speech or audio signal. [0043]FIG. 13B is a flow diagram of an example method, corresponding to the NFC system of FIG. 13A, of searching N VQ codevectors stored in VQ codebook for a preferred one of the N VQ codevectors to be used in coding a speech or audio signal. [0044]FIG. 13C is a block diagram of a portion of an example codec structure or system used in an example prediction residual VQ codebook search of the codec of FIG. 5. [0045]FIG. 13D is an example method implemented by the system of FIG. 13C. [0046]FIG. 13E is an example method executed concurrently with the method of FIG. 13D using the system of FIG. 13C. [0047]FIG. 14A is a block diagram of an example NFC system for efficiently searching through N VQ codevectors stored in a VQ codebook for a preferred one of the N VQ codevectors to be used for coding a speech or audio signal. [0048]FIG. 14B is an example method implemented using the system of FIG. 14A. [0049]FIG. 14C is an example filter structure, during a calculation of a ZERO-INPUT response of a quantization error signal, used in the example prediction residual VQ codebook search corresponding to FIG. 13C. [0050]FIG. 14D is an example method of deriving a ZERO-INPUT response using the ZERO-INPUT response filter structure of FIG. 14C. [0051]FIG. 14E is another example method of deriving a ZERO-INPUT response, executed concurrently with the method of FIG. 14D, using the ZERO-INPUT response filter structure of FIG. 14C. [0052]FIG. 15A is a block diagram of an example filter structure, during a calculation of a ZERO-STATE response of a quantization error signal, used in the example prediction residual VQ codebook search corresponding to FIGS. 13C and 14C. [0053]FIG. 15B is a flowchart of an example method of deriving a ZERO-STATE response using the filter structure of FIG. 15A. [0054]FIG. 16A is a block diagram of a filter structure according to another embodiment of the ZERO-STATE response filter structure of FIG. 4A. [0055]FIG. 16B is a flowchart of an example method of deriving a ZERO-STATE response using the filter structure of FIG. 16A. [0056]FIG. 17 is a flowchart of an example method of reducing the computational complexity associated with searching a VQ codebook. [0057]FIG. 18 is a flow chart of an example method of quantizing multiple vectors in a master vector using correlation techniques, according to the present invention. [0058]FIG. 19 is a flowchart of an example method using an unsigned VQ codebook, expanding on the method of FIG. 18. [0059]FIG. 20 is a flow chart of an example method using a signed VQ codebook, expanding on the method of FIG. 18. [0060]FIG. 21 is a diagram of an example NFC system used for excitation quantization corresponding to the NFC system of FIG. 6. [0061]FIG. 22 is a diagram of an example NFC system corresponding to the NFC system of FIG. 21. [0062]FIG. 23 is a diagram of an example ZERO-STATE filter structure corresponding to the NFC system of FIGS. 21 and 22. [0063]FIG. 24 is a diagram of a simplified ZERO-STATE filter structure corresponding to the filter structure of FIG. 23. [0064]FIG. 25 is a diagram of an example ZERO-INPUT filter structure corresponding to the NFC filter structure of FIG. 22. [0065]FIG. 26 is a diagram of an example NFC filter structure corresponding to the NFC system of FIGS. 21 and 22, and used for updating filter memories. [0066]FIG. 27 is a diagram of an example ZERO-STATE NFC filter structure used for calculating ZERO-STATE contributions to filter memories in the NFC filter structure of FIG. 26. [0067]FIG. 28 is a diagram of an example ZERO-INPUT NFC filter structure used for calculating ZERO-INPUT contributions to filter memories in the NFC filter structure of FIG. 26. [0068]FIG. 29 is a flow chart of an example method of excitation quantization corresponding to an input vector, using a zero-state calculation based on a transformed ZERO-STATE NFC filter structure. [0069]FIG. 30 is a flow chart of an example method performed in a noise feedback coder with a corresponding ZERO-STATE filter structure, where the ZERO-STATE filter structure includes multiple filters. [0070]FIG. 31 is a flow chart of an example method of updating one or more filter memories in a noise feedback coder, such as the noise feedback coder of FIG. 21. [0071]FIG. 32 is a block diagram of a computer system on which the present invention can be implemented. [0072] I. Conventional Noise Feedback Coding [0073] A. First Conventional Codec [0074] B. Second Conventional Codec [0075] II. Two-Stage Noise Feedback Coding [0076] A. Composite Codec Embodiments [0077] 1. First Codec Embodiment—Composite Codec [0078] 2. Second Codec Embodiment Alternative Composite Codec [0079] B. Codec Embodiments Using Separate Short-Term and Long-Term Predictors (Two-Stage Prediction) and Noise Feedback Coding [0080] 1. Third Codec Embodiment—Two Stage Prediction With One Stage Noise Feedback [0081] 2. Fourth Codec Embodiment—Two Stage Prediction With Two Stage Noise Feedback (Nested Two Stage Feedback Coding) [0082] 3. Fifth Codec Embodiment—Two Stag Prediction With Two Stage Noise Feedback (Nested Two Stage Feedback Coding) [0083] 4. Sixth Codec Embodiment Two Stage Prediction With Two Stage Noise Feedback (Nested Two Stage Feedback Coding) [0084] 5. Coding Method [0085] III. Overview of Preferred Embodiment (Based on the Fifth Embodiment Above) [0086] IV. Short Term Linear Predictive Analysis and Quantization [0087] V. Short-Term Linear Prediction of input Signal [0088] VI. Long-Term Linear Predictive Analysis and Quantization [0089] VII. Quantization of Residual Gain [0090] VIII. Scalar Quantization of Linear Prediction Residual Signal [0091] IX. Vector Quantization of Linear Prediction Residual Signal [0092] A. General VQ Search [0093] 1. High-Level Embodiment [0094] a. System [0095] b. Methods [0096] 2. Example Specific Embodiment [0097] a. System [0098] b. Methods [0099] B. Fast VQ Search [0100] 1. High-Level Embodiment [0101] a. System [0102] b. Methods [0103] 2. Example Specific Embodiment [0104] a. ZERO-INPUT Response [0105] b. ZERO-STATE Response [0106] 1. ZERO-STATE Response—First Embodiment [0107] 2. ZERO-STATE Response—Second Embodiment [0108] 3. Further Reduction in Computational Complexity [0109] C. Further Fast VQ Search Embodiments [0110] 1. Fast VQ Search of General (e.g., Unsigned) Excitation Codebook in NFC System [0111] a. Straightforward Method [0112] b. Fast VQ Search of General Excitation Codebook Using Correlation Technique [0113] 2. Fast VQ Search of Signed Excitation Codebook in NFC System ZERO-INPUT Response [0114] a. Straightforward Method [0115] b. Fast VQ Search of Signed Excitation Codebook Using Correlation Technique [0116] 3. Combination of Efficient Search Methods [0117] 4. Method Flow Charts [0118] 5. Comparison of Search Method Complexities [0119] D. Further Embodiments Related to VQ Searching in NFC with Generalized Noise Shaping [0120] 1. Overview [0121] 2. ZERO-STATE Calculation [0122] 3. ZERO-INPUT Calculation [0123] 4. VQ Search [0124] 5. Filter Memory Update Process [0125] 6. Method Flow Charts [0126] a. ZERO-STATE Calculation [0127] b. Filter Memory Update Process [0128] X. Decoder Operations [0129] XI. Hardware and Software Implementations [0130] XII. Conclusion [0131] I. Conventional Noise Feedback Coding [0132] Before describing the present invention, it is helpful to first describe the conventional noise feedback coding schemes. [0133] A. First Conventional Coder [0134]FIG. 1 is a block diagram of a first conventional NFC structure or codec [0135] Codec [0136] Combiner [0137] A decoder portion of codec [0138] The following is an analysis of codec [0139] where M is the predictor order and a [0140] This form of noise feedback filter was used by B. S. Atal and M. R. Schroeder in their publication “Predictive Coding of Speech Signals and Subjective Error Criteria,” [0141] With the NFC codec structure [0142] or in terms of z-transform representation,
[0143] If the encoding bit rate of the quantizer [0144] B. Second Conventional Codec [0145]FIG. 2 is a block diagram of a second conventional NFC structure or codec [0146] Codec [0147] Exiting quantizer [0148] Codec structure [0149] The codec structures in FIGS. 1 and 2 described above can each be viewed as a predictive codec with an additional noise feedback loop. In FIG. 1, a noise feedback loop is added to the structure of an “open-loop DPCM” codec, where the predictor in the encoder uses unquantized original input signal as its input. In FIG. 2, on the other hand, a noise feedback loop is added to the structure of a “closed-loop DPCM” codec, where the predictor in the encoder uses the quantized signal as its input. Other than this difference in the signal that is used as the predictor input in the encoder, the codec structures in FIG. 1 and FIG. 2 are conceptually very similar. [0150] II. Two-Stage Noise Feedback Coding [0151] The conventional noise feedback coding principles described above are well-known prior art. Now we will address two-stage noise feedback coding with both short-term and long-term prediction, and both short-term and long-term noise spectral shaping. [0152] A. Composite Codec Embodiments [0153] A first approach is to combine a short-term predictor and a long-term predictor into a single composite short-term and long-term predictor, and then re-use the general structure of codec [0154] where P′(z)=Ps(z)+Pl(z) Ps(z)Pl(z) is the composite predictor (for example, the predictor that includes the effects of both short-term prediction and long-term prediction). [0155] Similarly, in FIG. 1, the filter structure to the left of the symbol d(n), including the adder [1− [0156] Therefore, one can replace the predictor P(z) ( [0157] Thus, both short-term noise spectral shaping and long-term spectral shaping are achieved, and they can be individually controlled by the parameters α and β, respectively. [0158] 1. First Codec Embodiment—Composite Codec [0159]FIG. 1A is a block diagram of an example NFC structure or codec [0160] [0161] The functional elements or blocks of codec [0162] Codec [0163] Combiner [0164] A decoder portion of coder [0165] [0166] As an alternative to the above described first embodiment, a second embodiment of the present invention can be constructed based on the general coding structure of codec [0167]FIG. 2A is a block diagram of an example NFC structure or codec [0168] The functional elements or blocks of codec [0169] Codec [0170] Exiting quantizer [0171] In this invention, the first approach for two-stage NFC described above achieves the goal by re-using the general codec structure of conventional single-stage noise feedback coding (for example, by re-using the structures of codecs [0172] B. Codec Embodiments Using Separate Short-Term and Long-Term Predictors (Two-Stage Prediction) and Noise Feedback Coding [0173] It is not obvious how the codec structures in FIGS. 1 and 2 should be modified in order to achieve two-stage prediction and two-stage noise spectral shaping at the same time. For example, assuming the filters in FIG. 1 are all short-term filters, then, cascading a long-term analysis filter after the short-term analysis filter, cascading a long-term synthesis filter before the short-term synthesis filter, and cascading a long-term noise feedback filter to the short-term noise feedback filter in FIG. 1 will not give a codec that achieves the desired result. [0174] To achieve two-stage prediction and two-stage noise spectral shaping at the same time without combining the two predictors into one, the key lies in recognizing that the quantizer block in FIGS. 1 and 2 can be replaced by a coding system based on long-term prediction. Illustrations of this concept are provided below. [0175] I. Third Codec Embodiment—Two Stage Prediction with One Stage Noise Feedback [0176] As an illustration of this concept, FIG. 3 shows a codec structure where the quantizer block [0177] Codec [0178] Predictive quantizer Q′ ( [0179] Codec [0180] Combiner [0181] Predictive quantizer [0182] Exiting predictive quantizer [0183] In the first exemplary arrangement of NF codec [0184] In the first arrangement described above, the DPCM structure inside the Q′ dashed box ( [0185] 2. Fourth Codec Embodiment—Two Stage Prediction with Two Stage Noise Feedback (Nested Two Stage Feedback Coding) [0186] Taking the above concept one step further, predictive quantizer Q′ of codec [0187]FIG. 4 is a block diagram of a first exemplary arrangement of the example nested two-stage NF coding structure or codec [0188] Predictive quantizer Q″ ( [0189] Codec [0190] Predictive quantizer Q″ ( [0191] Exiting quantizer [0192] Exiting predictive quantizer Q″ ( [0193] In the first exemplary arrangement of NF codec [0194] In the first arrangement of codec [0195] Thus, the z-transform of the overall coding noise of codec [0196] This proves that the nested two-stage NFC codec structure [0197] One advantage of nested two-stage NFC structure [0198] 3. Fifth Codec Embodiment—Two Stage Prediction with Two Stage Noise Feedback (Nested Two Stage Feedback Coding) [0199] Due to the above mentioned “decoupling” between the long-term and short-term noise feedback coding, predictive quantizer Q″ ( [0200]FIG. 5 is a block diagram of a first exemplary arrangement of the example nested two-stage NFC structure or codec [0201] Predictive quantizer Q′″ ( [0202] Codec [0203] Predictive quantizer [0204] In a second exemplary arrangement of NF codec [0205]FIG. 5A is a block diagram of an alternative but mathematically equivalent signal combining arrangement [0206] 4. Sixth Codec Embodiment—Two Stage Prediction with Two Stage Noise Feedback (Nested Two Stage Feedback Coding) [0207] In a further example, the outer layer NFC structure in FIG. 5 (i.e., all of the functional blocks outside of predictive quantizer Q′″ ( [0208]FIG. 6 is a block diagram of a first exemplary arrangement of the example nested two-stage NF coding structure or codec [0209] Codec [0210] Unlike codec [0211] In a second exemplary arrangement of NF codec [0212] There is an advantage for such a flexibility to mix and match different single-stage NFC structures in different parts of the nested two-stage NFC structure. For example, although the codec [0213] To see the codec [0214] we have only a three-tap filter Pl(z) ( [0215] Now consider the short-term NFC structure in the outer layer of codec [0216] 5. Coding Method [0217]FIG. 6A is an example method [0218] In a next step [0219] In a next step [0220] In a next step [0221] In a next step [0222]FIG. 6B is a detailed method corresponding to predictive quantizing step [0223] In a next step [0224] Additionally, the codec embodiments including an inner noise feedback loop (that is, exemplary codecs [0225] In a next step [0226] In a next step [0227] In a next step [0228] II. Overview of Preferred Embodiment (Based on the Fifth Embodiment Above) [0229] We now describe our preferred embodiment of the present invention. FIG. 7 shows an example encoder [0230] Coder [0231] IV. Short-Term Linear Predictive Analysis and Quantization [0232] We now give a detailed description of the encoder operations. Refer to FIG. 7. The input signal s(n) is buffered at block [0233] Refer to FIG. 9. The input signal s(n) is buffered at block [0234] Let RWINSZ be the number of samples in the right window. Then, RWINSZ=20 for 8 kHz sampling and 40 for 16 kHz sampling. The right window is given by
[0235] The concatenation of wl(n) and wr(n) gives the 20 ms asymmetric analysis window. When applying this analysis window, the last sample of the window is lined up with the last sample of the current frame, so there is no look ahead. [0236] After the 5 ms current frame of input signal and the preceding 15 ms of input signal in the previous three frames are multiplied by the 20 ms window, the resulting signal is used to calculate the autocorrelation coefficients r(i), for lags i=0, 1, 2, . . . , M, where M is the short-term predictor order, and is chosen to be 8 for both 8 kHz and 16 kHz sampled signals. [0237] The calculated autocorrelation coefficients are passed to block [0238] i=0, 1, 2, . . . , M, [0239] where f [0240] After multiplying r(i) by such a Gaussian window, block [0241] The spectral smoothing technique smoothes out (widens) sharp resonance peaks in the frequency response of the short-term synthesis filter. The white noise correction adds a white noise floor to limit the spectral dynamic range. Both techniques help to reduce ill conditioning in the Levinson-Durbin recursion of block [0242] Block a [0243] for i=0, 1, . . . , M. In our particular implementation, the parameter γ is chosen as 0.96852. [0244] Block [0245] Block [0246] Block [0247] Basically, the i-th weight is the inverse of the distance between the i-th LSP coefficient and its nearest neighbor LSP coefficient. These weights are different from those used in G.729. [0248] Block [0249] Block [0250] Block [0251] The first-stage VQ inside block [0252] During codebook searches, both stages of VQ within block [0253] The output vector of block [0254] It is well known in the art that the LSP coefficients need to be in a monotonically ascending order for the resulting synthesis filter to be stable. The quantization performed in FIG. 10 may occasionally reverse the order of some of the adjacent LSP coefficients. Block [0255] Now refer back to FIG. 9. The quantized set of LSP coefficients {{tilde over (l)} [0256] Block [0257] Block [0258] This bandwidth-expanded set of filter coefficients {a [0259] V. Short-Term Linear Prediction of Input Signal [0260] Now refer to FIG. 7 again. Except for block [0261] VI. Long-Term Linear Predictive Analysis and Quantization [0262] The long-term predictive analysis and quantization block [0263] Now refer to FIG. 11. The short-term prediction residual signal d(n) passes through the weighted short-term synthesis filter block [0264] The signal dw(n) is basically a perceptually weighted version of the input signal s(n), just like what is done in CELP codecs. This dw(n) signal is passed through a low-pass filter block [0265] The first-stage pitch search block [0266] for k=MINPPD−1 to k=MAXPPD 1, where MINPPD and MAXPPD are the minimum and maximum pitch period in the decimated domain, respectively. [0267] For the narrowband codec, MINPPD=4 samples and MAXPPD=36 samples. For the wideband codec, MINPPD=2 samples and MAXPPD=34 samples. Block [0268] If there is no positive local peak at all in the {c(k)} sequence, the processing of block [0269] To avoid picking a coarse pitch period that is around an integer multiple of the true coarse pitch period, the following simple decision logic is used. [0270] 1. If k* [0271] 2. Otherwise, go from the first element of K [0272] 3. If none of the elements of K [0273] c(k [0274] |k [0275] The first k [0276] 4. If none of the elements of K [0277] Block [0278] Block [0279] After the lower bound lb and upper bound ub of the pitch period search range are determined, block [0280] The time lag kε[lb,ub] that maximizes the ratio {tilde over (c)} [0281] Once the refined pitch period pp is determined, it is encoded into the corresponding output pitch period index PPI, calculated as [0282] Possible values of PPI are 0 to 127 for the narrowband codec and 0 to 255 for the wideband codec. Therefore, the refined pitch period pp is encoded into 7 bits or 8 bits, without any distortion. [0283] Block [0284] Block [0285] Pitch predictor taps quantizer block [0286] This equation can be re-written as
[0287] where [0288] x [0289] and
[0290] In the codec design stage, the optimal three-tap codebooks {b [0291] The corresponding vector of three quantized pitch predictor taps, denoted as ppt in FIG. 11, is obtained by multiplying the first three elements of the selected codevector x [0292] Once the quantized pitch predictor taps have been determined, block [0293] Again, the same dq(n) buffer and time index convention of block [0294] This completes the description of block [0295] VII. Quantization of Residual Gain [0296] The open-loop pitch prediction residual signal e(n) is used to calculate the residual gain. This is done inside the prediction residual quantizer block [0297] Refer to FIG. 12. Block [0298] For the wideband codec, on the other hand, two log-gains are calculated for each sub-frame. The first log-gain is calculated as
[0299] and the second log-gain is calculated as
[0300] Lacking a better name, we will use the term “gain frame” to refer to the time interval over which a residual gain is calculated. Thus, the gain frame size is SFRSZ for the narrowband codec and SFRSZ/2 for the wideband codec. All the operations in FIG. 12 are done on a once-per-gain-frame basis. [0301] The long-term mean value of the log-gain is calculated off-line and stored in block [0302] The gain quantizer codebook index GI is passed to the bit multiplexer block [0303] Block g=2 [0304] Block [0305] The prediction residual quantizer in the current invention of TSNFC can be either a scalar quantizer or a vector quantizer. At a given bit-rate, using a scalar quantizer gives a lower codec complexity at the expense of lower output quality. Conversely, using a vector quantizer improves the output quality but gives a higher codec complexity. A scalar quantizer is a suitable choice for applications that demand very low codec complexity but can tolerate higher bit rates. For other applications that do not require very low codec complexity, a vector quantizer is more suitable since it gives better coding efficiency than a scalar quantizer [0306] In the next two sections, we describe the prediction residual quantizer codebook search procedures in the current invention, first for the case of scalar quantization in SQ-TSNFC, and then for the case of vector quantization in VQ-TSNFC. The codebook search procedures are very different for the two cases, so they need to be described separately. [0307] VIII. Scalar Quantization of Linear Prediction Residual Signal [0308] If the residual quantizer is a scalar quantizer, the encoder structure of FIG. 7 is directly used as is, and blocks [0309] The adder [0310] Next, using its filter memory, the long-term predictor block [0311] and the long-term noise feedback filter block [0312] The adders [0313] Next, Block [0314] The adder [0315] This q(n) sample is passed to block [0316] The adder [0317] This dq(n) sample is passed to block [0318] The adder [0319] and then passes it to block [0320] We found that for speech signals at least, if the prediction residual scalar quantizer operates at a bit rate of 2 bits/sample or higher, the corresponding SQ-TSNFC codec output has essentially transparent quality. [0321] IX. Vector Quantization of Linear Prediction Residual Signal [0322] If the residual quantizer is a vector quantizer, the encoder structure of FIG. 7 cannot be used directly as is. An alternative approach and alternative structures need to be used. To see this, consider a conventional vector quantizer with a vector dimension K. Normally, an input vector is presented to the vector quantizer, and the vector quantizer searches through all codevectors in its codebook to find the nearest neighbor to the input vector. The winning codevector is the VQ output vector, and the corresponding address of that codevector is the quantizer out codebook index. If such a conventional VQ scheme is to be used with the codec structure in FIG. 7, then we need to determine K samples of the quantizer input u(n) at a time. Determining the first sample of u(n) in the VQ input vector is not a problem, as we have already shown how to do that in the last section. However, the second through the K-th samples of the VQ input vector cannot be determined, because they depend on the first through the (K−1)-th samples of the VQ output vector of the signal uq(n), which have not been determined yet. [0323] The present invention avoids this chicken-and-egg problem by modifying the VQ codebook search procedure, as described below beginning with reference to FIG. 13A. [0324] A. General VQ Search [0325] 1. High-Level Embodiment [0326] a. System [0327]FIG. 13A is a block diagram of an example Noise Feedback Coding (NFC) system [0328] VQ codebook [0329] System [0330] b. Methods [0331] A brief overview of a method of operation of system [0332] The bit multiplexer block [0333]FIG. 13B is a flow diagram of an example method [0334] Method [0335] At a next step [0336] At a next step [0337] At a next step [0338] Predictor/filter restorer [0339] 2. Example Specific Embodiment [0340] a. System [0341]FIG. 13C is a block diagram of a portion of an example codec structure or system [0342] b. Methods [0343] The method of operation of codec structure [0344]FIG. 13D is an example first (inner NF loop) method [0345] At a next step [0346] At a next step [0347]FIG. 13E is an example second (outer NF loop) method [0348] At a next step [0349] At a next step [0350] At a next step [0351] At a next step [0352] Alternative embodiments of VQ search systems and corresponding methods, including embodiments based on codecs [0353] The fundamental ideas behind the modified VQ codebook search methods described above are somewhat similar to the ideas in the VQ codebook search method of CELP codecs. However, the feedback filter structures of input vector deriver [0354] Our simulation results show that this vector quantizer approach indeed works, gives better codec performance than a scalar quantizer at the same bit rate, and also achieves desirable short-term and long-term noise spectral shaping. However, according to another novel feature of the current invention described below, this VQ codebook search method can be further improved to achieve significantly lower complexity while maintaining mathematical equivalence. [0355] B. Fast VQ Search [0356] A computationally more efficient codebook search method according to the present invention is based on the observation that the feedback structure in FIG. 13C, for example, can be regarded as a linear system with the VQ codevector out of scaled VQ codebook [0357] 1. High-Level Embodiment [0358] a. System [0359]FIG. 14A is a block diagram of an example NFC system [0360] b. Methods [0361]FIG. 14B is an example, computationally efficient, method [0362] At a next step [0363] At a next step [0364] At a next step [0365] The qzi(n) vector derived at step [0366] During the calculation of the ZERO-STATE response vector qzs(n) at step [0367] 2. Example Specific Embodiments [0368] a. ZERO-INPUT Response [0369]FIG. 14C is a block diagram of an example ZERO-INPUT response filter structure [0370] The method of operation of codec structure [0371]FIG. 14D is an example first (inner NF loop) method [0372] In a first step [0373] In a next step [0374] In a next step [0375] In a next step [0376]FIG. 14E is an example second (outer NF loop) method [0377] In a first step [0378] At a next step [0379] At a next step [0380] At a next step [0381] b. ZERO-STATE Response [0382] (1) ZERO-STATE Response—First Embodiment [0383]FIG. 15A is a block diagram of an example ZERO-STATE response filter structure [0384] If we choose the vector dimension to be smaller than the minimum pitch period minus one, or K<MINPP−1, which is true in our preferred embodiment, then with zero initial memory, the two long-term filters [0385]FIG. 15B is a flowchart of an example method [0386] Therefore, the filter state is zeroed (using restorer [0387] In a next step [0388] (2) ZERO-STATE Response—Second Embodiment [0389] Note that in FIG. 15A, qszs(n) is equal to qzs(n). Hence, we can simply use qszs(n) as the output of the linear system during the calculation of the ZERO-STATE response vector. This allows us to simplify FIG. 15A further into a simplified structure [0390] If we start with a scaled codebook (use g(in) to scale the codebook) as mentioned in the description of block [0391]FIG. 16B is a flowchart of an example method [0392] At a next step [0393] 1. combiner [0394] 2. filter [0395] 3. combiner [0396] 4. filter [0397] 5. combiner [0398] 6. filter [0399] 7. combiner [0400] This second approach (corresponding to FIGS. 16A and 16B) is computationally more efficient than the first (and more straightforward) approach (corresponding to FIGS. 15A and 15B). For the first approach, the short-term noise feedback filter takes KM multiply-add operations for each VQ codevector. For the second approach, only K(K−1)/2 multiply-add operations are needed if K<M. In our preferred embodiment, M=8, and K=4, so the first approach takes 32 multiply-adds per codevector for the short-term filter, while the second approach takes only 6 multiply-adds per codevector. Even with all other calculations included, the second codebook search approach still gives a very significant reduction in the codebook search complexity. Note that the second approach is mathematically equivalent to the first approach, so both approaches should give an identical codebook search result. [0401] Again, the ideas behind this second codebook search approach are somewhat similar to the ideas in the codebook search of CELP codecs. However, the actual computational procedures and the codec structure used are quite different, and it is not readily obvious to those skilled in the art how the ideas can be used correctly in the framework of two-stage noise feedback coding. [0402] Using a sign-shape structured VQ codebook can further reduce the codebook search complexity. Rather than using a B-bit codebook with 2 [0403] In the preferred embodiment of the 16 kb/s narrowband codec, we use 1 sign bit with a 4-bit shape codebook. With a vector dimension of 4, this gives a residual encoding bit rate of (1+4)/4=1.25 bits/sample, or 50 bits/frame (1 frame=40 samples=5 ms). The side information encoding rates are 14 bits/frame for LSPI, 7 bits/frame for PPI, 5 bits/frame for PPTI, and 4 bits/frame for GI. That gives a total of 30 bits/frame for all side information. Thus, for the entire codec, the encoding rate is 80 bits/frame, or 16 kb/s. Such a 16 kb/s codec with a 5 ms frame size and no look ahead gives output speech quality comparable to that of G.728 and G.729E. [0404] For the 32 kb/s wideband codec, we use 1 sign bit with a 5-bit shape codebook, again with a vector dimension of 4. This gives a residual encoding rate of (1+5)/4=1.5 bits/sample=120 bits/frame (1 frame=80 samples=5 ms). The side information bit rates are 17 bits/frame for LSPI, 8 bits/frame for PPI, 5 bits/frame for PPTI, and 10 bits/frame for GI, giving a total of 40 bits/frame for all side information. Thus, the overall bit rate is 160 bits/frame, or 32 kb/s. Such a 32 kb/s codec with a 5 ms frame size and no look ahead gives essentially transparent quality for speech signals. [0405] (3) Further Reduction in Computational Complexity [0406] The speech signal used in the vector quantization embodiments described above can comprise a sequence of speech vectors each including a plurality of speech samples. As described in detail above, for example, in connection with FIG. 7, the various filters and predictors in the codec of the present invention respectively filter and predict various signals to encode speech signal s(n) based on filter and predictor (or prediction) parameters (also referred to in the art as filter and predictor taps, respectively). The codec of the present invention includes logic to periodically derive, that is, update, the filter and predictor parameters, and also the gain g(n) used to scale the VQ codebook entries, based on the speech signal, once every M speech vectors, where M is greater than one. Codec embodiments for periodically deriving filter, prediction, and gain scaling parameters were described above in connection with FIG. 7. [0407] The present invention takes advantage of such periodic updating of the aforementioned parameters to further reduce the computational complexity associated with calculating the N ZERO-STATE response error vectors qzs(n), described above. With reference again to FIG. 16A, the N ZERO-STATE response error vectors qzs(n) derived using filter structure [0408]FIG. 17 is a flowchart of an example method [0409] At a next step [0410] At a next step [0411] At a next step [0412] Alternative embodiments of VQ search systems and corresponding methods, including embodiments based on codecs [0413] C. Further Fast VQ Search Embodiments [0414] The present invention provides first and second additional efficient VQ search methods, which can be used independently or jointly. The first method (described below in Section IX.C.1.) provides an efficient VQ search method for a general VQ codebook, that is, no particular structure of the VQ codebook is assumed. The second method (described below in Section IX.C.2.) provides an efficient method for the excitation quantization in the case where a signed VQ codebook is used for the excitation. [0415] The first method reduces the complexity of the excitation VQ in NFC by reorganizing the calculation of the energy of the error vector for each candidate excitation vector, also referred to as a codebook vector. The energy of the error vector is the cost function that is minimized during the search of the excitation codebook. The reorganization is obtained by: [0416] 1. Expanding the Mean Squared Error (MSE) term of the error vector; [0417] 2. Excluding the energy term that is invariant to the candidate excitation vector; and [0418] 3. Pre-computing the energy terms of the ZERO-STATE response of the candidate excitation vectors that are invariant to the sub-vectors of the subframe. [0419] The second method represents an efficient way of searching the excitation codebook in the case where a signed codebook is used. The second method is obtained by reorganizing the calculation of the energy of the error vector in such a way that only half of the total number of codevectors is searched. [0420] The combination of the first and second methods also provides an efficient search. However, there may be circumstances where the first and second methods are used separately. For example, if a signed codebook is not used, then the second invention does not apply, but the first invention may be applicable. [0421] For mathematical convenience, the nomenclature used in Sections IX.C.1. and 2. below to refer to certain quantities differs from the nomenclature used in Section IX.B. above to refer the same or similar quantities. The following key serves as a guide to map the nomenclature used in Section IX.B. above to that used in the following sections. [0422] In Section IX.B. above, quantization energy e(n) refers to a quantization energy derivable from an error vector q(n), where n is a time/sample position descriptor. Quantization energy e(n) and error vector q(n) are both associated with a VQ codevector in a VQ codebook. [0423] Similarly, in Sections IX.C.1. and 2. below, quantization energy E [0424] In Section IX.B. above, the ZERO-INPUT response error vector is denoted qzi(n), where n is the time index. In Sections IX.C.1. and 2. below, the ZERO-INPUT response error vector is denoted q [0425] In Section IX.B. above, the ZERO-STATE response error vector is denoted qzs(n), where n is the time index. In Sections IX.C.1. and 2. below, the ZERO-STATE response error vector is denoted q [0426] Also, Section IX.B. above, refers to “frames,” for example 5 ms frames, each corresponding to a plurality of speech vectors. Also, multiple bits of side information and VQ codevector indices are transmitted by the coder in each of the frames. In the Sections below, the term “subframe” is taken to be synonymous with “frame” as used in the Sections above. Correspondingly, the term “sub-vectors” refers to vectors within a subframe. [0427] 1. Fast VQ Search of General (Unsigned) Excitation Codebook in NFC system [0428] a. Straightforward Method [0429] The energy, E [0430] and the optimal codevector, n [0431] where N is the number of codevectors. [0432] As discussed above in Section IX.B., the error vector, q [0433] Utilizing this expression, the energy of the error vector, E [0434] For an NFC system where the dimension of the excitation VQ, K, is less than the master vector size, K [0435] L VQs would be performed per master vector. According to the analysis and assumptions discussed in Section IX.B.2.b.3. above, the ZERO-STATE responses of the codevectors are unchanged for the L VQs and need only be calculated once (in the case where the gain and/or filter parameters are updated once every L VQs). The calculation of all error vector energies for all codevectors, for all VQs in a master vector will then require [0436] floating point operations, disregarding the calculation of the ZERO-INPUT and ZERO-STATE responses. For the example narrowband and wideband NFC systems described in Section IX.B. above, the parameters of Eq. 6 are L=10, N=32, K=4, and L=10, V=64, K=4, respectively. Consequently, according to Eq. 6 the number of floating point operations required would be C [0437] b. Fast VQ Search of General Excitation Codebook Using Correlation Technique [0438] In the present first invention the energy of the error vector of a given codevector is expanded into
[0439] In Eq. 7 the energy of the error vector is expanded into the energy of the ZERO-INPUT response, Eq. 8, the energy of the ZERO-STATE response, Eq. 9, and two times the cross-correlation between the ZERO-INPUT response and the ZERO-STATE response, Eq. 10. [0440] The minimization of the energy of the error vector as a function of the codevector is independent of the energy of the ZERO-INPUT response since the ZERO-INPUT response is independent of the codevector. Consequently, the energy of the ZERO-INPUT response can be omitted when searching the excitation codebook. Furthermore, since the N energies of the ZERO-STATE responses of the codevectors are unchanged for the L VQs, the N energies need only be calculated once. [0441] Consequently, the VQ operation can be expressed as:
[0442] In Eq. 11 only the cross-correlation term would be calculated inside the search loop. The N zero-response energies, E [0443] floating point operations for the calculations needed to select codevectors for all L VQs in a master vector, disregarding the calculation of the ZERO-INPUT and ZERO-STATE responses. For the example narrowband and wideband NFC systems mentioned above this would result C [0444] For narrowband and wideband NFC systems, generally, a significant reduction in the number of floating point operations is obtained with the invention. However, it should be noted that the actual reduction depends on the parameters of the NFC system. In particular, it is obvious that if the VQ dimension is equal to the dimension of the master vector, i.e. K=K [0445] 2. Fast VQ Search of Signed Excitation Codebook in NFC System [0446] A second invention devises a way to reduce complexity in the case a signed codebook is used for the excitation VQ. In a signed codebook the code vectors are related in pairs, where the two code vectors in a pair only differ by the sign of the vector elements, i.e. a first and second code vector in a pair, c [0447] where K is the dimension of the vectors. Consequently, for a codebook of N codevectors N/2 linear independent codevectors exist. The remaining N/2 codevectors are given by negating the N/2 linear independent codevectors as in Eq. 13. Typically, if B bits are used to represent the N codevectors, i.e. B=log [0448] It is only necessary to store the N/2 linear independent codevectors as the remaining N/2 codevectors are easily generated by simple negation. [0449] Furthermore, the ZERO-STATE responses of the remaining N/2 codevectors are given by a simple negation of the ZERO-STATE responses of the N/2 linear independent codevectors. Consequently, the complexity of generating the N ZERO-STATE responses is reduced with the use of a signed codebook. [0450] The present second invention further reduces the complexity of searching a signed codebook by manipulating the minimization operation. [0451] a. Straightforward Method [0452] By calculating the energy of the error vectors according to the straightforward method, see Eq. 2 and Eq. 4, the search is given by
[0453] where s is the sign and nε{1, . . . , N/2} represents the N/2 linear independent codevectors. In practice both of the two signs are checked for every of the N/2 linear independent codevectors without applying the multiplication with the sign, which would unnecessarily increase the complexity. The number of floating point operations needed to calculate the energy of the error vector for all of the combined N codevectors for all of the L VQs, would remain as specified by Eq. 6, [0454] Note that this figure excludes the calculations of the ZERO-INPUT and ZERO-STATE responses. Nevertheless, once the ZERO-INPUT and ZERO-STATE responses are calculated the complexity of the remaining operations remains unchanged. The number of floating point operations for the narrowband and wideband example is, as above, C [0455] b. Fast VQ Search of Signed Excitation Codebook Using Correlation Technique [0456] Similar to the first invention the term of the energy of the error vector is expanded, except for the further incorporation of the property of a signed codebook.
[0457] where s is the sign and nε{1, . . . ,N/2} represents the N/2 linear independent codevectors. In Eq. 16 the energy of the error vector is examined for a pair of codevectors in the signed codebook. According to Eq. 16 the energy of the error vector can be expanded into the energy of the ZERO-INPUT response, Eq. 8, the energy of the ZERO-STATE response, Eq. 9, and two times the cross-correlation between the ZERO-INPUT response and the ZERO-STATE response, Eq. 10. The sign of the cross-correlation term depends on the sign of the codevector. The minimization of the energy of the error vector as a function of the codevector is independent of the energy of the ZERO-INPUT response since the ZERO-INPUT response is independent of the codevector. Consequently, the energy of the ZERO-INPUT response can be omitted when searching the excitation codebook, and the search is given by
[0458] From Eq. 17 it is evident that if a pair of codevectors, i.e. s=±1, are considered jointly, the two minimization terms, E [0459] respectively. Evidently, if the cross-correlation term R(q [0460] where the less-than sign is interchangeable with a less-than-or-equal sign. The number of floating point operations needed to calculate the energy of the error vector for all of the combined N codevectors for all of the L VQs according to the search specified by Eq. 20 is
[0461] Again, disregarding the calculation of the ZERO-INPUT and ZERO-STATE responses. The number of floating point operations for the example narrowband and wideband NFC systems is C [0462] This method would also apply to a signed sub-codebook within a codebook, i.e. a subset of the code vectors of the codebook make up a signed codebook. It is then possible to apply the invention to the signed sub-codebook. [0463] 3. Combination of Efficient Search Methods [0464] If the number of VQs per master vector, L, is greater than one, and a signed codebook (or sub-codebook) is used it is advantageous to combine the two methods above. In this case the energies of zero-responses, E [0465] For the example narrowband and wideband NFC systems the number of floating point operations C [0466] 4. Method Flow Charts [0467] The methods of the present invention, described in Sections IX.C.1. and 2., are used in an NFC system to quantize a prediction residual signal. More generally, the methods are used in an NFC system to quantize a residual signal. That is, the residual signal is not limited to a prediction residual signal, and thus, the residual signal may include a signal other than a prediction residual signal. The prediction residual signal (and more generally, the residual signal) includes a series of successive residual signal vectors. Each residual signal vector needs to be quantized. Therefore, the methods of the present invention search for and select a preferred one of a plurality of candidate codevectors corresponding to each residual vector. Each preferred codevector represents the excitation VQ of the corresponding residual signal vector. [0468]FIG. 18 is a flow chart of an example method 1800 of quantizing multiple vectors, for example, residual signal vectors, in a master vector (or frame), according to the correlation techniques described in Sections IX.C.1 and IX.C.2. Method [0469] In one arrangement, method [0470] In another arrangement, method [0471] a shape code, C [0472] a sign code, C [0473] Method [0474] At a first step [0475] At a next step [0476] At a next step [0477] Next, a loop including steps [0478] At a next step [0479] At a next step [0480] At a decision step [0481]FIG. 19 is a flowchart of an example method [0482] At initial step [0483] At a next step [0484] At a next step [0485] At a next step [0486] At next steps [0487] At a next step [0488] Assuming N iterations of the loop in method [0489] deriving N correlation values using the NFC system (step [0490] combining each of the N correlation values with a corresponding one of N ZERO-STATE energies of the NFC system (step [0491] selecting a preferred one of the N VQ codevectors based on the N minimization values (steps [0492] Since the prediction residual signal (more generally, the residual signal) includes a series of prediction residual vectors (more generally, a series of residual vectors), and method [0493]FIG. 20 is a flow chart of an example method [0494] In a first step [0495] At a next step [0496] At a next step [0497] At a next step [0498] At a next step [0499] On the other hand, if the cross-correlation term is negative, then at step [0500] Next, steps [0501] At a next step [0502] In an alternative arrangement of method [0503] Assuming N iterations of the loop in method [0504] for each shape codevector [0505] (a) deriving a correlation term corresponding to the shape codevector where at least one filter structure of the NFC system has been used to generate the signals for the correlation (step [0506] (b) deriving a first minimization value corresponding to the positive codevector associated with the shape codevector when a sign of the correlation term is a first value (steps [0507] (c) deriving a second minimization value corresponding to the negative codevector associated with the shape codevector when a sign of the correlation term is a second value (steps [0508] Example methods [0509] 5. Comparison of Search Method Complexities [0510] This section provides a summary and comparison of the number of floating point operations that is required to perform the L VQs in a master vector for the different methods. The comparison assumes that the same techniques are used to obtain the ZERO-INPUT response and ZERO-STATE responses for the different methods, and thus, that the complexity associated herewith is identical for the different methods. Consequently, this complexity is omitted from the estimated number of floating point operations. The different methods are mathematically equivalent, i.e., all are equivalent to an exhaustive search of the codevectors. The comparison is provided in Table 1, which lists the expression for the number of floating point operations as well as the number of floating point operations for the example narrowband and wideband NEC systems. In the table the first and second inventions are labeled “Pre-computation of energies of ZERO-STATE responses” and “signed codebook search”, respectively.
[0511] It should be noted that the sign of the cross-correlation term in Eq. 7, 11, 16, 17, 18, 19, and 20 is opposite in some NFC systems due to alternate sign definitions of the signals. It is to be understood that this does not affect the present invention fundamentally, but will simply result in proper sign changes in the equations and methods of the invention. [0512] D. Further Embodiments Related to VQ Searching in NFC with Generalized Noise Shaping [0513] 1. Overview [0514] This Section (Section IX.D.) presents efficient methods related to excitation quantization in noise feedback coding where the short-term shaping of the coding noise is generalized. The methods are based in part on separating an NFC quantization error signal into ZERO-STATE and ZERO-INPUT response contributions. Additional new parts are developed and presented in order to accommodate a more general shaping of the coding noise while providing efficient excitation quantization. This includes an efficient method of calculating the ZERO-STATE response with the generalized noise shaping, and an efficient method for updating the filter memories of the noise feedback coding structure with the generalized noise shaping, as will be described below. Although the methods of this section are describe by way of example in connection with NFC system/coder [0515] The inventions in this section are described in connection with NFC “structures” or “systems” depicted in FIGS. [0516] The NFC systems depicted in FIGS. [0517]FIG. 21 is a diagram of an example NFC system/coder [0518] For convenience, the description and mathematical analyses in this section identify/label filters in accordance with such labels as P [0519] The short-term noise feedback filter, [0520] will shape the coding noise, i.e. quantization error, according to the filter response of N [0521] where the zero- and pole-sections are given by
[0522] respectively. The symbols K [0523] The short-term noise shaping filter, N [0524] where N [0525] where 0≦γ [0526] where the zero- and pole-sections are given by
[0527] respectively. [0528]FIG. 22 is an example NFC system [0529] The efficient excitation quantization method described in this Section includes four steps: [0530] 1. a ZERO-STATE calculation; [0531] 2. a ZERO-INPUT calculation; [0532] 3. a Codebook search (VQ); and [0533] 4. a Filter memory update process. [0534] 2. ZERO-STATE Calculation [0535] NFC system [0536]FIG. 23 is an example ZERO-STATE configuration [0537] is the prediction error filter of the quantized LPC, and N is the order of the quantized LPC, which could be different from the order of the LPC for the short-term noise shaping filter, N [0538] As mentioned above, the filter memories of the various filters of the ZERO-STATE filter structure [0539] The pole-zero filter H(z) of Eq. 32 (for example, filter [0540] and the z-transform of the ZERO-STATE response is given by [0541] In the time domain this filter operation is expressed as
[0542] Since u [0543] where K is the dimension of the VQ codevectors. Hence, only the first K coefficients of the all-zero IIR filter H(z) of Eq. 34 need to be determined. Thus, the response of this truncated version of the all-zero IIR filter is substantially equivalent to the response of the ZERO-STATE filter structure of FIG. 23. In fact, it is identical up to the truncation point. Furthermore, as is evident from Eq. 37 using the truncated all-zero filter results in identical ZERO-STATE responses as compared to using the infinite order all-zero filter or the original ZERO-STATE filter structure of FIG. 23. [0544] The first K coefficients of the impulse response of the all-zero IIR filter are obtained by passing an impulse through the pole-zero filter given by Eq. 32 exploiting that all filter memories are initialized to zero. This is equivalent to filtering the impulse response of the zero section of H(z) in Eq. 32,
[0545] through the remaining all-pole part:
[0546] exploiting that only the first K samples of the output are needed. These first K samples of the output are the first K coefficients of the impulse response of the all-zero IIR filter. [0547] In summary, the ZERO-STATE responses of the VQ codevectors are efficiently obtained using the filter structure of FIG. 24 with the filter operation expressed in Eq. 37. [0548] It should be noted that the gain-scaling step in FIG. 24, represented within block [0549] For simplicity both methods are referred as filtering a VQ codevector with the all-zero filter to obtain the ZERO-STATE reponse corresponding to the VQ codevector. [0550] Also, the gain-scaling in FIGS. [0551] In the following, it is to be understood that the term “VQ codevectors” covers both non-scaled and gain-scaled VQ codevectors. [0552] 3. ZERO-INPUT Calculation [0553]FIG. 25 is an example ZFRO-INPUT filter configuration or structure [0554] 4. VQ Search [0555] Based on the ZERO-STATE response of each candidate VQ codevector and the ZERO-INPUT response, the VQ codevector that minimizes
[0556] is selected and the quantized excitation vector is denoted u [0557] 5. Filter Memory Update Process [0558] In the following description and analyses it is to be understood that the term “memory update” refers to a signal that is shifted into, or feeds, a filter memory of a filter included in a filter structure. Consequently, past values of this signal are stored in the filter memory. In FIGS. 26, 27 and [0559] An example basic structure to update the filter memories for the NFC system of FIG. 22 is depicted in FIG. 26. This includes [0560] 1. The memory update for the short-term predictor, denoted p [0561] 2. The memory update for the long-term predictor, denoted p [0562] 3. The memory update for the long-term noise feedback filter, denoted n [0563] 4. The memory update for the zero-section of the short-term noise feedback filter, denoted f [0564] 5. The memory update for the pole-section of the short-term noise feedback filter, denoted f [0565] An alternative and more efficient method is to calculate the five filter memory updates as the superposition of the contributions to the filter memories from the ZERO-STATE and the ZERO-INPUT configurations (also referred to as ZERO-STATE and ZERO-INPUT components). The contributions from the ZERO-STATE component/configuration to the five filter memories are denoted p [0566] The structure to calculate the contributions to the five filter memories from the ZERO-STATE component/configuration is depicted in FIG. 27. This structure is derived from FIG. 23 and FIG. 26. It can be seen that [0567] and [0568] which are all available from the ZERO-STATE response calculation of the VQ codevector corresponding to u [0569] where it should be noted that p [0570] The structure to calculate the contributions to the five filter memories from the ZERO-INPUT component/configuration is depicted in FIG. 28. (Note that FIGS. 25 and 28 are the same, except duplicate signal labels are added in FIG. 28) However, referring to FIG. 25, it is evident that the ZERO-INPUT contributions to the five filter memories are all available from the previous calculation of the ZERO-INPUT response, q [0571] From the contributions to the five filter memories from the ZERO-STATE and ZERO-INPUT components the final updates for the filter memories are calculated as [0572] In summary, the excitation quantization of each input vector, of dimension K, results in K new values being shifted into each filter memory during the filter memory update process. This is also apparent from the fact that the filter memory update process corresponds to filtering u [0573] It should be noted that the two methods for updating the filter memories, i.e. the straightforward method shown in FIG. 26 and the efficient method described by Eq. 41 through Eq. 46 and FIGS. 27 and 28 are mathematically equivalent. [0574] It should also be noted that alternate sign definitions of signals in the NFC coding systems/structure translate into proper sign changes in the derived equations and methods without departing from the scope and spirit of the invention. [0575] 6. Method Flow Charts [0576] a. ZERO-STATE Calculation [0577]FIG. 29 is a flow chart of an example method [0578] A first step [0579] A next step [0580] A next step [0581] Method [0582]FIG. 30 is a flow chart of an example method [0583] A first step [0584] A next step [0585] b. Filter Memory Update Process [0586]FIG. 31 is a flow chart of an example method [0587] A first step [0588] A next step [0589] A next step includes updating the filter memory as a function of both the ZERO-STATE contribution and the ZERO-INPUT contribution. For example, the filter memory is updated with the sum or superposition of the ZERO-INPUT and ZERO-STATE contributions (e.g., memory update f [0590] Method [0591] In this section, the methods and structures of the present invention have been described by way of example in the context of NFC system [0592] X. Decoder Operations [0593] The decoder in FIG. 8 is very similar to the decoder of other predictive codecs such as CELP and MPLPC. The operations of the decoder are well-known prior art. [0594] Refer to FIG. 8. The bit de-multiplexer block [0595] The short-term predictive parameter decoder block [0596] The prediction residual quantizer decoder block [0597] The long-term predictor block [0598] The short-term predictor block [0599] This completes the description of the decoder operations. [0600] XI. Hardware and Software Implementations [0601] The following description of a general purpose computer system is provided for completeness. The present invention can be implemented in hardware, or as a combination of software and hardware. Consequently, the invention may be implemented in the environment of a computer system or other processing system. An example of such a computer system [0602] Computer system [0603] In alternative implementations, secondary memory [0604] Computer system [0605] In this document, the terms “computer program medium” and “computer usable medium” are used to generally refer to media such as removable storage drive [0606] Computer programs (also called computer control logic) are stored in main memory [0607] In another embodiment, features of the invention are implemented primarily in hardware using, for example, hardware components such as Application Specific Integrated Circuits (ASICs) and gate arrays. Implementation of a hardware state machine so as to perform the functions described herein will also be apparent to persons skilled in the relevant art(s). [0608] XII. Conclusion [0609] While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example, and not limitation. It will be apparent to persons skilled in the relevant art that various changes in form and detail can be made therein without departing from the spirit and scope of the invention. [0610] The present invention has been described above with the aid of functional building blocks and method steps illustrating the performance of specified functions and relationships thereof. The boundaries of these functional building blocks and method steps have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. Any such alternate boundaries are thus within the scope and spirit of the claimed invention. One skilled in the art will recognize that these functional building blocks can be implemented by discrete components, application specific integrated circuits, processors executing appropriate software and the like or any combination thereof. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents. Referenced by
Classifications
Legal Events
Rotate |