Patent EP0516439A2 successfully refreshed from Google Patents.
← Back to Patent Explorer
EP0516439A2 Expired / Lapsed EP ⏱️ 0.0 years remaining

Efficient CELP vocoder and method

Assignee: Motorola Solutions Inc
•
Filing: 1992-05-28
•
Granted: —
•
Expires: 2012-05-28
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The computational effort and time for CELP coding of speech is reduced by rearranging the recursive loop used to search vectors of an adaptive codebook so that an impulse function of a short term perceptually weighted filter is first convolved with perceptually weighted target speech and the result cross-correlated with each codebook vector to produce an error function for identifying the optimum adaptive codebook vector. In addition, autocorrelation is initially performed for only a small number of autocorrelation coefficients in each codebook vector and the values found are used to scan through all the vectors to find those giving a better match to input speech. Autocorrelation using all the vector values is then performed on this subset of vectors to identify the best vector for representing the frame of speech. An end correction procedure is used for vectors shorter than the speech frame length to avoid copy-up errors common in the prior art. An improved means and method for obtaining correlation coefficients for the stochastic codebook vectors is also described..

Inventors

  • 👤 William Chunhung Yip
  • 👤 David Lee Barron

Bibliographic Details

Application Number —
Jurisdiction EP
Data Source google_patents
Last Synchronized 2026-11-07 23:41
CPC Classifications
G; G10; G10L; G10L19/00; G10L19/04; G10L19/08; G10L19/12; G10L2019/0001; G10L2019/0013; G10L2019/0014; G10L25/00; G10L25/03; G10L25/06; G10L25/18

Claims Analysis

Total Claims: 19
Claim 1
Independent Claim 410 words
An apparatus (220, 220′) for coding a frame of speech comprising N successive samples n=1 to n=N of input analog speech, to determine an optimum codebook vector C k=j (n) which best synthesizes the speech frame, comprising: an adaptive codebook (155) containing K possible perceptually weighted excitation vectors C k (n), where k is an integer index running from 1 to K for identifying the vectors, and n=1 to n=N is the integer index identifying the successive speech samples within the frame of speech; one or more LPC filters (190, 195, 200, 205, 170, 145, 175, 150) for synthesizing trial replicas of the frame of speech when excited by the codebook vectors C k (n) , wherein the LPC filter (190, 195, 200, 205, 170, 145, 175, 150) has an impulse response H(n); means (150) for generating a perceptually weighted target speech residual X(n) for comparison to the results of exciting the one or more LPC filters (190, 195, 200, 205, 170, 145, 175, 150) with the codebook vectors C k (n) to determine the optimum codebook vector C k=j (n) which best synthesizes the speech frame; means (510′) for convolving X(n) with H(n) for each value of n once per frame to produce a convolved output (512′) for delivery to a cross-correlator (520′); means (520′) for cross-correlating the convolved output (512′) with C k (n) for each value of n and k to produce a cross-correlated output (551′) for delivery to a squarer (525′) whose output (521′) is coupled to a divider means (530′); means (560′) for auto-correlating C k (n) for each value of n and k to provide a first auto-correlation output (561′) for delivery to a multiplier means (543′); means (550′) for auto-correlating H(n) to produce a second auto-correlated output (552′, 556′) for delivery to the multiplier means (543′); means (543′) for multiplying the first (561′) and second (552′) autocorrelation outputs to produce an output product (545′) for delivery to an adder (540′); means (540′) for summing the product for each value of k to produce a summed output (541′) for delivery to the divider (530′); divider means (530′) for finding the ratio of the squared cross-correlation output (521′) and the adder summed output (541′) for delivery to a selector means (570′) ; and means (570′) for selecting that value C k=j (n) of C k (n) which produces the greatest magnitude of output from the divider means (530′), for delivery to a channel coder (210).
Claim 2
Independent Claim 388 words
A method for coding a frame of speech comprising N successive samples of input analog speech and using an adaptive codebook (155) containing K target perceptually weighted excitation vectors C k (n), where k is an integer index running from 1 to K, and n is another integer index identifying successive speech samples n=1, ..., n=N within the frame of speech, to determine an optimum codebook vector C k=j (n) which best synthesizes the speech frame, comprising; providing one or more LPC filters (190, 195, 200, 205, 170, 145, 175, 150) for synthesizing trial replicas of the frame of speech when excited by the codebook C k (n) vectors, wherein the one or more LPC filter (190, 195, 200, 205, 170, 145, 175, 150) has an impulse response H(n); providing a perceptually weighted target speech residual X(n) for comparison to the results of exciting the one or more LPC filters (190, 195, 200, 205, 170, 145, 175, 150) with the codebook vectors C k (n) ; convolving X(n) with H(n) for each value of n once per frame to produce a convolved output W(n) for delivery to a cross-correlator (520′); cross-correlating the convolved output W(n) with C k (n) for each value of n and k to produce a cross-correlated output for delivery to a squarer (525′) whose output is coupled to a divider (530′); auto-correlating C k (n) for each value of n and k to provide a first auto-correlation output U k (m) where m is a dummy index running from m=0 to m=N-1 for delivery to a multiplier (543′); auto-correlating H(n) to produce a second auto-correlated output ⌀(m) where m is a dummy index running from m=0 to m=N-1 for delivery to the multiplier (543′); multiplying the first and second autocorrelation outputs in the multiplier (543′) to produce an output product (545′) for delivery to a summer (540′); summing the product for each value of k to produce a summed output (541′) for delivery to the divider (530′); dividing to obtain the ratio of the squared cross-correlation output (521′) and the adder summed output (541′) for delivery to a peak selector (570′); and selecting in the peak selector that value C k=j (n) of C k (n) which produces the greatest magnitude of output from the divider (530′), for delivery to a channel coder (210).
Claim 3
Independent Claim 180 words
A method for providing CELP coding for a frame of digitized input speech based on use of a codebook (155) containing K vectors each having N entries, comprising: autocorrelating the codebook vectors for a first P of N entries (P << N) to determine first autocorrelation values (561′) therefore; evaluating the K codebook vectors by producing synthetic speech using the K codebook vectors and the first autocorrelation values and comparing the result to the input speech; determining which S of K codebook vectors (S << K) provide synthetic speech having less error compared to the input speech than the K-S remaining vectors evaluated; autocorrelating the codebook vectors for those S of K vectors for R entries (P < R ≦ N) in each codebook vector to provide second autocorrelation values therefore; re-evaluating the S of K vectors using the second autocorrelation values to identify which of the S codebook vectors provides the least error compared to the input speech; and forming the CELP code for the frame of speech using the identity of the codebook vector providing the least error.
Claim 4
Dependent Claim 22 words
The method of claim 3 wherein 5 ≦ P ≦ 10, 1 ≦ S ≦ 7, and R = N or N-1.
Claim 5
Dependent Claim 265 words
The method of claim 3 wherein the frame of digitized input speech denoted as X(n) comprises n=1 to n=N successive samples of input analog speech and the codebook is an adaptive codebook (155) containing K target perceptually weighted excitation vectors C k (n), where k is an integer index running from 1 to K, and n is another integer index identifying successive speech samples n=1 to n=N within the frame of speech, and wherein C k=j (n) denotes an optimum codebook vector which best synthesizes the target speech frame X(n), and wherein: the first autocorrelating step comprises, autocorrelating codebook vectors C k (n) according to the equation for m=0 to m=P where P << N; and wherein, the evaluating step comprises, recursively evaluating in a codebook searcher, all K vectors C k (n) using the P values of U k (P) found from the equation to determine the mean square error probability; and wherein, the determining step comprises, choosing those S of K vectors C k (n), where S << K, providing the closest match to the target speech X(n); and wherein, the second autocorrelating and re-evaluating steps comprise, recursively re-evaluating in a codebook searcher the S of K vectors chosen above now using all m=0 to m=N-1 values for determining U k (m) in the equation, thereby selecting the j th value C k=j (n) and a corresponding gain index G k=j providing the best fit to the target speech X(n); and wherein the forming step comprises, sending C k=j (n) and G k=j to a channel coder for transmission to a CELP synthesizer.
Claim 6
Independent Claim 225 words
An apparatus (100, 220, 220′, 600) for CELP coding of speech employing autocorrelation coefficients of vectors of an adaptive codebook (155) wherein analysis initially utilizes a subset of samples M in connection with a speech analysis frame of length L > M, comprising: means (610) for determining autocorrelation coefficients U k′ (m) of a first vector C k (n) of length M, where k = 1 and m is an autocorrelation lag index and n is an index of successive samples in the codebook vector, according to a first equation, for m = 0 to T < M; means (624, 626, 628, 630) for determining autocorrelation coefficients U k (m) of remaining codebook vectors incrementally where k ≧ 2 according to a second equation, U′ k (m) = [U′ k-1 (m) + C k (M+k-1)C k (M+k-1+m)] for m = 0 to T < M until (M+k-1)=L; means (632) for scaling the result of the first equation according to U₁(m) = ( L M )U′₁(m) , and scaling the result of the second equation according to U k (m) = ( L M+k-1 )U′ k (m) for m = 0 to T < M to produce a result for each m and each k; and means (220, 220′) for using the result to evaluate which codebook vector provides a least error compared to input speech.
Claim 7
Independent Claim 180 words
A method for CELP coding speech employing autocorrelation coefficients of vectors of an adaptive codebook (155) of vector length N wherein analysis initially utilizes a subset of samples M < N with a speech analysis frame of length L, comprising: calculating autocorrelation coefficients U k (m) of a first vector C k (n) of length M, where k = 1 and m is an autocorrelation lag index and n is an index of the successive samples in the codebook vector, according to, U₁(m) = ( L M )U′₁(m) for m = 0 to T < M; calculating the autocorrelation coefficients U k (m) of the remaining codebook vectors incrementally where k ≧ 2 according to, U′ k (m) = [U′ k-1 (m) + C k (M+k-1)C k (M+k-1+m)] U k (m) = ( L M+k-1 )U′ k (m) for m = 0 to T < M; repeating the second calculating step until (M+k-1) = L; and using the above-determined autocorrelation coefficients in determining which of the codebook vectors C k (n) produces the least error when compared to input speech.
Claim 8
Independent Claim 11 words
The method of claims 6 and 7 wherein T = M-1.
Claim 9
Independent Claim 227 words
A method for CELP coding speech employing autocorrelation coefficients of vectors of an adaptive codebook (155) identified by an index k, wherein analysis by synthesis initially utilizes M < L codebook values where L is the speech analysis frame length and m is an index running from 0 to M-1 describing the autocorrelation lag, comprising: calculating m=0 to M-1 autocorrelation coefficients of a first codebook vector k having n = 1 to M values therein where n is an index of the code vector values; placing the m=0 to M-1 calculated autocorrelation coefficients in a temporary store (630); scaling the coefficients in the temporary store by a multiplying factor L/M and transferring the result to an output (634); multiplying codebook values for n=M+j where j=1 by codebook values for n = M+j down to n = 1 and adding the products to the m=0 to M-1 autocorrelation coefficients, respectively, from the temporary store (630) to produce a result; replacing the autocorrelation coefficients in the temporary store (630) by the result; scaling the coefficients in the temporary store (630) by a multiplying factor L/(M+j) and transferring the result to the output (634); repeating the multiplying, replacing, scaling and transferring steps for j=2 to j=k-1 and k=(L+1-M); and using the autocorrelation coefficients transferred to the output to determining which of the codebook vectors provides better CELP coding of speech.
Claim 10
Independent Claim 259 words
An apparatus (100, 700) for CELP coding speech by combining a first vector with a set of second vectors identified by an index k, wherein the first and second vectors have values identified by indices n running from n=1 to N, comprising: a first N by N multiplexer (704) having n=1 to N outputs, n=1 to N first inputs, a second input, and n=1 to N select means, wherein a first logic level presented to n th select means couples the n th output to the n th first input and a second logic level presented to the n th select means couples the n th output to the second input; first means for supplying n=1 to N values of the first vector to the n=1 to N first inputs (701) of the first multiplexer (704); means (706) for presenting n=1 to N values of the second vector of index k=1 to the n=1 to N select means (708) of the first multiplexer (704), the second vector providing at the n=1 to N select means the first logic level for some values of n and the second logic level for other values of n; first accumulator means (712) coupled to the first multiplexer output (710) for adding together values of the first vector transferred to the outputs (710) of the first multiplexer (704) to provide a first sum (716); means (714) for indexing k from k=1 to k=K; and means (228) for synthesizing speech based on whichever sum identifies a second vector giving the closest match to target speech.
Claim 11
Dependent Claim 275 words
The apparatus of claim 10 wherein the second vectors have values 0, +1, -1, and wherein the means for presenting the n=1 to N values of the second vector comprises two portions, a first portion (706) having entries 0, 1 corresponding to the locations of values of 0, +1 of the second vectors and a second portion (707) having values 0, 1 corresponding to the locations of values 0, -1 of the second vectors, and wherein the presenting means presents the first portion thereof to the select means (708) of the first multiplexer (704), and wherein the apparatus further comprises: a second N by N multiplexer (705) having n=1 to N outputs, n=1 to N first inputs, a second input, and n=1 to N select means, wherein a first logic level presented to n th select means couples the n th output to the n th first input and a second logic level presented to the n th select means couples the n th output to the second input, and wherein the second portion of the presenting means is coupled to the select means of the second multiplexer; second means (701) for supplying n=1 to N values of the first vector to the n=1 to N first inputs of the second multiplexer; second accumulator means (713) coupled to the second multiplexer output for adding together values of the first vector transferred to the outputs of the second multiplexer to provide a second sum (717); and means (720) for combining the first (716) and second (717) sums to produce a result (721) used for determining which input vector (702) gives the closest match to target speech.
Claim 12
Independent Claim 138 words
An apparatus for CELP coding speech using a combination of a first vector V(n) having values identified by index n running from n=1 to N, and a set of second vectors S k (n) wherein each of the second vectors is identified by index k and wherein each of the second vectors has up to N values which are either zero or non-zero and are identified by index n from n=1 to N, comprising: means (704, 706) for identifying indices n k,i of S k (n) for different k wherein S k (n i ) are non-zero; means (712, 721) for adding values of the V(n) corresponding to indices n k,i to form sums Q(k); means (714) for identifying the value k=j corresponding to the largest value Q(k=j); and means (228) for synthesizing speech using S k=j (n).
Claim 13
Dependent Claim 106 words
The apparatus of claim 12 wherein successive vectors of the set of second vectors are determined by overlap of the preceding second vector according to an overlap amount Δk,Δn, wherein the means for identifying and adding comprise: means (705, 707) for identifying for k=1 indices n 1,i of S k (n) wherein S₁(n i ) are non-zero: means (705, 707) for determining further indices n k,i′ for k>1 wherein S k (n i′ ) are non-zero, starting from n 1,i and using the overlap amount Δk,Δn; and means (713, 721) for adding values of the V(n) for such indices and further indices to form sums Q(k).
Claim 14
Dependent Claim 80 words
The apparatus of claim 13 wherein the means for identifying, determining and adding comprise, means for identifying for k≧2, a first index n k,i˝ not previously identified wherein S k (n i˝ ) is non-zero, means for determining still further indices n k,i˝′ for k≧3 wherein S k (n i˝′ ) are non-zero starting from index n k,i˝ and using the overlap amount, and means for adding values of V(n) for such still further indices to further form sums Q(k).
Claim 15
Independent Claim 230 words
A method for CELP coding speech by combining a first vector (701) with a set of second vectors identified by index k, wherein the first and second vectors have values identified by indices n running from n=1 to N, comprising: providing an N by N first multiplexer (704) having n=1 to N outputs, n=1 to N first inputs, second inputs, and n=1 to N select means, wherein a first logic level presented to n th select means couples the n th output to the n th first input and a second logic level presented to the n th select means couples the n th output to the second input; supplying n=1 to N values of the first vector (701) to the n=1 to N first inputs of the first multiplexer; presenting n=1 to N values of the second vector (702) of index k=1 to n=1 to N select means of the first multiplexer (704), the second vector providing at the n=1 to N select means the first logic level for some values of n and the second logic level for other values of n; adding together values of the first vector coupled to the first multiplexer output to provide a sum; repeating the presenting and adding steps for further values of k; and synthesizing speech based on whichever sum identifies a second vector giving the closest match to target speech.
Claim 16
Dependent Claim 177 words
The method of claim 15 wherein the second vectors have values 0, +1, -1, and wherein the step of presenting the n=1 to N values of the second vector comprises presenting, a first portion having entries 0, 1 corresponding to the locations of values of 0, +1 of the second vectors to the first multiplexer and presenting a second portion having values 0, 1 corresponding to the locations of values 0, -1 of the second vectors to a second multiplexer like the first multiplexer and responsive to the first input vector at inputs thereof and the second portion of the second vectors at select means thereof, in the same manner as the first multiplexer, adding together values of the first vector coupled to the outputs of the first multiplexer to provide a first sum, and adding together values of the first vector coupled to outputs of the second multiplexer to provide a second sum; combining the first and second sums to provide an output useful for determining which input vector gives the closest match to target speech.
Claim 17
Independent Claim 124 words
A method for CELP coding speech using a combination of a first vector V(n) having values identified by index n running from n=1 to N, and a set of second vectors S k (n) wherein each of the second vectors is identified by index k and wherein each of the second vectors has up to N values which are either zero or non-zero and are identified by index n from n=1 to N, comprising: identifying indices n k,i of S k (n) for different k wherein S k (n i ) are non-zero; adding values of the V(n) corresponding to indices n k,i to form sums Q(k); identifying the value k=j corresponding to the largest value Q(k=j); and synthesizing speech using S k=j (n).
Claim 18
Dependent Claim 93 words
The method of claim 17 wherein successive vectors of the set of second vectors are determined by overlap of the preceding second vector according to an overlap amount Δk,Δn, wherein the identifying and adding steps comprise: identifying for k=1 indices n 1,i of S k (n) wherein S₁(n i ) are non-zero: starting from n 1,i and using the overlap amount Δk,Δn, determining further indices n k,i′ for k>1 wherein S k (n i′ ) are non-zero; and adding values of the V(n) for such indices and further indices to form sums Q(k).
Claim 19
Dependent Claim 68 words
The method of claim 18 further comprising identifying for k≧2, a first index n k,i˝ not previously identified wherein S k (n i˝ ) is non-zero, and then, starting from index n k,i˝ determining still further indices n k,i˝′ for k≧3 wherein S k (n i˝′ ) are non-zero using the overlap amount, and adding values of V(n) for such still further indices to further form sums Q(k).

References Cited (Backward Citations)

No citation records indexed.

USPTO Annuity & Maintenance Windows

Maintenance schedule is calculated for granted US utility patents.

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag