FR2729247A1 - Procede de codage de parole a analyse par synthese - Google Patents
Procede de codage de parole a analyse par synthese Download PDFInfo
- Publication number
- FR2729247A1 FR2729247A1 FR9500135A FR9500135A FR2729247A1 FR 2729247 A1 FR2729247 A1 FR 2729247A1 FR 9500135 A FR9500135 A FR 9500135A FR 9500135 A FR9500135 A FR 9500135A FR 2729247 A1 FR2729247 A1 FR 2729247A1
- Authority
- FR
- France
- Prior art keywords
- sep
- frame
- filter
- term
- short
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 29
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 47
- 238000003786 synthesis reaction Methods 0.000 claims abstract description 47
- 230000005284 excitation Effects 0.000 claims abstract description 43
- 230000004044 response Effects 0.000 claims abstract description 42
- 230000001419 dependent effect Effects 0.000 claims abstract 2
- 238000012546 transfer Methods 0.000 claims description 12
- 230000003595 spectral effect Effects 0.000 claims description 10
- 239000002131 composite material Substances 0.000 claims description 3
- 238000012937 correction Methods 0.000 claims description 3
- 238000013139 quantization Methods 0.000 description 37
- 230000007774 longterm Effects 0.000 description 33
- 239000013598 vector Substances 0.000 description 29
- 230000001934 delay Effects 0.000 description 27
- 238000004364 calculation method Methods 0.000 description 19
- 239000011159 matrix material Substances 0.000 description 19
- 238000012360 testing method Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 238000000354 decomposition reaction Methods 0.000 description 8
- 230000003111 delayed effect Effects 0.000 description 8
- 238000005457 optimization Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 6
- 230000000717 retained effect Effects 0.000 description 5
- 101100176198 Caenorhabditis elegans nst-1 gene Proteins 0.000 description 3
- 101100148606 Caenorhabditis elegans pst-1 gene Proteins 0.000 description 3
- 230000001755 vocal effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000006185 dispersion Substances 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- UWNXGZKSIKQKAH-UHFFFAOYSA-N Cc1cc(CNC(CO)C(O)=O)c(OCc2cccc(c2)C#N)cc1OCc1cccc(c1C)-c1ccc2OCCOc2c1 Chemical compound Cc1cc(CNC(CO)C(O)=O)c(OCc2cccc(c2)C#N)cc1OCc1cccc(c1C)-c1ccc2OCCOc2c1 UWNXGZKSIKQKAH-UHFFFAOYSA-N 0.000 description 1
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101100065246 Mus musculus Enc1 gene Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001575 pathological effect Effects 0.000 description 1
- 235000012830 plain croissants Nutrition 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/08—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
- G10L19/083—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being an excitation gain
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/08—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
- G10L19/10—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a multipulse excitation
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L2019/0001—Codebooks
- G10L2019/0003—Backward prediction of gain
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L2019/0001—Codebooks
- G10L2019/0011—Long term prediction filters, i.e. pitch estimation
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L2019/0001—Codebooks
- G10L2019/0012—Smoothing of parameters of the decoder interpolation
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L25/00—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
- G10L25/03—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the type of extracted parameters
- G10L25/24—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the type of extracted parameters the extracted parameters being the cepstrum
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L25/00—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
- G10L25/93—Discriminating between voiced and unvoiced parts of speech signals
Landscapes
- Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Measurement Of Mechanical Vibrations Or Ultrasonic Waves (AREA)
- Investigating Or Analysing Materials By The Use Of Chemical Reactions (AREA)
Abstract
On effectue, pour chaque trame de signal de parole, une analyse par prédiction linéaire du signal de parole pour déterminer les coefficients d'un filtre de synthèse à court terme, et une analyse en boucle ouverte pour déterminer un degré de voisement de la trame. On effectue pour chaque sous-trame au moins une analyse en boucle fermée pour déterminer une séquence d'excitation qui, soumise au filtre de synthèse à court terme, produit un signal synthétique représentatif du signal de parole. Chaque analyse en boucle fermée utilise la réponse impulsionnelle d'un filtre composé du filtre de synthèse à court terme et d'un filtre de pondération perceptuelle, en tronquant ladite réponse impulsionnelle à une longueur de troncature au plus égale au nombre d'échantillons par sous-trame et dépendant de la distribution énergétique de ladite réponse et du degré de voisement de la trame.
Description
PROCEDE DE CODAGE DE PAROLE A ANALYSE PAR SYNTHESE
La présente invention concerne le codage de la parole utilisant l'analyse par synthèse.
La présente invention concerne le codage de la parole utilisant l'analyse par synthèse.
La demanderesse a notamment décrit de tels codeurs de parole qu'elle a développés dans ses demandes de brevet européen 0 195 487, 0 347 307 et 0 469 997.
Dans un codeur de parole à analyse par synthèse, on effectue une prédiction linéaire du signal de parole pour obtenir les coefficients d'un filtre de synthèse à court terme modélisant la fonction de transfert du conduit vocal.
Ces coefficients sont transmis au décodeur, ainsi que des paramètres caractérisant une excitation à appliquer au filtre de synthèse à court terme. Dans la plupart des codeurs actuels, on recherche en outre les corrélations à plus long terme du signal de parole pour caractériser un filtre de synthèse à long terme rendant compte de la hauteur tonale de la parole. Lorsque le signal est voisé, l'excitation comporte en effet une composante prédictible pouvant être représentée par l'excitation passée, retardée de TP échantillons du signal de parole et affectée d'un gain gpe Le filtre de synthèse à long terme, également reconstitué au décodeur, a alors une fonction de transfert de la forme 1/B(z) avec B(z)=1-gp.z-TP. La partie restante, non prédictible, de l'excitation est appelée excitation stochastique.Dans les codeurs dits CELP ('Code Excited Linear Prediction-), l'excitation stochastique est constituée par un vecteur recherché dans un dictionnaire prédéterminé. Dans les codeurs dits MPLPC (-Multi-Pulse Linear Prediction Coding"), 1excitation stochastique comporte un certain nombre d'impulsions dont les positions sont recherchées par le codeur. En général, les codeurs CELP sont préférés pour les bas débits de transmission, mais ils sont plus complexes à mettre en oeuvre que les codeurs MPLPC.
Pour déterminer le retard de prédiction à long terme, on utilise fréquemment une analyse en boucle fermée contribuant directement à minimiser l'écart pondéré perceptuellement entre le signal de parole et le signal synthétique.
L'inconvénient de cette analyse en boucle fermée est qu'elle est exigeante en volume de calculs, car la sélection d'un retard implique l'évaluation d'un certain nombre de retards candidats et chaque évaluation d'un retard nécessite des calculs de produits de convolution entre l'excitation retardée et la réponse impulsionnelle du filtre de synthèse pondéré perceptuellement. L'inconvénient ci-dessus existe aussi pour la recherche de l'excitation stochastique, qui est également un processus en boucle fermée où interviennent des produits de convolution avec cette réponse impulsionnelle. L'excitation varie plus rapidement que les paramètres spectraux caractéristiques du filtre de synthèse à court terme. L'excitation (prédictible et stochastique) est typiquement déterminée une fois par sous-trame de 5ms, tandis que les paramètres spectraux le sont une fois par trame de 20 ms.La complexité et la fréquence de la recherche en boucle fermée de l'excita- tion en font l'étape la plus critique quant à la rapidité des calculs nécessaires dans un codeur de parole.
Un but principal de l'invention est de proposer un procédé de codage de parole de complexité réduite en ce qui concerne la ou les analyses en boucle fermée.
L'invention propose ainsi un procédé de codage à analyse par synthèse d'un signal de parole numérisé en trames successives subdivisées en sous-trames comportant un nombre déterminé d'échantillons, dans lequel on effectue pour chaque trame une analyse par prédiction linéaire du signal de parole pour déterminer les coefficients d'un filtre de synthèse à court terme, et une analyse en boucle ouverte pour déterminer un degré de voisement de la trame, et on effectue pour chaque sous-trame au moins une analyse en boucle fermée pour déterminer une séquence d'excitation qui, soumise au filtre de synthèse à court terme, produit un signal synthétique représentatif du signal de parole. Chaque analyse en boucle fermée utilise la réponse impulsionnelle d'un filtre composé du filtre de synthèse à court terme et d'un filtre de pondération perceptuelle.Lors de chaque analyse en boucle fermée, on utilise ladite réponse impulsionnelle en la tronquant à une longueur de troncature au plus égale au nombre d'échantillons par sous-trame et dépendant de la distribution énergétique de ladite réponse et du degré de voisement de la trame.
En général, la longueur de troncature sera d'autant plus grande que la trame est voisée. On peut ainsi réduire sensiblement la complexité des analyses en boucle fermée sans perdre en qualité de codage, grâce à une adaptation aux caractéristiques de voisement du signal.
D'autres particularités et avantages de l'invention apparaîtront dans la description ci-après d'exemples de réalisation préférés, mais non limitatifs, en référence aux dessins annexés, dans lesquels
- la figure 1 est un schéma synoptique d'une station de radiocommunication incorporant un codeur de parole mettant en oeuvre l'invention ;;
- la figure 2 est un schéma synoptique d'une station de radiocommunication apte à recevoir un signal produit par celle de la figure 1
- les figures 3 à 6 sont des organigrammes illustrant un processus d'analyse LTP en boucle ouverte appliqué dans le codeur de parole de la figure 1
- la figure 7 est un organigramme illustrant un processus de détermination de la réponse impulsionnelle du filtre de synthèse pondéré appliqué dans le codeur de parole de la figure 1
- les figures 8 à 11 sont des organigrammes illustrant un processus de recherche de l'excitation stochastique appliqué dans le codeur de parole de la figure 1.
- la figure 1 est un schéma synoptique d'une station de radiocommunication incorporant un codeur de parole mettant en oeuvre l'invention ;;
- la figure 2 est un schéma synoptique d'une station de radiocommunication apte à recevoir un signal produit par celle de la figure 1
- les figures 3 à 6 sont des organigrammes illustrant un processus d'analyse LTP en boucle ouverte appliqué dans le codeur de parole de la figure 1
- la figure 7 est un organigramme illustrant un processus de détermination de la réponse impulsionnelle du filtre de synthèse pondéré appliqué dans le codeur de parole de la figure 1
- les figures 8 à 11 sont des organigrammes illustrant un processus de recherche de l'excitation stochastique appliqué dans le codeur de parole de la figure 1.
Un codeur de parole mettant en oeuvre 1' invention est applicable dans divers types de systèmes de transmission et/ou de stockage de parole faisant appel à une technique de compression numérique. Dans l'exemple de la figure 1, le co deur de parole 16 fait partie d'une station mobile de radiocommunication. Le signal de parole S est un signal numérique échantillonné à une fréquence typiquement égale à 8kHz. Le signal S est issu d'un convertisseur analogique-numérique 18 recevant le signal de sortie amplifié et filtré d'un microphone 20. Le convertisseur 18 met le signal de parole S sous forme de trames successives elles-mêmes subdivisées en nst sous-trames de lst échantillons. Une trame de 20 ms comporte typiquement nst=4 sous-trames de lst=40 échantillons de 16 bits à 8kHz.En amont du codeur 16, le signal de parole S peut également être soumis à des traite-ments classiques de mise en forme tels qu'un filtrage de Hamming. Le codeur de parole 16 délivre une séquence binaire de débit sensiblement plus faible que celui du signal de parole S, et adresse cette séquence à un codeur canal 22 dont la fonction est dintro- duire des bits de redondance dans le signal afin de permettre une détection et/ou une correction d'éventuelles erreurs de transmission. Le signal de sortie du codeur canal 22 est ensuite modulé sur une fréquence porteuse par le modulateur 24, et le signal modulé est émis sur l'interface air.
Le codeur de parole 16 est un codeur à analyse par synthèse. Le codeur 16 détermine d'une part des paramètres caractérisant un filtre de synthèse à court terme modélisant le conduit vocal du locuteur, et d'autre part une séquence d'excitation qui, appliquée au filtre de synthèse à court terme, fournit un signal synthétique constituant une estimation du signal de parole S selon un critère de pondération perceptuelle.
Les coefficients ai sont déterminés par un module 26 d'analyse par prédiction linéaire à court terme du signal de parole S. Les ai sont les coefficients de prédiction linéaire du signal de parole S. L'ordre q de la prédiction linéaire est typiquement de l'ordre de 10. Les méthodes applicables par le module 26 pour la prédiction linéaire à court terme sont bien connues dans le domaine du codage de la parole.
Le module 26 met par exemple en oeuvre l'algorithme de
Durbin-Levinson (voir J. Makhoul : "Linear Prediction : A tutorial review", Proc. IEEE, Vol.63, N04, Avril 1975, p.
Durbin-Levinson (voir J. Makhoul : "Linear Prediction : A tutorial review", Proc. IEEE, Vol.63, N04, Avril 1975, p.
561-580). Les coefficients ai obtenus sont fournis à un module 28 qui les convertit en paramètres de raies spectrales (LSP). La représentation des coefficients de prédiction ai par des paramètres LSP est fréquemment utilisée dans des codeurs de parole à analyse par synthèse. Les paramètres LSP sont les nombres cos(2f1) rangés en ordre décroissant, les q fréquences de raies spectrales (LSF) normalisées fi(l#i#q) étant telles que les nombres complexes exp(2xjfi), avec i=1,3,...,q-1,q+1 et fq+l=0,5, soient les racines du polynôme Q(z) défini par Q(z)=A(z)+z (q+l)A(z 1) et que les nombres complexes exp(2xjfi), avec i=0,2,4,...,q et f0=0, soient les racines du polynôme Q (z) défini par Q (z)=A(z)~z-(q+l) A(z~1)
Les paramètres LSP peuvent être obtenus par le module de conversion 28 par la méthode classique des polynômes de
Chebyshev (voir P. Kabal et R.P. Ramachandran : "The computation of line spectral frequencies using Chebyshev polynomials", IEEE Trans. ASSP, Vol.34, N 6, 1986, pages 14191426). Ce sont des valeurs de quantification des paramètres
LSP, obtenues par un module de quantification 30, qui sont transmises au décodeur pour que celui-ci retrouve les coefficients ai du filtre de synthèse à court terme.Les coefficients ai peuvent être retrouvés simplement, étant donné que:
Q(z)=(1+z1) H (1-2cos(2@fi)z-1+z-2)
1=1,3,..
Les paramètres LSP peuvent être obtenus par le module de conversion 28 par la méthode classique des polynômes de
Chebyshev (voir P. Kabal et R.P. Ramachandran : "The computation of line spectral frequencies using Chebyshev polynomials", IEEE Trans. ASSP, Vol.34, N 6, 1986, pages 14191426). Ce sont des valeurs de quantification des paramètres
LSP, obtenues par un module de quantification 30, qui sont transmises au décodeur pour que celui-ci retrouve les coefficients ai du filtre de synthèse à court terme.Les coefficients ai peuvent être retrouvés simplement, étant donné que:
Q(z)=(1+z1) H (1-2cos(2@fi)z-1+z-2)
1=1,3,..
Q*(z)=(1-z-1) H (1-2cos(2@fi)z-1+z-2 )
i=2, =4,...,q
et A(z) = 1Q (z) +Q (z) ]/2
Pour éviter des variations brusques dans la fonction de transfert du filtre de synthèse à court terme, les paramètres LSP font l'objet d'une interpolation avant qu'on en déduise les coefficients de prédiction ai. Cette interpolation est effectuée sur les premières sous-trames de chaque trame du signal. Par exemple, si LSPt et LSPt~l désignent respectivement un paramètre LSP calculé pour la trame t et pour la trame précédente t-l, on prend: LSPt (0)=0,5.LSPt,1+0,5. LSPt, LsPt(l)=0,25.LsPt~l+0,75.LsPt et LSPt(2)=...=LSTt(nst-l)=LSPt pour les sous-trames 0,1,2,...,nst-1 de la trame t.Les coefficients ai du filtre l/A(z) sont alors déterminés, soustrame par sous-trame à partir des paramètres LSP interpolés.
Les paramètres LSP non quantifiés sont fournis par le module 28 à un module 32 de calcul des coefficients d'un filtre de pondération perceptuelle 34. Le filtre de pondération perceptuelle 34 a de préférence une fonction de transfert de la forme W(z)=A(z/Yl)/A(z/Y2) où y1 et r2 sont des coefficients tels que γ1 > γ2 > 0 (par exemple r=0,9 et t2=0,6). Les coefficients du filtre de pondération perceptuelle sont calculés par le module 32 pour chaque sous-trame après interpolation des paramètres LSP reçus du module 28.
Le filtre de pondération perceptuelle 34 reçoit le signal de parole S et délivre un signal SW pondéré perceptuellement qui est analysé par des modules 36, 38, 40 pour déterminer la séquence d'excitation. La séquence d'excitation du filtre à court terme se compose d'une excitation prédictible par un filtre de synthèse à long terme modélisant la hauteur tonale (pitch) de la parole, et d'une excitation stochastique non prédictible, ou séquence d'innovation.
Le module 36 effectue une prédiction à long terme (LTP) en boucle ouverte, cest-a-dire qu'il ne contribue pas directement à la minimisation de l'erreur pondérée. Dans le cas représenté, le filtre de pondération 34 intervient en amont du module d'analyse en boucle ouverte, mais il pourrait en être autrement : le module 36 pourrait opérer directement sur le signal de parole S ou encore sur le signal S débarrassé de ses corrélations à court terme par un filtre de fonction de transfert A(z). En revanche, les modules 38 et 40 fonctionnent en boucle fermée, cest-à-dire qu'ils contribuent directement à la minimisation de l'erreur pondérée perceptuellement.
Le filtre de synthèse à long terme a une fonction de transfert de la forme 1/B(z) avec B(z)=l-gp,z-TP où gp désigne un gain de prédiction à long terme et TP désigne un retard de prédiction à long terme. Le retard de prédiction à long terme peut typiquement prendre N=256 valeurs comprises entre rmin et rmax échantillons. Une résolution fractionnaire est prévue pour les plus petites valeurs de retard de façon à éviter les écarts trop perceptibles en termes de fréquence de voisement On utilise par exemple une résolution 1/6 entre rmin=21 et 33+5/6, une résolution 1/3 entre 34 et 47+2/3, une résolution 1/2 entre 48 et 88+1/2, et une résolution entière entre 89 et rmax=142. Chaque retard possible est ainsi quantifié par un index entier compris entre 0 et N-1=255.
Le retard de prédiction à long terme est déterminé en deux étapes. Dans la première étape, le module 36 d'analyse LTP en boucle ouverte détecte les trames voisées du signal de parole et détermine, pour chaque trame voisée, un degré de voisement MV et un intervalle de recherche du retard de prédiction à long terme. Le degré de voisement MV d'une trame voisée peut prendre trois valeurs : 1 pour les trames faiblement voisées, 2 pour les trames modérément voisées, et 3 pour les trames très voisées. Dans les notations utilisées ci-après, on prend un degré de voisement MV=O pour les trames non voisées.L'intervalle de recherche est défini par une valeur centrale représentée par son index de quantification ZP et par une largeur dans le domaine des index de quantification, dépendant du degré de voisement MV. Pour les trames faiblement ou modérément voisées (MV=1 ou 2) la largeur de l'intervalle de recherche est de N1 index, cest-à-dire que l'index du retard de prédiction à long terme sera recherché entre ZP-16 et ZP+15 si N1=32. Pour les trames très voisées (MV=3), la largeur de l'intervalle de recherche est de N3 index, c'est-à-dire que l'index du retard de prédiction à long terme sera recherché entre ZP-8 et ZP+7 si N3=16.
Une fois que le degré de voisement MV d'une trame a été déterminé par le module 36, le module 30 opère la quantification des paramètres LSP qui ont auparavant été déterminés pour cette trame. cette quantification est par exemple vectorielle, c'est-à-dire qu'elle consiste à sélectionner, dans une ou plusieurs tables de quantification prédéterminées, un jeu de paramètres quan-tifiés LSPQ qui présente une distance minimale avec le jeu de paramètres LSP fourni par le module 28. De façon connue, les tables de quantification diffèrent suivant le degré de voisement MV fourni au module de quantification 30 par l'analyseur en boucle ouverte 36.Un ensemble de tables de quantification pour un degré de voisement MV est déterminé, lors d'essais préalables, de façon à être statistiquement représentatif de trames ayant ce degré MV. Ces ensembles sont stockés à la fois dans les codeurs et dans les décodeurs mettant en oeuvre l'invention. Le module 30 délivre le jeu de paramètres quantifiés LSPQ ainsi que son index Q dans les tables des quantification applicables.
Le codeur de parole 16 comprend en outre un module 42 de calcul de la réponse impulsionnelle du filtre composé du filtre de synthèse à court terme et du filtre de pondération perceptuelle. Ce filtre composé a pour fonction de transfert W(z)/A(z). Pour le calcul de sa réponse impulsionnelle h=(h(O), h(l), ..., h(lst-l)) sur la durée d'une sous-trame, le module 42 prend pour le filtre de pondération perceptuelle W(z) celui correspondant aux paramètres LSP interpolés mais non quantifiés, c'est-a-dire celui dont les coefficients ont été calculés par le module 32, et pour le filtre de synthèse 1/A(z) celui correspondant aux paramètres LSP quantifiés et interpolés, c'est-à-dire celui qui sera effectivement reconstitué par le décodeur.
Dans la deuxième étape de la détermination du retard
TP de prédiction à long terme, le module 38 d'analyse LTP en boucle fermée détermine le retard TP pour chaque sous-trame des trames voisées (MV=1, 2 ou 3). Ce retard TP est caractérisé par une valeur différentielle DP dans le domaine des index de quantification, codée sur 5 bits si MV=1 ou 2 (N1=32), et sur 4 bits si Mv=3 (N3=16). L'index du retard TP vaut ZP+DP.De façon connue, l'analyse LTP en boucle fermée consiste à déterminer, dans l'intervalle de recherche des retards T de prédiction à long terme, le retard TP qui maximise, pour chaque sous-trame d'une trame voisée, la corrélation normalisée
où x(i) désigne le signal de parole pondéré SW de la soustrame auquel on a soustrait la mémoire du filtre de synthèse pondéré (c'est-à-dire la réponse à un signal nul, due à ses états initiaux, du filtre dont la réponse impulsionnelle h a été calculée par le module 42), et yT(i) désigne le produit de convolution
u(j-T) désignant la composante prédictible de la séquence d'excitation retardée de T échantillons, estimée par la technique bien connue du répertoire adaptatif ("adaptive codebook"). Pour les retards T inférieurs à la longueur d'une sous-trame, les valeurs manquantes de u(j-T) peuvent être extrapolées à partir des valeurs antérieures. Les retards fractionnaires sont pris en compte en suréchantillonnant le signal u(j-T) dans le répertoire adaptatif. Un suréchantillonnage d'un facteur m est obtenu au moyen de filtres polyphasés interpolateurs.
TP de prédiction à long terme, le module 38 d'analyse LTP en boucle fermée détermine le retard TP pour chaque sous-trame des trames voisées (MV=1, 2 ou 3). Ce retard TP est caractérisé par une valeur différentielle DP dans le domaine des index de quantification, codée sur 5 bits si MV=1 ou 2 (N1=32), et sur 4 bits si Mv=3 (N3=16). L'index du retard TP vaut ZP+DP.De façon connue, l'analyse LTP en boucle fermée consiste à déterminer, dans l'intervalle de recherche des retards T de prédiction à long terme, le retard TP qui maximise, pour chaque sous-trame d'une trame voisée, la corrélation normalisée
où x(i) désigne le signal de parole pondéré SW de la soustrame auquel on a soustrait la mémoire du filtre de synthèse pondéré (c'est-à-dire la réponse à un signal nul, due à ses états initiaux, du filtre dont la réponse impulsionnelle h a été calculée par le module 42), et yT(i) désigne le produit de convolution
u(j-T) désignant la composante prédictible de la séquence d'excitation retardée de T échantillons, estimée par la technique bien connue du répertoire adaptatif ("adaptive codebook"). Pour les retards T inférieurs à la longueur d'une sous-trame, les valeurs manquantes de u(j-T) peuvent être extrapolées à partir des valeurs antérieures. Les retards fractionnaires sont pris en compte en suréchantillonnant le signal u(j-T) dans le répertoire adaptatif. Un suréchantillonnage d'un facteur m est obtenu au moyen de filtres polyphasés interpolateurs.
Le gain gp de prédiction à long terme pourrait être déterminé par le module 38 pour chaque sous-trame, en appliquant la formule connue
Toutefois, dans une version préférée de l'invention, le gain gp est calculé par le module d'analyse stochastique 40
L'excitation stochastique déterminée pour chaque sous-trame par le module 40 est de type multi-impulsionnelle.
L'excitation stochastique déterminée pour chaque sous-trame par le module 40 est de type multi-impulsionnelle.
Une séquence d'innovation de lst échantillons comprend np impulsions de positions p(n) et d'amplitude g(n). Autrement dit, les impulsions ont une amplitude de 1 et sont associées à des gains respectifs g(n). Etant donné que le retard LTP n'est pas déterminé pour les sous-trames des trames non voisées, on peut prendre un nombre d'impulsions supérieur pour l'excitation stochastique relative à ces sous-trames, par exemple np=5 si Mv=l, 2 ou 3 et np=6 si MV=O. Les positions et les gains calculés par le module 40 d'analyse stochastique sont quantifiés par un module 44.
Un module d'ordonnancement des bits 46 reçoit les différents paramètres qui seront utiles au décodeur, et constitue la séquence binaire transmise au codeur canal 22.
Ces paramètres sont :
- 1' index Q des paramètres LSP quantifiés pour chaque trame
- le degré MV de voisement de chaque trame
- l'index ZP du centre de l'intervalle de recherche des retards LTP pour chaque trame voisée
- l'index différentiel DP du retard LTP pour chaque sous-trame d'une trame voisée, et le gain associé
- les positions p(n) et les gains g(n) des impulsions de l'excitation stochastique pour chaque sous-trame.
- 1' index Q des paramètres LSP quantifiés pour chaque trame
- le degré MV de voisement de chaque trame
- l'index ZP du centre de l'intervalle de recherche des retards LTP pour chaque trame voisée
- l'index différentiel DP du retard LTP pour chaque sous-trame d'une trame voisée, et le gain associé
- les positions p(n) et les gains g(n) des impulsions de l'excitation stochastique pour chaque sous-trame.
Certains de ces paramètres peuvent avoir une importance particulière dans la qualité de restitution de la parole ou une sensibilité particulière aux erreurs de transmission. On prévoit ainsi dans le codeur un module 48 qui reçoit les différents paramètres et qui ajoute à certains d'entre eux des bits de redondance permettant de détecter et/ou de corriger d'éventuelles erreurs de transmission. Par exemple, le degré de voisement MV codé sur deux bits étant un paramètre critique, on souhaite qu'il parvienne au décodeur avec aussi peu d'erreurs que possible. Pour cette raison, des bits de redondance sont ajoutés à ce paramètre par le module 48. On peut par exemple ajouter un bit de parité aux deux bits codant Mv et répéter une fois les trois bits ainsi obtenus. Cet exemple de redondance permet de détecter toutes les erreurs simples ou doubles et de corriger toutes les erreurs simples et 75% des erreurs doubles.
L'allocation du débit binaire par trame de 20 ms est par exemple celle indiquée dans le tableau I.
Dans l'exemple considéré ici, le codeur canal 22 est celui utilisé dans le système paneuropéen de radiocommunication avec les mobiles (GSM). Ce codeur canal, décrit en détail dans la Recommandation GSM 05.03, a été mis au point pour un codeur de parole à 13 kbit/s de type RPE-LTP qui produit également 260 bits par trame de 20 ms. La sensibilité de chacun des 260 bits a été déterminée à partir de tests d'écoute. Les bits issus du codeur source ont été regroupés en trois catégories.La première de ces catégories IA regroupe 50 bits qui sont codés convolutionnellement sur la
<tb> <SEP> paramètres <SEP> MV=0 <SEP> MV=1 <SEP> ou <SEP> 2 <SEP> Mv=3
<tb> <SEP> quantifiés
<tb> <SEP> LSP <SEP> 34 <SEP> 34 <SEP> 34
<tb> MV <SEP> + <SEP> redondance <SEP> 6 <SEP> 6 <SEP> 6
<tb> <SEP> ZP <SEP> ~ <SEP> <SEP> 8 <SEP> 8
<tb> <SEP> DP <SEP> 20 <SEP> 16
<tb> <SEP> 20 <SEP> 20 <SEP> 24
<tb> <SEP> positions <SEP> 80 <SEP> 72 <SEP> 72
<tb> <SEP> impulsions
<tb> <SEP> gains <SEP> 140 <SEP> 100 <SEP> 100
<tb> <SEP> impulsions
<tb> <SEP> Total <SEP> 260 <SEP> 260 <SEP> 260
<tb>
TABLEAU I base d'un polynôme générateur donnant une redondance d'un demi avec une longueur de contrainte égale à 5.Trois bits de parité sont calculés et ajoutés aux 50 bits de la catégorie IA avant le codage convolutionnel. La seconde catégorie (IB) compte 132 bits qui sont protégés à un taux d'un demi par le même polynôme que la catégorie précédente.
<tb> <SEP> quantifiés
<tb> <SEP> LSP <SEP> 34 <SEP> 34 <SEP> 34
<tb> MV <SEP> + <SEP> redondance <SEP> 6 <SEP> 6 <SEP> 6
<tb> <SEP> ZP <SEP> ~ <SEP> <SEP> 8 <SEP> 8
<tb> <SEP> DP <SEP> 20 <SEP> 16
<tb> <SEP> 20 <SEP> 20 <SEP> 24
<tb> <SEP> positions <SEP> 80 <SEP> 72 <SEP> 72
<tb> <SEP> impulsions
<tb> <SEP> gains <SEP> 140 <SEP> 100 <SEP> 100
<tb> <SEP> impulsions
<tb> <SEP> Total <SEP> 260 <SEP> 260 <SEP> 260
<tb>
TABLEAU I base d'un polynôme générateur donnant une redondance d'un demi avec une longueur de contrainte égale à 5.Trois bits de parité sont calculés et ajoutés aux 50 bits de la catégorie IA avant le codage convolutionnel. La seconde catégorie (IB) compte 132 bits qui sont protégés à un taux d'un demi par le même polynôme que la catégorie précédente.
La troisième catégorie (II) contient 78 bits non protégés.
Après application du code convolutionnel, les bits (456 par trame) sont soumis à un entrelacement. Le module d'ordonnancement 46 du nouveau codeur source mettant en oeuvre l'invention distribue les bits dans les trois catégories en fonction de l'importance subjective de ces bits.
Une station mobile de radiocommunication apte à recevoir le signal de parole traité par le codeur source 16 est représentée schématiquement sur la figure 2. Le signal radio reçu est d'abord traité par un démodulateur 50 puis par un décodeur canal 52 qui effectuent les opérations duales de celles du modulateur 24 et du codeur canal 22. Le décodeur canal 52 fournit au décodeur de parole 54 une séquence binaire qui, en l'absence d'erreurs de transmission ou lorsque les éventuelles erreurs ont été corrigées par le décodeur canal 52, correspond à la séquence binaire qu'a délivrée le module d'ordonnancement 46 au niveau du codeur 16. Le décodeur 54 comprend un module 56 qui reçoit cette séquence binaire et qui identifie les paramètres relatifs aux différentes trames et sous-trames. Le module 56 effectue en outre quelques contrôles sur les paramètres reçus.En particulier, le module 56 examine les bits de redondance introduits par le module 48 du codeur, pour détecter et/ou corriger les erreurs affectant les paramètres associés à ces bits de redondance.
Pour chaque trame de parole à synthétiser, un module 58 du décodeur reçoit le degré de voisement MV et l'index de
Q de quantification des paramètres LSP. Le module 58 retrouve les paramètres LSP quantifiés dans les tables correspondant à la valeur de MV, et, après interpolation, les convertit en coefficients ai pour le filtre de synthèse à court terme 60.
Q de quantification des paramètres LSP. Le module 58 retrouve les paramètres LSP quantifiés dans les tables correspondant à la valeur de MV, et, après interpolation, les convertit en coefficients ai pour le filtre de synthèse à court terme 60.
Pour chaque sous-trame de parole à synthétiser, un générateur d'impulsions 62 reçoit les positions pAn) des np impulsions de l'excitation stochastique. Le générateur 62 délivre des impulsions d'amplitude unitaire qui sont chacune multipliées en 64 par le gain associé g(n). La sortie de l'amplificateur 64 est adressée au filtre de synthèse à long terme 66. Ce filtre 66 a une structure à répertoire adaptatif. Les échantillons u de sortie du filtre 66 sont mémorisés dans le répertoire adaptatif 68 de facon à être disponibles pour les sous-trames ultérieures. Le retard TP relatif à une soustrame, calculé à partir des index de quantification ZP et DP, est fourni au répertoire adaptatif 68 pour produire le signal u convenablement retardé. L'amplificateur 70 multiplie le signal ainsi retardé par le gain gp de prédiction à long terme.Le filtre à long terme 66 comprend enfin un additionneur 72 qui ajoute les sorties des amplificateurs 64 et 70 pour fournir la séquence d'excitation u. Lorsque l'analyse LTP n'a pas été effectuée au codeur, par exemple Si MV=O, un gain de prédiction gp nul est imposé à l'amplifié cateur 70 pour les sous-trames correspondantes. La séquence d'excitation est adressée au filtre de synthèse à court terme 60, et le signal résultant peut encore, de façon connue, être soumis à un post-filtre 74 dont les coefficients dépendent des paramètres de synthèse reçus, pour former le signal de parole synthétique S. Le signal de sortie S du décodeur 54 est ensuite converti en analogique par le convertisseur 76 avant d'être amplifié pour commander un haut-parleur 78.
On va maintenant décrire, en référence au figures 3 à 6, le processus d'analyse LTP en boucle ouverte mis en oeuvre par le module 36 du codeur suivant un premier aspect de l'invention.
Dans une première étape 90, le module 36 calcule et mémorise, pour chaque sous-trame st=O,l,...,nst-l de la trame courante, les autocorrélations Cst (k) et les énergies retardées Gst(k) du signal de parole pondéré 5W pour les retards entiers k compris entre rmin et rmax ::
A l'étape 90, le module 36 détermine en outre, pour chaque sous-trame st, le retard entier Kst qui maximise l'estimation en boucle ouverte Pst Pst(k) du gain de prédiction à long terme sur la sous-trame st, en excluant les retards k pour lesquels l'autocorrélation Cst(k) est négative ou plus petite qu'une petite fraction de l'énergie Ru sot de la soustrame.L'estimation PSt(k) exprimée en décibels s'écrit Pst (k) = 20.log10[ROst/(ROst-CSt(k)/Gst(k))]
Maximiser St Pst(k) revient donc à maximiser l'expression
Xst (k) =Cst2 (k) /Gst (k) comme indiqué sur la figure 6. Le retard entier K St est le retard de base en résolution entière pour la sous-trame st. L'étape 90 est suivie par une comparaison 92 entre une première estimation en boucle ouverte du gain de prédiction global sur la trame courante et un seuil prédéterminé S0 typiquement compris entre 1 et 2 décibels (par exemple SO =1,5 dB). La première estimation du gain de prédiction global est égale à
où R0 est l'énergie totale de la trame (RO = R00+ R01+. .. + R0nst-1), et Xst(Kst)=Cst(Kst)/Gst (Kst) désigne le maximum déterminé à l'étape 90 relativement à la sous-trame st. comme l'indique la figure 6, la comparaison 92 peut être effectuée sans avoir à calculer le logarithme.
Maximiser St Pst(k) revient donc à maximiser l'expression
Xst (k) =Cst2 (k) /Gst (k) comme indiqué sur la figure 6. Le retard entier K St est le retard de base en résolution entière pour la sous-trame st. L'étape 90 est suivie par une comparaison 92 entre une première estimation en boucle ouverte du gain de prédiction global sur la trame courante et un seuil prédéterminé S0 typiquement compris entre 1 et 2 décibels (par exemple SO =1,5 dB). La première estimation du gain de prédiction global est égale à
où R0 est l'énergie totale de la trame (RO = R00+ R01+. .. + R0nst-1), et Xst(Kst)=Cst(Kst)/Gst (Kst) désigne le maximum déterminé à l'étape 90 relativement à la sous-trame st. comme l'indique la figure 6, la comparaison 92 peut être effectuée sans avoir à calculer le logarithme.
Si la comparaison 92 montre une première estimation du gain de prédiction inférieure au seuil S0, on considère que le signal de parole contient trop peu de corrélations à long terme pour être voisé, et le degré de voisement MV de la trame courante est pris égal à 0 à l'étape 94, ce qui termine dans ce cas les opérations effectuées par le module 36 sur cette trame. Si au contraire le seuil S0 est dépassé à l'étape 92, la trame courante est détectée comme voisée et le degré MV sera égal à 1, 2 ou 3. Le module 36 calcule alors, pour chaque sous-trame st, une liste Ist contenant des retards candidats pour constituer le centre ZP de l'intervalle de recherche des retards de prédiction à long terme.
Les opérations effectuées par le module 36 pour chaque sous-trame st (st initialisé à 0 à l'étape 96) d'une trame voisée commencent par la détermination 98 d'un seuil de sélection SE St en décibels égal à une fraction déterminée ss de l'estimation P5t(Kst) du gain de prédiction en décibels sur la sous-trame, maximisée à l'étape 90 (ss=0,75 typiquement) . Pour chaque sous-trame st d'une trame voisée, le module 36 détermine le retard de base rbf en résolution entière pour la suite du traitement. Ce retard de base pourrait être pris égal à l'entier Kst obtenu à l'étape 90.
Le fait de rechercher le retard de base en résolution fractionnaire autour de Kst permet toutefois de gagner en précision. L'étape 100 consiste ainsi, à rechercher, autour du retard entier Kst obtenu à l'étape 90, le retard fraction naire qui maximise l'expression CSt2/Gstv Cette recherche
St St peut être effectuée à la résolution maximale des retards fractionnaires (1/6 dans l'exemple décrit ici) même si le retard entier K St nest pas dans le domaine où cette résolution maximale s'applique.On détermine par exemple le nombre t qui maximise Cst2(Kst+6/6)/Gst(Kst+6/6) pour puis le retard de base rbf en résolution maximale est pris égal à KSt+ #st/6. Pour les valeurs fractionnaires T du retard, les autocorrélations st (T) et les énergies retardées Gst(T) sont obtenues par interpolation à partir des valeurs mémorisées à l'étape 90 pour les retards entiers. Bien entendu, le retard de base relatif à une sous-trame pourrait également être déterminé en résolution fractionnaire dès l'étape 90 et pris en compte dans la première estimation du gain de prédiction global sur la trame.
St St peut être effectuée à la résolution maximale des retards fractionnaires (1/6 dans l'exemple décrit ici) même si le retard entier K St nest pas dans le domaine où cette résolution maximale s'applique.On détermine par exemple le nombre t qui maximise Cst2(Kst+6/6)/Gst(Kst+6/6) pour puis le retard de base rbf en résolution maximale est pris égal à KSt+ #st/6. Pour les valeurs fractionnaires T du retard, les autocorrélations st (T) et les énergies retardées Gst(T) sont obtenues par interpolation à partir des valeurs mémorisées à l'étape 90 pour les retards entiers. Bien entendu, le retard de base relatif à une sous-trame pourrait également être déterminé en résolution fractionnaire dès l'étape 90 et pris en compte dans la première estimation du gain de prédiction global sur la trame.
Une fois que le retard de base rbf a été déterminé pour une sous-trame, on procède à un examen 101 des sousmultiples de ce retard afin de retenir ceux pour lesquels le gain de prédiction est relativement important (figure 4), puis des multiples du plus petit sous-multiple retenu (figure 5). A l'étape 102, l'adresse j dans la liste Ist et l'index mdu sous-multiple sont initialisés à 0 et 1, respectivement.
Une comparaison 104 est effectuée entre le sous-multiple rbf/m et le retard minimal rmin. Le sous-multiple rbf/m est à examiner s'il est supérieur à rmin. On prend alors pour l'entier i la valeur de l'index du retard quantifié ri le plus proche de rbf/m (étape 106), puis on compare, en 108, la valeur estimée du gain de prédiction Pst(ri) associée au retard quantifié ri pour la sous-trame considérée au seuil de sélection SE St calculé à l'étape 98
P5t(r) = 20.log10[ROst/[ROst- CSt2(r)/G5t(r))1 avec, pour les retards fractionnaires une interpolation des valeurs C St et G St calculées à l'étape 90 pour les retards entiers.Si St Pst(ri) < SEst, le retard ri n'est pas pris en considération, et on passe directement à l'étape 110 d'incrémentation de l'index m avant d'effectuer de nouveau la comparaison 104 pour le sous-multiple suivant. Si le test 108 montre que Pst(ri) # SEst, le retard ri est retenu et on exécute l'étape 112 avant d'incrémenter l'index m à l'étape 110. A l'étape 112, on mémorise l'index i à l'adresse j dans la liste Zist, on donne la valeur m à l'entier mO destiné à être égal à index du plus petit sous-multiple retenu, puis on incrémente dune unité adresse j.
P5t(r) = 20.log10[ROst/[ROst- CSt2(r)/G5t(r))1 avec, pour les retards fractionnaires une interpolation des valeurs C St et G St calculées à l'étape 90 pour les retards entiers.Si St Pst(ri) < SEst, le retard ri n'est pas pris en considération, et on passe directement à l'étape 110 d'incrémentation de l'index m avant d'effectuer de nouveau la comparaison 104 pour le sous-multiple suivant. Si le test 108 montre que Pst(ri) # SEst, le retard ri est retenu et on exécute l'étape 112 avant d'incrémenter l'index m à l'étape 110. A l'étape 112, on mémorise l'index i à l'adresse j dans la liste Zist, on donne la valeur m à l'entier mO destiné à être égal à index du plus petit sous-multiple retenu, puis on incrémente dune unité adresse j.
L'examen des sous-multiples du retard de base est terminé lorsque la comparaison 104 montre rbf/m < rmin. On examine alors les retards multiples du plus petit rbf/m0 des sous-multiples précédemment retenus suivant le processus illustré sur la figure 5. Cet examen commence par une initialisation 114 de l'index n du multiple : n=2. Une comparaison 116 est effectuée entre le multiple n.rbf/m0 et le retard maximal rmax. Si n.rbf/m0 > rmax, on effectue le test 118 pour déterminer si 1' index mO du plus petit sous-multiple est un multiple entier de n. Dans l'affirmative, le retard n.rbf/mO a déjà été examiné lors de l'examen des sousmultiples de rbf, et on passe directement à l'étape 120 d'incrémentation de l'index n avant d'effectuer de nouveau la comparaison 116 pour le multiple suivant.Si le test 118 montre que mO n'est pas un multiple entier de n, le multiple n.rbf/m0 est à examiner. On prend alors pour l'entier i la valeur de l'index du retard quantifié ri le plus proche de n.rbf/m0 (étape 122), puis on compare, en 124, la valeur estimée du gain de prédiction Pst(ri) au seuil de sélection
SEst. Si st Pst(ri) < SEst, le retard ri n'est pas pris en consi- dération, et on passe directement à l'étape 120 d'incrémentation de l'index n. Si le test 124 montre que Pst(ri) 2 SESt, le retard ri est retenu et on exécute l'étape 126 avant d'incrémenter l'index n à l'étape 120. A l'étape 126, on mémorise l'index i à l'adresse j dans la liste ISt, puis on incrémente d'une unité l'adresse j.
SEst. Si st Pst(ri) < SEst, le retard ri n'est pas pris en consi- dération, et on passe directement à l'étape 120 d'incrémentation de l'index n. Si le test 124 montre que Pst(ri) 2 SESt, le retard ri est retenu et on exécute l'étape 126 avant d'incrémenter l'index n à l'étape 120. A l'étape 126, on mémorise l'index i à l'adresse j dans la liste ISt, puis on incrémente d'une unité l'adresse j.
L'examen des multiples du plus petit sous-multiple est terminé lorsque la comparaison 116 montre que n.rbf/m0 > rmax. A ce moment, la liste ISt contient j index de retards candidats. Si on souhaite limiter à jmax la longueur maximale de la liste Ist pour les étapes suivantes, on peut prendre la longueur ist de cette liste égale à min(j,jmax) (étape 128) puis, à l'étape 130, ordonner la liste ISt dans l'ordre des gains Cst(rIst(j))/Gst(rIst(j)) décroissants pour Osj < jst de façon à ne conserver que les ist retards procurant les plus grandes valeurs de gain.La valeur de jmax est choisie en fonction du compromis visé entre l'ef- ficacité de la recherche des retards LTP et la complexité de cette recherche. Des valeurs typiques de jmax vont de 3 à 5.
Une fois que les sous-multiples et les multiples ont été examinés et que la liste 1St a ainsi été obtenue (figure 3), le module d'analyse 36 calcule une quantité Ymax déterminant une seconde estimation en boucle ouverte du gain de prédiction à long terme sur l'ensemble de la trame, ainsi que des index ZP, ZPO et ZP1 dans une phase 132 dont le déroulement est détaillé sur la figure 6. Cette phase 132 consiste à tester des intervalles de recherche de longueur N1 pour déterminer celui qui maximise une deuxième estimation du gain de prédiction global sur la trame. Les intervalles testés sont ceux dont les centres sont les retards candidats contenus dans la liste Ist calculée lors de la phase 101. La phase 132 commence par une étape 136 où l'adresse j dans la liste ISt est initialisée à 0. A l'étape 138, on vérifie si l'index ISt(j) a déjà été rencontré en testant un intervalle précédent centré sur Ist' (j') avec st' < st et 0j' < j5,, afin d'éviter de tester deux fois le même intervalle. Si le test 138 révèle que ISt(j) figurait déjà dans une liste Ist, avec st' < st, on incrémente directement l'adresse j à l'étape 140, puis on la compare à la longueur jst de la liste Zist. Si la comparaison 142 montre que j < jst, on revient à l'étape 138 pour la nouvelle valeur de l'adresse j.Lorsque la comparaison 142 montre que j=jst, tous les intervalles relatifs à la liste ISt ont été testés, et la phase 132 est terminée.
Lorsque le test 138 est négatif, on teste l'intervalle centré sur Ist(j) en commençant par l'étape 148 où on détermine, pour chaque sous-trame st', l'index ist, du retard optimal qui maximise sur cet intervalle l'estimation en boucle ouverte Pst(ri) du gain de prédiction à long terme, cest-a- dire qui maximise la quantité Yst'(i)=Cst'(ri)/Gst'(ri) où ri désigne le retard quantifié d'index i pour Ist(j)-Nl/2 #i < Ist(j)+Nl/2 et osi < N. Lors de la maximisation 148 relative à une sous-trame st', on écarte a priori les index i pour lesquels l'autocorrélation Cst'(ri) est négative, pour éviter de dégrader le codage.S'il se trouve que toutes les valeurs de i comprises dans l'intervalle testé [I(j)-Nl/2, I(j)+Nl/2[ donnent lieu à des autocorrélations Cst,(ri) négatives, on sélectionne l'index ist' pour lequel cette autocorrélation est la plus petite en valeur absolue.
Ensuite, en 150, la quantité Y déterminant la deuxième estimation du gain de prédiction global pour l'intervalle centré sur ISt(j) est calculée selon
puis comparée à Ymax, où Ymax représente la valeur à maximiser. Cette valeur Ymax est par exemple initialisée à
O en même temps que l'index st à l'étape 96. Si Y5Ymax, on passe directement à l'étape 140 d'incrémentation de l'index j. Si la comparaison 150 montre que Y > Ymax, on exécute l'étape 152 avant d'incrémenter l'adresse j à l'étape 140.
puis comparée à Ymax, où Ymax représente la valeur à maximiser. Cette valeur Ymax est par exemple initialisée à
O en même temps que l'index st à l'étape 96. Si Y5Ymax, on passe directement à l'étape 140 d'incrémentation de l'index j. Si la comparaison 150 montre que Y > Ymax, on exécute l'étape 152 avant d'incrémenter l'adresse j à l'étape 140.
A cette étape 152, l'index ZP est pris égal à Ist(j) et les index ZPO et ZP1 sont respectivement pris égaux au plus petit et au plus grand des index ist déterminés à l'étape 148.
A la fin de la phase 132 relative à une sous-trame st, l'index st est incrémenté d'une unité (étape 154) puis comparé, à l'étape 156, au nombre nst de sous-trames par trame. Si st < nst, on revient à l'étape 98 pour effectuer les opérations relatives à la sous-trame suivante. Lorsque la comparaison 156 montre que st=nst, l'index ZP désigne le centre de l'intervalle de recherche qui sera fourni au module 38 d'analyse LTP en boucle fermée, et ZPO et ZP1 sont des index dont l'écart est représentatif de la dispersion des retards optimaux par sous-trame dans 1' intervalle centré sur
ZP.
ZP.
A l'étape 158, le module 36 détermine le degré de voisement MV, sur la base de la seconde estimation en boucle ouverte du gain exprimée en décibels : Gp=20.1og10(RO/RO- Ymax). On fait appel à deux autres seuils S1 et S2. Si GpSS1, le degré de voisement MV est pris égal à 1 pour la trame courante. Le seuil S1 est typiquement compris entre 3 et 5 dB; par exemple 51=4 dB. Si Sl'=Gps2, le degré de voisement MV est pris égal à 2 pour la trame courante. Le seuil S2 est typiquement compris entre 5 et 8 dB ; par exemple S2=7 dB. Si
Gp > S2, on examine la dispersion des retards optimaux pour les différentes sous-trames de la trame courante.Si ZP1-ZP < N3/2 et ZP-ZPODN3/2, un intervalle de longueur N3 centré sur ZP suffit à prendre en compte tous les retards optimaux et le degré de voisement est pris égal à 3 (si Gp > S2). Sinon, si ZP1-ZP#N3/2 ou ZP-ZPO > N3/2, le degré de voisement est pris égal à 2 (si Gp > S2).
Gp > S2, on examine la dispersion des retards optimaux pour les différentes sous-trames de la trame courante.Si ZP1-ZP < N3/2 et ZP-ZPODN3/2, un intervalle de longueur N3 centré sur ZP suffit à prendre en compte tous les retards optimaux et le degré de voisement est pris égal à 3 (si Gp > S2). Sinon, si ZP1-ZP#N3/2 ou ZP-ZPO > N3/2, le degré de voisement est pris égal à 2 (si Gp > S2).
L'index ZP du centre de l'intervalle de recherche du retard de prédiction pour une trame voisée peut être compris entre 0 et N-1=255, et l'index différentiel DP déterminé pour le module 38 peut aller de -16 à +15 si MV=1 ou 2, et de -8 à +7 si MV=3 (cas N1=32, N3=16). L'index ZP+DP du retard TP finalement déterminé peut donc dans certains cas être plus petit que 0 ou plus grand que 255. Ceci permet à l'analyse
LTP en boucle fermée de porter également sur quelques retards
TP plus petits que rmin ou plus grands que rmax. On améliore ainsi la qualité subjective de la restitution des voix dites pathologiques et des signaux non vocaux (fréquences vocales
DTMF ou fréquences de signalisation utilisées par le réseau téléphonique commuté).Une autre possibilité est de prendre pour l'intervalle de recherche les 32 premiers ou derniers index de quantification des retards si ZP < 16 ou ZP > 240 avec
MV=1 ou 2, et les 16 premiers ou derniers index si ZP < 8 ou ZP > 248 avec MV=3.
LTP en boucle fermée de porter également sur quelques retards
TP plus petits que rmin ou plus grands que rmax. On améliore ainsi la qualité subjective de la restitution des voix dites pathologiques et des signaux non vocaux (fréquences vocales
DTMF ou fréquences de signalisation utilisées par le réseau téléphonique commuté).Une autre possibilité est de prendre pour l'intervalle de recherche les 32 premiers ou derniers index de quantification des retards si ZP < 16 ou ZP > 240 avec
MV=1 ou 2, et les 16 premiers ou derniers index si ZP < 8 ou ZP > 248 avec MV=3.
Le fait de réduire l'intervalle de recherche des retards pour les trames très voisées (typiquement 16 valeurs pour MV=3 au lieu de 32 pour MV=1 ou 2) permet de diminuer la complexité de 1 'analyse LTP en boucle fermée effectuée par le module 38 en réduisant le nombre de convolutions yT(i) à calculer suivant la formule (1). Un autre avantage est qu'un bit de codage de l'index différentiel DP est économisé. Le débit de sortie étant constant, ce bit peut être réalloué au codage d'autres paramètres. On peut en particulier allouer ce bit supplémentaire à la quantification du gain de prédiction à long terme gp calculé par le module 40. En effet, une meilleure précision sur le gain gp grâce à un bit de quantification supplémentaire est appréciable car ce paramètre est perceptuellement important pour les sous-trames très voisées (MV=3). Une autre possibilité est de prévoir un bit de parité pour le retard TP et/ou le gain gp, permettant de détecter d'éventuelles erreurs affectant ces paramètres.
Il est possible d'apporter quelques modifications au processus d'analyse LTP en boucle ouverte décrit ci-dessus en référence aux figures 3 à 6.
Suivant une première variante de ce processus, les premières optimisations effectuées à l'étape 90 relativement aux différentes sous-trames sont remplacées par une seule optimisation portant sur l'ensemble de la trame. Outre les paramètres Cet (ka et GSt(k) calculés pour chaque sous-trame st, on calcule également les autocorrélations C(k) et les énergies retardées G(k) pour l'ensemble de la trame
On détermine alors le retard de base en résolution entière K qui maximise X(k)=C2(k)/G(k) pour rmin s k s rmax.
La première estimation du gain comparée à 50 à l'étape 92 est alors P(K)=20.log10 [RO/ [RO-X(K)] ]. On détermine ensuite, autour de K, un seul retard de base en résolution fractionnaire rbf et l'examen 101 des sous-multiples et des multiples est effectué une seule fois et produit une seule liste I au lieu de nst listes ISt. La phase 132 est ensuite effectuée une seule fois pour cette liste I, en ne distinguant les soustrames qu'aux étapes 148, 150 et 152. Cette variante de réalisation a pour avantage de réduire la complexité de l'analyse en boucle ouverte.
Suivant une seconde variante du processus d'analyse
LTP en boucle ouverte, le domaine [rmin, rmax] des retards possibles est subdivisé en nz sous-intervalles ayant par exemple la même longueur (nz=3 typiquement), et les premières optimisations effectuées à 1 'étape 90 relativement aux différentes sous-trames sont remplacées par nz optimisations dans les différents sous-intervalles portant chacune sur l'ensemble de la trame. On obtient ainsi nz retards de base
K1 t Knz en résolution entière. La décision voisé/non voisé (étape 92) est prise sur la base de celui des retards de base Ki qui procure la plus grande valeur pour la première estimation en boucle ouverte du gain de prédiction à long terme.Ensuite, si la trame est voisée, on détermine les retards de base en résolution fractionnaire par le même processus qu'à l'étape 100, mais en autorisant seulement les valeurs de retard quantifiées. L'examen 101 des sousmultiples et des multiples n'est pas effectué. Pour la phase 132 de calcul de la seconde estimation du gain de prédiction, on prend comme retards candidats les nz retards de base précédemment déterminés. Cette seconde variante permet de se dispenser de l'examen systématique des sous-multiples et des multiples qui sont en général pris en considération grace à la subdivision du domaine des retards possibles.
LTP en boucle ouverte, le domaine [rmin, rmax] des retards possibles est subdivisé en nz sous-intervalles ayant par exemple la même longueur (nz=3 typiquement), et les premières optimisations effectuées à 1 'étape 90 relativement aux différentes sous-trames sont remplacées par nz optimisations dans les différents sous-intervalles portant chacune sur l'ensemble de la trame. On obtient ainsi nz retards de base
K1 t Knz en résolution entière. La décision voisé/non voisé (étape 92) est prise sur la base de celui des retards de base Ki qui procure la plus grande valeur pour la première estimation en boucle ouverte du gain de prédiction à long terme.Ensuite, si la trame est voisée, on détermine les retards de base en résolution fractionnaire par le même processus qu'à l'étape 100, mais en autorisant seulement les valeurs de retard quantifiées. L'examen 101 des sousmultiples et des multiples n'est pas effectué. Pour la phase 132 de calcul de la seconde estimation du gain de prédiction, on prend comme retards candidats les nz retards de base précédemment déterminés. Cette seconde variante permet de se dispenser de l'examen systématique des sous-multiples et des multiples qui sont en général pris en considération grace à la subdivision du domaine des retards possibles.
Suivant une troisième variante du processus d'analyse
LTP en boucle ouverte, la phase 132 est modifiée en ce que, aux étapes d'optimisation 148, on détermine d'une part l'index ist, qui maximise Cst'(ri)/Gst'(ri) pour Ist(j)N1/2si < Ist(j)+N1/2 et Osi < N, et d'autre part, au cours de la même boucle de maximisation, l'index kst' qui maximise cette même quantité sur un intervalle réduit
Ist(i)-N3/25i < Ist(i)+N3/2 et O Osi < N. L'étape 152 est également modifiée : on ne mémorise plus les index ZPO et
ZP1, mais une quantité Ymax' définie de la même manière que
Ymax mais en référence à l'intervalle de longueur réduite
LTP en boucle ouverte, la phase 132 est modifiée en ce que, aux étapes d'optimisation 148, on détermine d'une part l'index ist, qui maximise Cst'(ri)/Gst'(ri) pour Ist(j)N1/2si < Ist(j)+N1/2 et Osi < N, et d'autre part, au cours de la même boucle de maximisation, l'index kst' qui maximise cette même quantité sur un intervalle réduit
Ist(i)-N3/25i < Ist(i)+N3/2 et O Osi < N. L'étape 152 est également modifiée : on ne mémorise plus les index ZPO et
ZP1, mais une quantité Ymax' définie de la même manière que
Ymax mais en référence à l'intervalle de longueur réduite
Dans cette troisième variante, la détermination 158 du mode de voisement conduit à sélectionner plus souvent le degré de voisement MV=3.On prend également en compte, en plus du gain Gp précédemment décrit, une troisième estimation en boucle ouverte du gain LTP, correspondant à Ymax'
Gp'=20.log10[RO/(RO-Ymax')]. Le degré de voisement est MV=1 si GpSSl, MV=3 si Gp' > S2 et MV=2 si aucune de ces deux conditions n'est vérifiée. En augmentant ainsi la proportion de trames de degré MV=3, on réduit la complexité moyenne de l'analyse en boucle fermée et on améliore la robustesse aux erreurs de transmission.
Gp'=20.log10[RO/(RO-Ymax')]. Le degré de voisement est MV=1 si GpSSl, MV=3 si Gp' > S2 et MV=2 si aucune de ces deux conditions n'est vérifiée. En augmentant ainsi la proportion de trames de degré MV=3, on réduit la complexité moyenne de l'analyse en boucle fermée et on améliore la robustesse aux erreurs de transmission.
Une quatrième variante du processus d'analyse LTP en boucle ouverte concerne surtout les trames faiblement voisées (MV=1). Ces trames correspondent souvent à un début ou à une fin d'une zone de voisement. Fréquemment, ces trames peuvent comporter de une à trois sous-trames pour lesquelles le coefficcient de gain du filtre de synthèse à long terme est nul voire négatif. Il est proposé de ne pas effectuer l'analyse
LTP en boucle fermée pour les sous-trames en question, afin de réduire la complexité moyenne du codage. Ceci peut être réalisé en mémorisant à l'étape 152 de la figure 6 nst pointeurs indiquant pour chaque sous-trame st' si l'autocorréla- tion Cst. correspondant au retard d'index ist. est négative ou encore très petite.Une fois que tous les intervalles référencés dans les listes Zist, les sous-trames pour lesquelles le gain de prédiction est négatif ou négligeable peuvent être identifiées en consultant les nst pointeurs. Le cas échéant le module 38 est désactivé pour les sous-trames correspondantes. Ceci n'affecte pas la qualité de l'analyse LTP puisque le gain de prédiction correspondant à ces sous-trames sera de toutes façons quasiment nul.
LTP en boucle fermée pour les sous-trames en question, afin de réduire la complexité moyenne du codage. Ceci peut être réalisé en mémorisant à l'étape 152 de la figure 6 nst pointeurs indiquant pour chaque sous-trame st' si l'autocorréla- tion Cst. correspondant au retard d'index ist. est négative ou encore très petite.Une fois que tous les intervalles référencés dans les listes Zist, les sous-trames pour lesquelles le gain de prédiction est négatif ou négligeable peuvent être identifiées en consultant les nst pointeurs. Le cas échéant le module 38 est désactivé pour les sous-trames correspondantes. Ceci n'affecte pas la qualité de l'analyse LTP puisque le gain de prédiction correspondant à ces sous-trames sera de toutes façons quasiment nul.
Un autre aspect de l'invention concerne le module 42 de calcul de la réponse impulsionnelle du filtre de synthèse pondéré. Le module 38 d'analyse LTP en boucle fermée a besoin de cette réponse impulsionnelle h sur la durée d'une soustrame pour calculer les convolutions yT(i) selon la formule (1). Le module 40 d'analyse stochastique en a également besoin pour calculer des convolutions comme on le verra plus loin. Le fait d'avoir à calculer des convolutions avec une réponse h s'étendant sur la durée d'une sous-trame (lst=40 typiquement) implique une relative complexité du codage, qu' il serait souhaitable de réduire notamment pour augmenter l'autonomie de la station mobile. Dans certains cas il a été proposé de tronquer la réponse impulsionnelle à une longueur inférieure à la longueur d'une sous-trame (par exemple à 20 échantillons), mais ceci peut dégrader la qualité du codage.
On propose selon l'invention de tronquer la réponse impulsionnelle h en tenant compte d'une part de la distribution énergétique de cette réponse et d'autre part du degré de voi sement MV de la trame considérée, déterminé par le module 36 d'analyse LTP en boucle ouverte.
Les opérations effectuées par le module 42 sont par exemple conformes à l'organigramme de la figure 7. La réponse impulsionnelle est d'abord calculée à l'étape 160 sur une longueur pst supérieure à la longueur d'une sous-trame et suffisamment grande pour qu'on soit assuré de prendre en compte toute l'énergie de la réponse impulsionnelle (par exemple pst=60 pour nst=4 et lst=40 si la prédiction linéaire à court terme est d'ordre q=10).A l'étape 160, on calcule également les énergies tronquées de la réponse impulsionnelle :
Les composantes h(i > de la réponse impulsionnelle et les énergies tronquées Eh(i) peuvent être obtenues en filtrant une impulsion unitaire au moyen d'un filtre de fonction de transfert W(z)tA(z) d'états initiaux nuls, ou encore par récurrence
Eh(i) = Eh Eh(i-1) + (h < I) J2 pour O < i < pst, avec f(i)=h(i)=0 pour i < O, 8(0)=f(0)=h(0)=Eh(0 ) =1, et 8(i)=O pour i*O. Dans l'expression (2), les coefficients ak sont ceux intervenant dans le filtre de pondération perceptuelle, c'est-à-dire les coefficients de prédiction linéaire interpolés mais non quantifiés, tandis que dans l'expression (3), les coefficients ak sont ceux appliqués au filtre de synthèse, c'est-à-dire les coefficients de prédiction linéaire quantifiés et interpolés.
Ensuite le module 42 détermine la plus petite longueur La telle que l'énergie Eh(La-l) de la réponse impul sionnelle tronquée à La échantillons soit au moins égale à une proportion a de son énergie totale Eh(pst-l) estimée sur pst échantillons. Une valeur typique de a est 98%. Le nombre
La est initialisé à pst à l'étape 162 et décrémenté d'une unité en 166 tant que Eh(L -2) > avEh(pst-l) (test 164). La longueur La cherchée est obtenue lorsque le test 164 montre que Eh(Lα-2)#α.Eh(pst-1).
La est initialisé à pst à l'étape 162 et décrémenté d'une unité en 166 tant que Eh(L -2) > avEh(pst-l) (test 164). La longueur La cherchée est obtenue lorsque le test 164 montre que Eh(Lα-2)#α.Eh(pst-1).
Pour tenir compte du degré de voisement Mv, un terme correcteur A(MV) est ajouté à la valeur de La qui a été obtenue (étape 168). Ce terme correcteur est de préférence une fonction croissante du degré de voisement. On peut par exemple prendre A < 0)=-5, #(1)=0, #(2)=+5 et A(3)=+7. De cette façon, la réponse impulsionnelle h sera déterminée de façon d'autant plus précise que le voisement de la parole est important. La longueur de troncature Lh de la réponse impulsionnelle est prise égale à La si Lauist et à nst sinon. Les échantillons restants de la réponse impulsionnelle (h(i)=O avec i2Lh) peuvent être annulés.
Avec la troncature de la réponse impulsionnelle, le calcul (1) des convolutions yT(i) par le module 38 d'analyse
LTP en boucle fermée est modifié de la façon suivante :
LTP en boucle fermée est modifié de la façon suivante :
L'obtention de ces convolutions, qui représente une part importante des calculs effectués, nécessite donc sensiblement moins de multiplications, d'additions et d'adressages dans le répertoire adaptatif lorsque la réponse impulsionnelle est tronquée. La troncature dynamique de la réponse impulsionnelle faisant intervenir le degré de voisement MV permet d'obtenir une telle réduction de complexité sans affecter la qualité du codage. Les mêmes considérations s'appliquent pour les calculs de convolutions effectués par le module 40 d'analyse stochastique.Ces avantages sont parti-culièrement appréciables lorsque le filtre de pondération perceptuelle a une-fonction de transfert de la forme W(z)=A(z/Tl)/A(z/Y2) avec 0 < Y2 < Y1 < 1 qui donne lieu à des réponses impulsionnelles généralement plus longues que celles de la forme
W(z)=A(z)/A(z/Y) plus communément employées dans les codeurs à analyse par synthèse.
W(z)=A(z)/A(z/Y) plus communément employées dans les codeurs à analyse par synthèse.
Un troisième aspect de l'invention concerne le module 40 d'analyse stochastique servant à modéliser la partie non prédictible de l'excitation.
L'excitation stochastique considérée ici est de type multi-impulsionnelle. L'excitation stochastique relative à une sous-trame est représentée par np impulsions de positions p(n) et d'amplitudes, ou gains, g(n) (lsnsnp). Le gain gp de prédiction à long terme peut également être calculé au cours du même processus. De façon générale, on peut considérer que la séquence d'excitation relative à une sous-trame comporte nc contributions associées respectivement à nc gains. Les contributions sont des vecteurs lst échantillons qui, pondérés par les gains associés et sommés correspondent à la séquence d'excitation du filtre de synthèse à court terme.
Une des contributions peut être prédictible, ou plusieurs dans le cas d'un filtre de synthèse à long terme à plusieurs prises ("multi-tap pitch synthesis filtrer"). Les autres contributions sont dans le cas présent np vecteurs ne comportant que des O sauf une impulsion d'amplitude 1. On a donc nc=np si MV=O, et nc=np+l si MV=1, 2 ou 3.
L'analyse multi-impulsionnelle incluant le calcul du gain gp=gZO) consiste, de façon connue, à trouver pour chaque sous-trame des positions p(n) (lsnsnp) et des gains g(n) (Onnp) qui minimisent l'erreur quadratique pondérée perceptuellement E entre le signal de parole et le signal synthétisé, donnée par :
les gains étant solution du système linéaire g.B=b.
les gains étant solution du système linéaire g.B=b.
Dans les notations ci-dessus
- x désigne un vecteur-cible initial composé des lst échantillons du signal de parole pondéré SW sans mémoire x=(x(0),x(l),..., x(lst-l) ), les x(i) ayant été calculés comme indiqué précédemment lors de l'analyse LTP en boucle fermée
- g désigne le vecteur ligne composé des np+1 gains g=(g(O)=gpR g(l),...,g(np)) ;
- les vecteurs-ligne Fp(n > (0#n < nc) sont des contributions pondérées ayant pour composantes i(0#i < lst) les produits de convolution entre la contribution n à la séquence d'excitation et la réponse impulsionnelle h du filtre de synthèse pondéré
- b désigne le vecteur ligne composé des nc produits scalaires entre le vecteur X et les vecteurs ligne Fp(n);;
- B désigne une matrice symétrique à nc lignes et nc colonnes dont le terme Bi,j=Fp(i).Fp(j)T (0#i,j < nc) est égal au produit scalaire entre les vecteurs Fp(i) et Fp < j) précédemment définis
- (.)T désigne la transposition matricielle.
- x désigne un vecteur-cible initial composé des lst échantillons du signal de parole pondéré SW sans mémoire x=(x(0),x(l),..., x(lst-l) ), les x(i) ayant été calculés comme indiqué précédemment lors de l'analyse LTP en boucle fermée
- g désigne le vecteur ligne composé des np+1 gains g=(g(O)=gpR g(l),...,g(np)) ;
- les vecteurs-ligne Fp(n > (0#n < nc) sont des contributions pondérées ayant pour composantes i(0#i < lst) les produits de convolution entre la contribution n à la séquence d'excitation et la réponse impulsionnelle h du filtre de synthèse pondéré
- b désigne le vecteur ligne composé des nc produits scalaires entre le vecteur X et les vecteurs ligne Fp(n);;
- B désigne une matrice symétrique à nc lignes et nc colonnes dont le terme Bi,j=Fp(i).Fp(j)T (0#i,j < nc) est égal au produit scalaire entre les vecteurs Fp(i) et Fp < j) précédemment définis
- (.)T désigne la transposition matricielle.
Pour les impulsions de l'excitation stochastique (1#n Snp=nc-l) les vecteurs Fp(n) sont simplement constitués par le vecteur de la réponse impulsionnelle h décalée de p(n) échantillons. Le fait de tronquer la réponse impulsionnelle comme décrit précédemment permet donc de réduire sensiblement le nombre d'opérations utiles au calcul des produits scalaires faisant intervenir ces vecteurs Fp(n). Pour la contribution prédictible de l'excitation, le vecteur Fp(o)=YTp a pour composantes Fp(0)(i) (0#i < lst) les convolutions yTP(i) que le module 38 a calculées suivant la formule (1) ou (1') pour le retard de prédiction à long terme sélectionné TP. Si MV=O, la contribution n=O est également de type impulsion nelle et la position p(O) est à calculer.
Minimiser l'erreur quadratique E définie ci-dessus revient à trouver l'ensemble des positions p(n) qui maximisent la corrélation normalisée b.B 1.bT puis à calculer les gains selon g=b.B-1.
Mais une recherche exhaustive des positions d'impulsion nécessiterait un volume de calculs excessif. Pour atténuer ce problème, l'approche multi-impulsionnelle applique en général une procédure sous-optimale consistant à calculer successivement les gains et/ou les positions d'impulsion pour chaque contribution.Pour chaque contribution n (0#n < nc), on détermine d'abord la position p(n) qui maximise la corrélation normalisée (F.e1T)2/(F. FpT), on recalcule les gains gn(0) à g n gn(n) selon gn=bn.Bn 1, où n=(gn(0),...,gn(n)), bn=(b(0),...,b(n)) et Bn={Bi,j}0#i,j#n, puis on calcule pour l'itération suivante le vecteur-cible en égal au vecteur-cible initial X auquel on retranche les contributions 0 à n du signal synthétique pondéré multipliées par leurs gains respectifs
A l'issue de la dernière itération nc-l, les gains gnc-1(i) sont les gains sélectionnés et l'erreur quadratique minimisée E est égal à l'énergie du vecteur-cible enC-l
La méthode ci-dessus donne des résultats satisfaisants, mais elle nécessite l'inversion d'une matrice B n à chaque itération. Dans leur article "Amplitude Optimization and Pitch Prediction in Multipulse Codera (IEEE Trans. on
Acoustics, Speech, and Signal Processing, Vol.37, N 3, Mars 1989, pages 317-327), S. Singhal et B.S. Atal ont proposé de simplifier le problème de l'inversion des matrices Bn en utilisant la décomposition de Cholesky : B -M M T Mn est une matrice triangulaire inférieure. Cette décomposition est possible parce que Bn est une matrice symétrique à valeurs propres positives. L'avantage de cette approche est que l'inversion d'une matrice triangulaire est relativement peu complexe, Bn-l pouvant être obtenue par Bn-1=(Mn-1)T.Mn-1 .
La méthode ci-dessus donne des résultats satisfaisants, mais elle nécessite l'inversion d'une matrice B n à chaque itération. Dans leur article "Amplitude Optimization and Pitch Prediction in Multipulse Codera (IEEE Trans. on
Acoustics, Speech, and Signal Processing, Vol.37, N 3, Mars 1989, pages 317-327), S. Singhal et B.S. Atal ont proposé de simplifier le problème de l'inversion des matrices Bn en utilisant la décomposition de Cholesky : B -M M T Mn est une matrice triangulaire inférieure. Cette décomposition est possible parce que Bn est une matrice symétrique à valeurs propres positives. L'avantage de cette approche est que l'inversion d'une matrice triangulaire est relativement peu complexe, Bn-l pouvant être obtenue par Bn-1=(Mn-1)T.Mn-1 .
La décomposition de Cholesky et l'inversion de la matrice Mn nécessitent toutefois d'effectuer des divisions et des calculs de racines carrées qui sont des opérations exigentes en termes de complexité de calcul. L'invention propose de simplifier considérablement la mise en oeuvre de l'optimisation en modifiant la décomposition des matrices Bn de la façon suivante :
Bn = Ln.RnT = (Ln.(Ln.Kn-1)T où Kn est une matrice diagonale et Ln est une matrice triangulaire inférieure n'ayant que des 1 sur sa diagonale principale (soit Ln=Mn.Kn1/2 avec les notations précédentes).
Bn = Ln.RnT = (Ln.(Ln.Kn-1)T où Kn est une matrice diagonale et Ln est une matrice triangulaire inférieure n'ayant que des 1 sur sa diagonale principale (soit Ln=Mn.Kn1/2 avec les notations précédentes).
Compte-tenu de la structure de la matrice Bn, les matrices
Ln=Bn.Kn, Rn Kfl et Ln 1 sont construites chacune par simple adjonction d'une ligne aux matrices correspondantes de l'itération précédente :
Ln=Bn.Kn, Rn Kfl et Ln 1 sont construites chacune par simple adjonction d'une ligne aux matrices correspondantes de l'itération précédente :
<tb> <SEP> t <SEP> B(n,O) <SEP> o <SEP>
<tb> <SEP> Bn <SEP> = <SEP> # <SEP> Bn-1 <SEP> # <SEP> Ln <SEP> = <SEP> # <SEP> Ln-1 <SEP> . <SEP> #
<tb> <SEP> B(n,n1) <SEP> 0 <SEP>
<tb> <SEP> B(n,O) <SEP> . <SEP> . <SEP> . <SEP> B(n,n-1) <SEP> B(n,n) <SEP> I <SEP> L(n,O) <SEP> . <SEP> . <SEP> .<SEP> L(n,n-1) <SEP> I
<tb> <SEP> k <SEP>
<tb> <SEP> 0 <SEP> o <SEP>
<tb> <SEP> Rn <SEP> = <SEP> # <SEP> Rn-1 <SEP> # <SEP> Kn <SEP> = <SEP> # <SEP> . <SEP> #
<tb> <SEP> 0 <SEP> 0
<tb> R(n,O) <SEP> . <SEP> . <SEP> R(n,n-i) <SEP> R(n,n) <SEP> 0 <SEP> . <SEP> . <SEP> 0 <SEP> K(n) <SEP>
<tb> <SEP> o <SEP>
<tb> yl <SEP> Ln-i <SEP> -1
<tb> o <SEP>
<tb> <SEP> #L-1(n,0) <SEP> . <SEP> . <SEP> .<SEP> L-1(n,n-1) <SEP> 1#
<tb>
Dans ces conditions, la décomposition de Bn, l'inversion de Ln l'obtention de Bn-1=Kn.(Ln-1)T.Ln-1 et le recalcul des gains ne nécessitent qu'une seule division par itération et aucun calcul de racine carrée.
<tb> <SEP> Bn <SEP> = <SEP> # <SEP> Bn-1 <SEP> # <SEP> Ln <SEP> = <SEP> # <SEP> Ln-1 <SEP> . <SEP> #
<tb> <SEP> B(n,n1) <SEP> 0 <SEP>
<tb> <SEP> B(n,O) <SEP> . <SEP> . <SEP> . <SEP> B(n,n-1) <SEP> B(n,n) <SEP> I <SEP> L(n,O) <SEP> . <SEP> . <SEP> .<SEP> L(n,n-1) <SEP> I
<tb> <SEP> k <SEP>
<tb> <SEP> 0 <SEP> o <SEP>
<tb> <SEP> Rn <SEP> = <SEP> # <SEP> Rn-1 <SEP> # <SEP> Kn <SEP> = <SEP> # <SEP> . <SEP> #
<tb> <SEP> 0 <SEP> 0
<tb> R(n,O) <SEP> . <SEP> . <SEP> R(n,n-i) <SEP> R(n,n) <SEP> 0 <SEP> . <SEP> . <SEP> 0 <SEP> K(n) <SEP>
<tb> <SEP> o <SEP>
<tb> yl <SEP> Ln-i <SEP> -1
<tb> o <SEP>
<tb> <SEP> #L-1(n,0) <SEP> . <SEP> . <SEP> .<SEP> L-1(n,n-1) <SEP> 1#
<tb>
Dans ces conditions, la décomposition de Bn, l'inversion de Ln l'obtention de Bn-1=Kn.(Ln-1)T.Ln-1 et le recalcul des gains ne nécessitent qu'une seule division par itération et aucun calcul de racine carrée.
L'analyse stochastique relative à une sous-trame d'une trame voisée (MV=1,2 ou 3) peut dès lors se dérouler comme indiqué sur les figures 8 à 11. Pour calculer le gain de prédiction à long terme, l'index de contribution n est initialisé à O à l'étape 180 et le vecteur Fp(0) est pris égal à la contribution à long terme YTp fournie par le module 38. Si n > O, l'itération n commence par la détermination 182 de la position p(n) de l'impulsion n qui maximise la quantité :
où e=(e(0),...,e(lst-1)) est un vecteur-cible calculé lors de l'itération précédente.Différentes contraintes peuvent être apportées au domaine de maximisation de la quantité cidessus inclus dans l'intervalle [O,lst[. L'invention utilise de préférence une recherche segmentaire dans laquelle la sous-trame d'excitation est subdivisée en ns segments de même longueur (par exemple ns=10 pour lst=40). . Pour la première
T > impulsion (n=1), la maximisation de (Fp.eT)2/(Fp.FpT) est effectuée sur l'ensemble des positions possibles p dans la sous-trame. A l'itération n > l, la maximisation est effectuée à l'étape 182 sur l'ensemble des positions possibles à l'exclusion des segments dans lesquels ont été respectivement trouvées les positions p(1),...,p(n-1) des impulsions lors des itérations précédentes.
où e=(e(0),...,e(lst-1)) est un vecteur-cible calculé lors de l'itération précédente.Différentes contraintes peuvent être apportées au domaine de maximisation de la quantité cidessus inclus dans l'intervalle [O,lst[. L'invention utilise de préférence une recherche segmentaire dans laquelle la sous-trame d'excitation est subdivisée en ns segments de même longueur (par exemple ns=10 pour lst=40). . Pour la première
T > impulsion (n=1), la maximisation de (Fp.eT)2/(Fp.FpT) est effectuée sur l'ensemble des positions possibles p dans la sous-trame. A l'itération n > l, la maximisation est effectuée à l'étape 182 sur l'ensemble des positions possibles à l'exclusion des segments dans lesquels ont été respectivement trouvées les positions p(1),...,p(n-1) des impulsions lors des itérations précédentes.
Dans le cas où la trame courante a été détectée comme non voisée, la contribution n=O est également constituée par une impulsion de position p(O). L'étape 180 comprend alors seulement l'initialisation n=O, et elle est suivie par une étape de maximisation identique à l'étape 182 pour trouver p(O), avec e=e~l=X comme valeur initiale du vecteurcible.
On remarque que lorsque la contribution n=O est prédictible (MV=1, 2 ou 3), le module 38 d'analyse LTP en boucle fermée a effectué une opération de nature semblable à la maximisation 182, puisqu'il a déterminé la contribution à long terme, caractérisée par le retard TP, en maximisant la quantité (YT.eT)2/(YT.YTT) dans l'intervalle de recherche des retards T, avec e=e~l=X comme valeur initiale du vecteurcible. On peut également, lorsque l'énergie de la contribution LTP est très faible, ignorer cette contribution dans le processus de recalcul des gains.
Après l'étape 180 ou 182, le module 40 procède au calcul 184 de la ligne n des matrices L, R et K intervenant dans la décomposition de la matrice B, ce qui permet de compléter les matrices Ln Rn et Kn définies ci-dessus. La décomposition de la matrice B permet d'écrire
pour la composante située à la ligne n et à la colonne j. on peut donc écrire, pour j croissant de O à n-l
pour la composante située à la ligne n et à la colonne j. on peut donc écrire, pour j croissant de O à n-l
L(n,J) = R(n,).X(j) et, pour j=n :
L(n,n > = 1
Ces relations sont exploitées dans le calcul 184 détaillé sur la figure 9. L'index de colonne j est d'abord initialisé à 0, à l'étape 186.Pour l'index de colonne j, la variable tmp est d'abord initialisée à la valeur de la composante B(n,j), soit : tmp = (n ) p (! J
h(k-p(n)) .h(k-p(j))
A l'étape 188, l'entier k est en outre initialisé à
O. On effectue alors une comparaison 190 entre les entiers k et j. Si kj, on ajoute le terme L(n,k).R(j,k) à la variable tmp, puis on incrémente d'une unité l'entier k (étape 192) avant de réexécuter la comparaison 190. Quand la comparaison 190 montre que k=j, on effectue une comparaison 194 entre les entiers j et n. Si j < n, la composante R(n,j) est prise égale à tmp et la composante L(n,j) à tmp.K(j) à l'étape 196, puis l'index de colonne j est incrémenté d'une unité avant qu'on revienne à l'étape 188 pour calculer les composantes suivantes.Quand la comparaison 194 montre que j=n, la composante K(n) de la ligne n de la matrice K est calculée, ce qui termine le calcul 184 relatif à la ligne n.
L(n,n > = 1
Ces relations sont exploitées dans le calcul 184 détaillé sur la figure 9. L'index de colonne j est d'abord initialisé à 0, à l'étape 186.Pour l'index de colonne j, la variable tmp est d'abord initialisée à la valeur de la composante B(n,j), soit : tmp = (n ) p (! J
h(k-p(n)) .h(k-p(j))
A l'étape 188, l'entier k est en outre initialisé à
O. On effectue alors une comparaison 190 entre les entiers k et j. Si kj, on ajoute le terme L(n,k).R(j,k) à la variable tmp, puis on incrémente d'une unité l'entier k (étape 192) avant de réexécuter la comparaison 190. Quand la comparaison 190 montre que k=j, on effectue une comparaison 194 entre les entiers j et n. Si j < n, la composante R(n,j) est prise égale à tmp et la composante L(n,j) à tmp.K(j) à l'étape 196, puis l'index de colonne j est incrémenté d'une unité avant qu'on revienne à l'étape 188 pour calculer les composantes suivantes.Quand la comparaison 194 montre que j=n, la composante K(n) de la ligne n de la matrice K est calculée, ce qui termine le calcul 184 relatif à la ligne n.
K(n) est pris égal à 1/tmp si tmp#0 (étape 198) et à O sinon.
On constate que le calcul 184 ne requiert qu'au plus une division 198, pour obtenir K(n). En outre, une éventuelle singularité de la matrice B n n'entraîne pas d'instabilités puisqu'on évite les divisions par 0.
En référence à la figure 8, le calcul 184 des lignes n de L, R et K est suivi par l'inversion 200 de la matrice
Ln constituée des lignes et des colonnes 0 à n de la matrice
L. Le fait que L soit triangulaire avec des 1 sur sa diagonale principale en simplifie grandement l'inversion comne le montre la figure 10. On peut en effet écrire
pour 0sj' < n et L1(n,n)=1, c'est-à-dire que l'inversion peut être faite sans avoir à opérer une division.En outre, comme les composantes de la ligne n de L-1 suffisent à recalculer les gains, l'utilisation de la relation (5) permet de faire l'inversion sans avoir à mémoriser toute la matrice L 1, mais seulement un vecteur Linv=(Linv(0),...,Linv(n-1)) avec Linv(j')-L1(n,j'). L'inversion 200 commence alors par une initialisation 202 de l'index de colonne j' à n-1. A l'étape 204, le terme Linv(j') est initialisé à -L(n,j') et l'entier k' à jl+i. On effectue ensuite une comparaison 206 entre les entiers k' et n. Si k' < n, on retranche le terme L(k',j').Linv(k') à Linv(j'), puis on incrémente d'une unité l'entier k (étape 208) avant de réexécuter la comparaison 206. Quand la comparaison 206 montre que k'=n, on compare j' à 0 (test 210).Si j' > 0, on décrémente l'entier j' d'une unité (étape 212) et on revient à l'étape 204 pour calculer la composante suivante. L'inversion 200 est terminée lorsque le test 210 montre que j'=0.
Ln constituée des lignes et des colonnes 0 à n de la matrice
L. Le fait que L soit triangulaire avec des 1 sur sa diagonale principale en simplifie grandement l'inversion comne le montre la figure 10. On peut en effet écrire
pour 0sj' < n et L1(n,n)=1, c'est-à-dire que l'inversion peut être faite sans avoir à opérer une division.En outre, comme les composantes de la ligne n de L-1 suffisent à recalculer les gains, l'utilisation de la relation (5) permet de faire l'inversion sans avoir à mémoriser toute la matrice L 1, mais seulement un vecteur Linv=(Linv(0),...,Linv(n-1)) avec Linv(j')-L1(n,j'). L'inversion 200 commence alors par une initialisation 202 de l'index de colonne j' à n-1. A l'étape 204, le terme Linv(j') est initialisé à -L(n,j') et l'entier k' à jl+i. On effectue ensuite une comparaison 206 entre les entiers k' et n. Si k' < n, on retranche le terme L(k',j').Linv(k') à Linv(j'), puis on incrémente d'une unité l'entier k (étape 208) avant de réexécuter la comparaison 206. Quand la comparaison 206 montre que k'=n, on compare j' à 0 (test 210).Si j' > 0, on décrémente l'entier j' d'une unité (étape 212) et on revient à l'étape 204 pour calculer la composante suivante. L'inversion 200 est terminée lorsque le test 210 montre que j'=0.
En référence à la figure 8 l'inversion 200 est suivie par le calcul 214 des gains réoptimisés et du vecteur-cible
E pour l'itération suivante. Le calcul des gains réoptimisés est également très simplifié par la décomposition retenue pour la matrice B. On peut en effet calculer le vecteur gn=(gn(0),...,gn(n)) solution de gn.Bn=bn selon :
et gn(i')=gn-1(i')+L-1(n,i').gn(n) pour0si' < n. Le calcul 214 est détaillé sur la figure 11. On calcule d'abord la composante b(n) du vecteur b :
h(k-p(n) ) .x(k) b(n) sert de valeur d'initialisation pour la variable tmq.
E pour l'itération suivante. Le calcul des gains réoptimisés est également très simplifié par la décomposition retenue pour la matrice B. On peut en effet calculer le vecteur gn=(gn(0),...,gn(n)) solution de gn.Bn=bn selon :
et gn(i')=gn-1(i')+L-1(n,i').gn(n) pour0si' < n. Le calcul 214 est détaillé sur la figure 11. On calcule d'abord la composante b(n) du vecteur b :
h(k-p(n) ) .x(k) b(n) sert de valeur d'initialisation pour la variable tmq.
A l'étape 216, on initialise également l'index i à 0. On effectue ensuite la comparaison 218 entre les entiers i et n. Si i < n, on ajoute le terme b(i). Linv(i) à la variable tmq et on incrémente i d'une unité (étape 220) avant de revenir à la comparaison 218. Quand la comparaison 218 montre que i=n, on calcule le gain relatif à la contribution n selon g(n)=tmq.K(n > , et on initialise la boucle de calcul des autres gains et du vecteur-cible (étape 222) en prenant e=X-g(n).Fp(,) et i'=O. Cette boucle comprend une comparaison 224 entre les entiers i' et n. Si i' < n, le gain g(i') est recalculé à l'étape 226 en ajoutant Linv(i').g(n) à sa valeur calculée lors de l'itération précédente n-l, puis on retran che au vecteur-cible e le vecteur g(i' > g(i').Fp(i*).L'étape 226 comprend également l'incrémentation de l'index i' avant de revenir à la comparaison 224. Le calcul 214 des gains et du vecteur-cible est terminé lorsque la comparaison 224 montre que i'=n. On voit que les gains ont pu être mis à jour en ne faisant appel qu'à la ligne n de la matrice inverse
Le calcul 214 est suivi par une incrémentation 228 de l'index n de la contribution, puis par une comparaison 230 entre l'index n et le nombre de contributions nc. Si n < nc, on revient à l'étape 182 pour l'itération suivante.
Le calcul 214 est suivi par une incrémentation 228 de l'index n de la contribution, puis par une comparaison 230 entre l'index n et le nombre de contributions nc. Si n < nc, on revient à l'étape 182 pour l'itération suivante.
L'optimisation des positions et des gains est terminée lorsque n=nc au test 230.
La recherche segmentaire des impulsions diminue sensiblement le nombre de positions d'impulsion à évaluer au cours des étapes 182 de la recherche de l'excitation stochastique. Elle permet en outre une quantification efficace des positions trouvées. Dans le cas typique où la sous-trame de lst=40 échantillons est divisée en ns=lO segments de ls=4 échantillons, l'ensemble des positions d'impulsion possibles peut prendre ns!.lsnP/[np!(ns-np)!]=258 048 valeurs si np=5 (MV=1, 2 ou 3) ou 860 160 si np=6(MV=O), au lieu de Ist!/[np!(lst-np)!]=658 008 valeurs si np=5 ou 3 838 380 si np=6 dans le cas où on impose seulement que deux impulsions ne puissent pas avoir la même position.En d'autres termes, on peut quantifier les positions sur 18 bits au lieu de 20 bits si np=5, et sur 20 bits au lieu de 22 si np=6.
Le cas particulier où le nombre de segments par soustrame est égal au nombre d'impulsions par excitation stochastique (ns=np) conduit à la plus grande simplicité de la recherche de l'excitation stochastique, ainsi qu'au plus faible débit binaire (si lst=40 et np=5, il y a 85=32768 ensembles de positions possibles, quantifiables sur 15 bits seulement au lieu de 18 si nus=10). . Mais en réduisant à ce point le nombre de séquences d'innovation possibles, on peut appauvrir la qualité du codage. Pour un nombre d'impulsions donné, le nombre des segments peut être optimisé selon un compromis visé entre la qualité du codage et sa simplicité de mise en oeuvre (ainsi que le débit requis).
Le cas où ns,np présente en outre l'avantage qu'on peut obtenir une bonne robustesse aux erreurs de transmission en ce qui concerne les positions des impulsions, grâce à une quantification séparée des numéros d'ordre des segments occupés et des positions relatives des impulsions dans chaque segment occupé. Pour une impulsion n, le numéro d'ordre sn du segment et la position relative prn sont respectivement le quotient et le reste de la division euclidienne de p(n) par la longueur ls d'un segment : p(n)=sn.ls+prn (Ossn < ns, Osprn < ls). Les positions relatives sont chacune quantifiées séparément sur 2 bits, si ls=4. En cas d'erreur de transmission affectant l'un de ces bits, l'impulsion correspondante ne sera que peu déplacée, et l'impact perceptuel de l'erreur sera limité. Les numéros d'ordre des segments occupés sont repérés par un mot binaire de ns=lO bits valant chacun 1 pour les segments occupés et O pour les segments dans lesquels l'excitation stochastique n'a pas d'impulsion. Les mots binaires possibles sont ceux ayant un poids-de Hamming de np; ils sont au nombre de ns!/[np!(nsnp)!]=252 si np=5, ou 210 si np=6. Ce mot est quantifiable par un index de nb bits avec 2nb~l < ns!/[np!(ns-np) !]S2nb, soit nb=8 dans l'exemple considéré.Si, par exemple, l'analyse stochastique a fourni np=5 impulsions de positions 4, 12, 21, 34, 38, les positions relatives quantifiées scalairement sont 0,0,1,2,2 et le mot binaire représentant les segments occupés est 0101010011, ou 339 en traduction décimale.
Au niveau du décodeur, les mots binaires possibles sont stockés dans une table de quantification dans laquelle les adresses de lecture sont les index de quantification reçus. L'ordre dans cette table, déterminé une fois pour toutes, peut être optimisé de façon qu'une erreur de transmission affectant un bit de l'index (le cas d'erreur le plus fréquent, surtout lorsqu'un entrelacement est mis en oeuvre dans le codeur canal 22) ait, en moyenne, des conséquences minimales suivant un critère de voisinage. Le critère de voisinage est par exemple qu'un mot de ns bits ne puisse être remplacé que par des mots "voisins", éloignés d'une distance de Hamming au plus égale à un seuil np-26, de façon à conserver toutes les impulsions sauf Ô d'entre elles à des positions valides en cas d'erreur de transmission de l'index portant sur un seul bit.D'autres critères seraient utilisables en substitution ou en complément, par exemple que deux mots soient considérés comme voisins si le remplacement de l'un par l'autre ne modifie pas l'ordre d'affectation des gains associés aux impulsions.
A des fins d'illustration, on peut considérer le cas simplifié où ns=4 et np=2, soit 6 mots binaires possibles quantifiables sur nb=3 bits. Dans ce cas, on peut vérifier que la table de quantification présentée au tableau Il permet de conserver np-l=l impulsion bien positionnée pour toute erreur affectant un bit de l'index transmis.Il y a 4 cas d'erreur (sur un total de 18), pour lesquels on reçoit un index de quantification qu'on sait être erroné (6 au lieu de 2 ou 4 ; 7 au lieu de 3 ou 5), mais le décodeur peut alors prendre des mesures limitant la distorsion, par exemple répéter la séquence d'innovation relative à la sous-trame précédente ou encore affecter des mots binaires acceptables aux index "impossibles" (par exemple 1001 ou 1010 pour l'index 6 et 1100 ou 0110 pour l'index 7 conduisent encore à np-l=l impulsion bien positionnée en cas de réception de 6 ou 7 avec une erreur binaire)
Dans le cas général, l'ordre dans la table de quantification des mots peut être déterminé à partir de considérations arithmétiques ou, si cela est insuffisant, en simulant sur ordinateur les scénarios d'erreurs (de façon exhaustive ou par un échantillonnage statistique de type
Monte-Carlo suivant le nombre de cas d'erreurs possibles).
Dans le cas général, l'ordre dans la table de quantification des mots peut être déterminé à partir de considérations arithmétiques ou, si cela est insuffisant, en simulant sur ordinateur les scénarios d'erreurs (de façon exhaustive ou par un échantillonnage statistique de type
Monte-Carlo suivant le nombre de cas d'erreurs possibles).
Pour sécuriser la transmission de l'index de quantification des segments occupés, on peut en outre tirer parti des différentes catégories de protection offertes par le codeur canal 22, notamment si le critère de voisinage ne peut être vérifié de façon satisfaisante pour tous les cas
<tb> index <SEP> de <SEP> quantification <SEP> | <SEP> <SEP> mot <SEP> d'occupation <SEP> des <SEP> segments
<tb> <SEP> décimal <SEP> binaire <SEP> binaire <SEP> décimal
<tb> <SEP> naturel <SEP> naturel
<tb> <SEP> 0 <SEP> 000 <SEP> 0011 <SEP> 3
<tb> <SEP> 1 <SEP> 001 <SEP> 0101 <SEP> 5
<tb> <SEP> 2 <SEP> 010 <SEP> 1001 <SEP> 9
<tb> <SEP> 3 <SEP> 011 <SEP> 1100 <SEP> 12
<tb> <SEP> 4 <SEP> 100 <SEP> 1010 <SEP> 10
<tb> <SEP> 5 <SEP> 101 <SEP> 0110 <SEP> 6
<tb> <SEP> (6) <SEP> (110) <SEP> (1001 <SEP> ou <SEP> 1010) <SEP> (9 <SEP> ou <SEP> 10)
<tb> <SEP> (7) <SEP> (111) <SEP> (1100 <SEP> ou <SEP> 0110) <SEP> (12 <SEP> ou <SEP> 6)
<tb>
TABLEAU II d'erreurs possibles affectant un bit de l'index. Le module d'ordonnancement 46 peut ainsi mettre dans la catégorie de protection minimale, ou dans la catégorie non protégée, un certain nombre nx des bits de' l'index qui, s'ils sont affectés par une erreur de transmission, donnent lieu à un mot erroné mais vérifiant le critère de voisinage avec une probabilité jugée satisfaisante, et mettre dans une catégorie plus protégée les autres bits de l'index. Cette façon de procéder fait appel à un autre ordonnancement des mots dans la table de quantification. Cet ordonnancement peut également être optimisé au moyen de simulations si on souhaite maximiser le nombre nx des bits de 1index affectés à la catégorie la moins protégée.
<tb> <SEP> décimal <SEP> binaire <SEP> binaire <SEP> décimal
<tb> <SEP> naturel <SEP> naturel
<tb> <SEP> 0 <SEP> 000 <SEP> 0011 <SEP> 3
<tb> <SEP> 1 <SEP> 001 <SEP> 0101 <SEP> 5
<tb> <SEP> 2 <SEP> 010 <SEP> 1001 <SEP> 9
<tb> <SEP> 3 <SEP> 011 <SEP> 1100 <SEP> 12
<tb> <SEP> 4 <SEP> 100 <SEP> 1010 <SEP> 10
<tb> <SEP> 5 <SEP> 101 <SEP> 0110 <SEP> 6
<tb> <SEP> (6) <SEP> (110) <SEP> (1001 <SEP> ou <SEP> 1010) <SEP> (9 <SEP> ou <SEP> 10)
<tb> <SEP> (7) <SEP> (111) <SEP> (1100 <SEP> ou <SEP> 0110) <SEP> (12 <SEP> ou <SEP> 6)
<tb>
TABLEAU II d'erreurs possibles affectant un bit de l'index. Le module d'ordonnancement 46 peut ainsi mettre dans la catégorie de protection minimale, ou dans la catégorie non protégée, un certain nombre nx des bits de' l'index qui, s'ils sont affectés par une erreur de transmission, donnent lieu à un mot erroné mais vérifiant le critère de voisinage avec une probabilité jugée satisfaisante, et mettre dans une catégorie plus protégée les autres bits de l'index. Cette façon de procéder fait appel à un autre ordonnancement des mots dans la table de quantification. Cet ordonnancement peut également être optimisé au moyen de simulations si on souhaite maximiser le nombre nx des bits de 1index affectés à la catégorie la moins protégée.
Une possibilité est de commencer par constituer une liste de mots de ns bits par comptage en code de Gray de O à 2nul, et d'obtenir la table de quantification ordonnée en supprimant de cette liste les mots n'ayant pas un poids de
Hamming de np. La table ainsi obtenue est telle que deux mots consécutifs ont une distance de Hamming de np-2.Si les index dans cette table ont une représentation binaire en code de
Gray, toute erreur sur le bits de poids le plus faible fait varier l'index de +1 et entraîne donc le remplacement du mots d'occupation effectif par un mot voisin au sens du seuil np-2 sur la distance de Hamming, et une erreur sur le i-ième bit de poids le plus faible fait aussi varier l'index de tl avec une probabilité d'environ 21 i. En plaçant les nx bits de poids faible de l'index en code de Gray dans une catégorie non protégée, une éventuelle erreur de transmission affectant un de ces bits conduit au remplacement du mot d'occupation par un mot voisin avec une probabilité au moins égale à (1+1/2+...+1/2nX 1)/nx. Cette probabilité minimale décroît de 1 à < 2/nb) (2/nb)(1-1/2nb) pour nx croissant de 1 à nb.Les erreurs affectant les nb-nx bits de poids fort de l'index seront le plus souvent corrigées grâce à la protection que leur applique le codeur canal. La valeur de nx est dans ce cas choisie selon un compromis entre la robustesse aux erreurs (petites valeurs) et un encombrement réduit des catégories protégées (grandes valeurs).
Hamming de np. La table ainsi obtenue est telle que deux mots consécutifs ont une distance de Hamming de np-2.Si les index dans cette table ont une représentation binaire en code de
Gray, toute erreur sur le bits de poids le plus faible fait varier l'index de +1 et entraîne donc le remplacement du mots d'occupation effectif par un mot voisin au sens du seuil np-2 sur la distance de Hamming, et une erreur sur le i-ième bit de poids le plus faible fait aussi varier l'index de tl avec une probabilité d'environ 21 i. En plaçant les nx bits de poids faible de l'index en code de Gray dans une catégorie non protégée, une éventuelle erreur de transmission affectant un de ces bits conduit au remplacement du mot d'occupation par un mot voisin avec une probabilité au moins égale à (1+1/2+...+1/2nX 1)/nx. Cette probabilité minimale décroît de 1 à < 2/nb) (2/nb)(1-1/2nb) pour nx croissant de 1 à nb.Les erreurs affectant les nb-nx bits de poids fort de l'index seront le plus souvent corrigées grâce à la protection que leur applique le codeur canal. La valeur de nx est dans ce cas choisie selon un compromis entre la robustesse aux erreurs (petites valeurs) et un encombrement réduit des catégories protégées (grandes valeurs).
Au niveau du codeur, les mots binaires possibles pour représenter l'occupation des segments sont rangés en ordre croissant dans une table de recherche. Une table d'indexage associe à chaque adresse le numéro d'ordre, dans la table de quantification stockée au décodeur, du mot binaire ayant cette adresse dans la table de recherche. Dans l'exemple simplifié évoqué ci-dessus, le contenu de la table de recherche et de la table d'indexage est donné dans le tableau III (en valeurs décimales).
La quantification du mot d'occupation des segments déduit des np positions fournies par le module d'analyse stochastique 40 est effectuée en deux étapes par le module de quantification 44. Une recherche dichotomique est d'abord effectuée dans la table de recherche pour déterminer l'adresse dans cette table du mot à quantifier. L'index de quantification est ensuite obtenu à l'adresse déterminée dans la table d'indexage puis fourni au module 46 d'ordonnancement des bits.
<tb>
Adresse <SEP> Table <SEP> de <SEP> recherche <SEP> Table <SEP> d'indexage
<tb> <SEP> 0 <SEP> 3 <SEP> 0
<tb> <SEP> 1 <SEP> 5 <SEP> 1
<tb> <SEP> 2 <SEP> 6 <SEP> 5
<tb> <SEP> 3 <SEP> 9 <SEP> 2
<tb> <SEP> 4 <SEP> 10 <SEP> 4
<tb> <SEP> 5 <SEP> 12 <SEP> 3
<tb>
TABLEAU III
Le module 44 effectue en outre la quantification des gains calculés par le module 40. Le gain gTp est par exemple quantifié dans l'intervalle [0;1,6], sur 5 bits si MV=1 ou 2 et sur 6 bits si Mv=3 pour tenir compte de la plus grande importance perceptuelle de ce paramètre pour les trames très voisées.Pour le codage des gains associés aux impulsions de l'excitation stochastique, on quantifie sur 5 bits la plus grande valeur absolue Gs des gains g(l),...,g(np), en prenant par exemple 32 valeurs de quantification en progression géométrique dans l'intervalle [0;32767], et on quantifie chacun des gains relatifs g(l)/Gs,...,g(np) dans l'intervalle [-1;+1], sur 4 bits si MV=l, 2 ou 3, ou sur 5 bits si MV=O.
<tb> <SEP> 0 <SEP> 3 <SEP> 0
<tb> <SEP> 1 <SEP> 5 <SEP> 1
<tb> <SEP> 2 <SEP> 6 <SEP> 5
<tb> <SEP> 3 <SEP> 9 <SEP> 2
<tb> <SEP> 4 <SEP> 10 <SEP> 4
<tb> <SEP> 5 <SEP> 12 <SEP> 3
<tb>
TABLEAU III
Le module 44 effectue en outre la quantification des gains calculés par le module 40. Le gain gTp est par exemple quantifié dans l'intervalle [0;1,6], sur 5 bits si MV=1 ou 2 et sur 6 bits si Mv=3 pour tenir compte de la plus grande importance perceptuelle de ce paramètre pour les trames très voisées.Pour le codage des gains associés aux impulsions de l'excitation stochastique, on quantifie sur 5 bits la plus grande valeur absolue Gs des gains g(l),...,g(np), en prenant par exemple 32 valeurs de quantification en progression géométrique dans l'intervalle [0;32767], et on quantifie chacun des gains relatifs g(l)/Gs,...,g(np) dans l'intervalle [-1;+1], sur 4 bits si MV=l, 2 ou 3, ou sur 5 bits si MV=O.
Les bits de quantification de Gs sont placés dans une catégorie protégée par le codeur canal 22, de même que les bits de poids fort des index de quantification des gains relatifs. Les bits de quantification des gains relatifs sont ordonnés de façon à permettre leur affectation aux impulsions associées appartenant aux segments localisés par le mot d'occupation. La recherche segmentaire selon l'invention permet en outre de protéger de manière efficace les positions relatives des impulsions associées aux plus grandes valeurs de gain.
Dans le cas où np=5 et ls=4, dix bits par sous-trame sont nécessaires pour quantifier les positions relatives des impulsions dans les segments. On considère le cas où 5 de ces 10 bits sont placés dans une catégorie peu ou pas protégée (II) et où les 5 autres sont placés dans une catégorie plus protégée (IB).La distribution la plus naturelle est de placer le bit de poids fort de chaque position relative dans la catégorie protégée IB, de sorte que les éventuelles erreurs de transmission affectent plutôt les bits de poids fort et ne provoquent donc qu'un décalage d'un échantillon pour l'impulsion correspondante. I1 est toutefois judicieux, pour la quantification des positions relatives, de considérer les impulsions dans l'ordre décroissant des valeurs absolues des gains associés et de placer dans la catégorie IB les deux bits de quantification de chacune des deux premières positions relatives ainsi que le bit de poids fort de la troisième. De cette façon, les positions des impulsions sont protégées préférentiellement lorsqu'elles sont associées à des gains importants, ce qui améliore la qualité moyenne particulièrement pour les sous-trames les plus voisées.
Pour reconstituer les contributions impulsionnelles de l'excitation, le décodeur 54 localise d'abord les segments au moyen du mot d'occupation reçu ; il attribue ensuite les gains associés ; puis il attribue les positions relatives aux impulsions sur la base de l'ordre d'importance des gains.
On comprendra que les différents aspects de l'invention décrits ci-dessus procurent chacun des améliorations propres, et qu'il est donc envisageable de les mettre en oeuvre indépendamment les uns des autres. Leur combinaison permet de réaliser un codeur de performances particulièrement intéressantes.
Dans l'exemple de réalisation décrit dans ce qui précède, le codeur de parole à 13 kbits/s requiert de l'ordre de 15 millions d'instructions par seconde (Mips) en virgule fixe. On le réalisera donc typiquement en programmant un processeur de signal numérique (DSP) du commerce, de même que le décodeur qui ne requiert que de l'ordre de 5 Mips.
Claims (5)
1. Procédé de codage à analyse par synthèse d'un signal de parole numérisé en trames successives subdivisées en sous-trames comportant un nombre déterminé d'échantillons, dans lequel on effectue pour chaque trame une analyse par prédiction linéaire du signal de parole pour déterminer les coefficients d'un filtre de synthèse à court terme (60), et une analyse en boucle ouverte pour déterminer un degré de voisement de la trame, et on effectue pour chaque sous-trame au moins une analyse en boucle fermée pour déterminer une séquence d'excitation qui, soumise au filtre de synthèse à court terme, produit un signal synthétique représentatif du signal de parole, chaque analyse en boucle fermée utilisant la réponse impulsionnelle d'un filtre composé du filtre de synthèse à court terme et d'un filtre de pondération perceptuelle,
caractérisé en ce que, lors de chaque analyse en boucle fermée, on utilise ladite réponse impulsionnelle en la tronquant à une longueur de troncature (Lh) au plus égale au nombre (lst) d'échantillons par sous-trame et dépendant de la distribution énergétique de ladite réponse et du degré de voisement de la trame.
2. Procédé selon la revendication 1, caractérisé en ce que la réponse impulsionnelle du filtre composé est calculée sur une longueur totale (pst) supérieure au nombre (lst) d'échantillons par sous-trame, en ce qu'on détermine une longueur minimale La telle que l'énergie de la réponse impulsionnelle calculée en tronquant ladite réponse à La échantillons soit au moins égale à une fraction déterminée (a) de l'énergie de la réponse impulsionnelle calculée sur ladite longueur totale (pst), et en ce que la longueur de troncature (Lh) est égale à la somme de ladite longueur minimale La et d'un terme correcteur ((MV)) dépendant du degré de voisement de la trame si ladite somme est inférieure au nombre (lst) d'échantillons par sous-trame.
3. Procédé selon la revendication 2, caractérisé en ce que ledit terme correcteur < A(MV)) -est une fonction croissante du degré de voisement.
4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que le filtre de pondération perceptuelle a une fonction de transfert de la forme W(z)=A(z/yl)/A(z/ly2) où 1/A(z) désigne la fonction de transfert du filtre de synthèse à court terme et y1 et T2 sont deux coefficients tels que 0 < y2 < Tl < l.
5. Procédé selon la revendication 4, caractérisé en ce qu'on représente les coefficients du filtre de synthèse à court terme par des paramètres de raies spectrales (LSP), en ce qu'on quantifie lesdits paramètres de raies spectrales en ce que, pour constituer le filtre de synthèse à court terme auquel est soumise la séquence d'excitation relative à au moins une sous-trame d'une trame, on effectue une interpolation entre les paramètres de raies spectrales relatifs à ladite trame et ceux relatifs à la trame précédente, et en ce que, pour calculer la réponse impulsionnelle du filtre composé, on calcule le filtre de synthèse à court terme sur la base des paramètres de raies spectrales quantifiés et interpolés, tandis qu'on calcule le filtre de pondération perceptuelle sur la base des paramètres de raies spectrales interpolés mais non quantifiés.
Priority Applications (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9500135A FR2729247A1 (fr) | 1995-01-06 | 1995-01-06 | Procede de codage de parole a analyse par synthese |
CA002209623A CA2209623A1 (fr) | 1995-01-06 | 1996-01-03 | Procede de codage de parole a analyse par synthese |
US08/860,746 US5963898A (en) | 1995-01-06 | 1996-01-03 | Analysis-by-synthesis speech coding method with truncation of the impulse response of a perceptual weighting filter |
AT96901010T ATE180092T1 (de) | 1995-01-06 | 1996-01-03 | Verfahren zur sprachkodierung mittels analyse durch synthese |
DE69602421T DE69602421T2 (de) | 1995-01-06 | 1996-01-03 | Verfahren zur sprachkodierung mittels analyse durch synthese |
PCT/FR1996/000006 WO1996021220A1 (fr) | 1995-01-06 | 1996-01-03 | Procede de codage de parole a analyse par synthese |
CN96191793A CN1173938A (zh) | 1995-01-06 | 1996-01-03 | 综合分析语音编码方法 |
AU44903/96A AU697892B2 (en) | 1995-01-06 | 1996-01-03 | Analysis-by-synthesis speech coding method |
EP96901010A EP0801790B1 (fr) | 1995-01-06 | 1996-01-03 | Procede de codage de parole a analyse par synthese |
BR9606887A BR9606887A (pt) | 1995-01-06 | 1996-01-03 | Processo de codificação de palavra com análise por sintese |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9500135A FR2729247A1 (fr) | 1995-01-06 | 1995-01-06 | Procede de codage de parole a analyse par synthese |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2729247A1 true FR2729247A1 (fr) | 1996-07-12 |
FR2729247B1 FR2729247B1 (fr) | 1997-03-07 |
Family
ID=9474932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR9500135A Granted FR2729247A1 (fr) | 1995-01-06 | 1995-01-06 | Procede de codage de parole a analyse par synthese |
Country Status (10)
Country | Link |
---|---|
US (1) | US5963898A (fr) |
EP (1) | EP0801790B1 (fr) |
CN (1) | CN1173938A (fr) |
AT (1) | ATE180092T1 (fr) |
AU (1) | AU697892B2 (fr) |
BR (1) | BR9606887A (fr) |
CA (1) | CA2209623A1 (fr) |
DE (1) | DE69602421T2 (fr) |
FR (1) | FR2729247A1 (fr) |
WO (1) | WO1996021220A1 (fr) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3134817B2 (ja) * | 1997-07-11 | 2001-02-13 | 日本電気株式会社 | 音声符号化復号装置 |
JP3998330B2 (ja) * | 1998-06-08 | 2007-10-24 | 沖電気工業株式会社 | 符号化装置 |
US6192335B1 (en) * | 1998-09-01 | 2001-02-20 | Telefonaktieboiaget Lm Ericsson (Publ) | Adaptive combining of multi-mode coding for voiced speech and noise-like signals |
CA2252170A1 (fr) * | 1998-10-27 | 2000-04-27 | Bruno Bessette | Methode et dispositif pour le codage de haute qualite de la parole fonctionnant sur une bande large et de signaux audio |
FI116992B (fi) * | 1999-07-05 | 2006-04-28 | Nokia Corp | Menetelmät, järjestelmä ja laitteet audiosignaalin koodauksen ja siirron tehostamiseksi |
JP3372908B2 (ja) * | 1999-09-17 | 2003-02-04 | エヌイーシーマイクロシステム株式会社 | マルチパルス探索処理方法と音声符号化装置 |
GB2357683A (en) * | 1999-12-24 | 2001-06-27 | Nokia Mobile Phones Ltd | Voiced/unvoiced determination for speech coding |
US6760698B2 (en) * | 2000-09-15 | 2004-07-06 | Mindspeed Technologies Inc. | System for coding speech information using an adaptive codebook with enhanced variable resolution scheme |
US7171355B1 (en) | 2000-10-25 | 2007-01-30 | Broadcom Corporation | Method and apparatus for one-stage and two-stage noise feedback coding of speech and audio signals |
FR2820227B1 (fr) * | 2001-01-30 | 2003-04-18 | France Telecom | Procede et dispositif de reduction de bruit |
FI114770B (fi) * | 2001-05-21 | 2004-12-15 | Nokia Corp | Matkaviestimen äänidatan kontrollointi solukkojärjestelmässä |
US7110942B2 (en) * | 2001-08-14 | 2006-09-19 | Broadcom Corporation | Efficient excitation quantization in a noise feedback coding system using correlation techniques |
US7206740B2 (en) * | 2002-01-04 | 2007-04-17 | Broadcom Corporation | Efficient excitation quantization in noise feedback coding with general noise shaping |
US6751587B2 (en) | 2002-01-04 | 2004-06-15 | Broadcom Corporation | Efficient excitation quantization in noise feedback coding with general noise shaping |
US20030135374A1 (en) * | 2002-01-16 | 2003-07-17 | Hardwick John C. | Speech synthesizer |
US20040098255A1 (en) * | 2002-11-14 | 2004-05-20 | France Telecom | Generalized analysis-by-synthesis speech coding method, and coder implementing such method |
US8473286B2 (en) * | 2004-02-26 | 2013-06-25 | Broadcom Corporation | Noise feedback coding system and method for providing generalized noise shaping within a simple filter structure |
FR2888699A1 (fr) * | 2005-07-13 | 2007-01-19 | France Telecom | Dispositif de codage/decodage hierachique |
US8300849B2 (en) * | 2007-11-06 | 2012-10-30 | Microsoft Corporation | Perceptually weighted digital audio level compression |
US9626982B2 (en) * | 2011-02-15 | 2017-04-18 | Voiceage Corporation | Device and method for quantizing the gains of the adaptive and fixed contributions of the excitation in a CELP codec |
JP6122961B2 (ja) | 2012-10-05 | 2017-04-26 | フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン | 自己相関ドメインにおけるacelpを用いたスピーチ信号の符号化装置 |
US9336789B2 (en) * | 2013-02-21 | 2016-05-10 | Qualcomm Incorporated | Systems and methods for determining an interpolation factor set for synthesizing a speech signal |
CN107452390B (zh) * | 2014-04-29 | 2021-10-26 | 华为技术有限公司 | 音频编码方法及相关装置 |
EP3483879A1 (fr) | 2017-11-10 | 2019-05-15 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Fonction de fenêtrage d'analyse/de synthèse pour une transformation chevauchante modulée |
EP3483884A1 (fr) * | 2017-11-10 | 2019-05-15 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Filtrage de signal |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0195487A1 (fr) * | 1985-03-22 | 1986-09-24 | Koninklijke Philips Electronics N.V. | Codeur à prédiction linéaire pour signal vocal avec excitation par impulsions multiples |
EP0573398A2 (fr) * | 1992-06-01 | 1993-12-08 | Hughes Aircraft Company | Vocodeur C.E.L.P. |
EP0619574A1 (fr) * | 1993-04-09 | 1994-10-12 | SIP SOCIETA ITALIANA PER l'ESERCIZIO DELLE TELECOMUNICAZIONI P.A. | Codeur de langage utilisant des techniques d'analyse par synthèse avec excitation d'impulsion |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL8302985A (nl) * | 1983-08-26 | 1985-03-18 | Philips Nv | Multipulse excitatie lineair predictieve spraakcodeerder. |
CA1223365A (fr) * | 1984-02-02 | 1987-06-23 | Shigeru Ono | Methode et appareil de codage de paroles |
US4831624A (en) * | 1987-06-04 | 1989-05-16 | Motorola, Inc. | Error detection method for sub-band coding |
US4802171A (en) * | 1987-06-04 | 1989-01-31 | Motorola, Inc. | Method for error correction in digitally encoded speech |
CA1337217C (fr) * | 1987-08-28 | 1995-10-03 | Daniel Kenneth Freeman | Codage vocal |
US5293448A (en) * | 1989-10-02 | 1994-03-08 | Nippon Telegraph And Telephone Corporation | Speech analysis-synthesis method and apparatus therefor |
AU629637B2 (en) * | 1989-05-11 | 1992-10-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Excitation pulse positioning method in a linear predictive speech coder |
US5060269A (en) * | 1989-05-18 | 1991-10-22 | General Electric Company | Hybrid switched multi-pulse/stochastic speech coding technique |
JP2940005B2 (ja) * | 1989-07-20 | 1999-08-25 | 日本電気株式会社 | 音声符号化装置 |
US5097508A (en) * | 1989-08-31 | 1992-03-17 | Codex Corporation | Digital speech coder having improved long term lag parameter determination |
DE69033510T3 (de) * | 1989-09-01 | 2007-06-06 | Motorola, Inc., Schaumburg | Numerischer sprachcodierer mit verbesserter langzeitvorhersage durch subabtastauflösung |
WO1991006093A1 (fr) * | 1989-10-17 | 1991-05-02 | Motorola, Inc. | Decodeur de parole numerisee utilisant un postfiltre a distorsion spectrale reduite |
US5073940A (en) * | 1989-11-24 | 1991-12-17 | General Electric Company | Method for protecting multi-pulse coders from fading and random pattern bit errors |
US5097507A (en) * | 1989-12-22 | 1992-03-17 | General Electric Company | Fading bit error protection for digital cellular multi-pulse speech coder |
US5265219A (en) * | 1990-06-07 | 1993-11-23 | Motorola, Inc. | Speech encoder using a soft interpolation decision for spectral parameters |
FI98104C (fi) * | 1991-05-20 | 1997-04-10 | Nokia Mobile Phones Ltd | Menetelmä herätevektorin generoimiseksi ja digitaalinen puhekooderi |
EP0556354B1 (fr) * | 1991-09-05 | 2001-10-31 | Motorola, Inc. | Protection d'erreur pour des codeurs de voix multimodes |
US5253269A (en) * | 1991-09-05 | 1993-10-12 | Motorola, Inc. | Delta-coded lag information for use in a speech coder |
TW224191B (fr) * | 1992-01-28 | 1994-05-21 | Qualcomm Inc | |
US5765127A (en) * | 1992-03-18 | 1998-06-09 | Sony Corp | High efficiency encoding method |
US5317595A (en) * | 1992-06-30 | 1994-05-31 | Nokia Mobile Phones Ltd. | Rapidly adaptable channel equalizer |
JP3343965B2 (ja) * | 1992-10-31 | 2002-11-11 | ソニー株式会社 | 音声符号化方法及び復号化方法 |
CA2137756C (fr) * | 1993-12-10 | 2000-02-01 | Kazunori Ozawa | Codeur vocal et methode de recherche d'impulsions d'excitation |
FR2720849B1 (fr) * | 1994-06-03 | 1996-08-14 | Matra Communication | Procédé et dispositif de prétraitement d'un signal acoustique en amont d'un codeur de parole. |
FR2720850B1 (fr) * | 1994-06-03 | 1996-08-14 | Matra Communication | Procédé de codage de parole à prédiction linéaire. |
CA2154911C (fr) * | 1994-08-02 | 2001-01-02 | Kazunori Ozawa | Dispositif de codage de paroles |
US5699477A (en) * | 1994-11-09 | 1997-12-16 | Texas Instruments Incorporated | Mixed excitation linear prediction with fractional pitch |
US5751903A (en) * | 1994-12-19 | 1998-05-12 | Hughes Electronics | Low rate multi-mode CELP codec that encodes line SPECTRAL frequencies utilizing an offset |
FR2729245B1 (fr) * | 1995-01-06 | 1997-04-11 | Lamblin Claude | Procede de codage de parole a prediction lineaire et excitation par codes algebriques |
US5732389A (en) * | 1995-06-07 | 1998-03-24 | Lucent Technologies Inc. | Voiced/unvoiced classification of speech for excitation codebook selection in celp speech decoding during frame erasures |
JP3680380B2 (ja) * | 1995-10-26 | 2005-08-10 | ソニー株式会社 | 音声符号化方法及び装置 |
FR2742568B1 (fr) * | 1995-12-15 | 1998-02-13 | Catherine Quinquis | Procede d'analyse par prediction lineaire d'un signal audiofrequence, et procedes de codage et de decodage d'un signal audiofrequence en comportant application |
US5799271A (en) * | 1996-06-24 | 1998-08-25 | Electronics And Telecommunications Research Institute | Method for reducing pitch search time for vocoder |
-
1995
- 1995-01-06 FR FR9500135A patent/FR2729247A1/fr active Granted
-
1996
- 1996-01-03 CA CA002209623A patent/CA2209623A1/fr not_active Abandoned
- 1996-01-03 US US08/860,746 patent/US5963898A/en not_active Expired - Lifetime
- 1996-01-03 CN CN96191793A patent/CN1173938A/zh active Pending
- 1996-01-03 EP EP96901010A patent/EP0801790B1/fr not_active Expired - Lifetime
- 1996-01-03 DE DE69602421T patent/DE69602421T2/de not_active Expired - Fee Related
- 1996-01-03 AT AT96901010T patent/ATE180092T1/de active
- 1996-01-03 AU AU44903/96A patent/AU697892B2/en not_active Ceased
- 1996-01-03 WO PCT/FR1996/000006 patent/WO1996021220A1/fr active IP Right Grant
- 1996-01-03 BR BR9606887A patent/BR9606887A/pt not_active Application Discontinuation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0195487A1 (fr) * | 1985-03-22 | 1986-09-24 | Koninklijke Philips Electronics N.V. | Codeur à prédiction linéaire pour signal vocal avec excitation par impulsions multiples |
EP0573398A2 (fr) * | 1992-06-01 | 1993-12-08 | Hughes Aircraft Company | Vocodeur C.E.L.P. |
EP0619574A1 (fr) * | 1993-04-09 | 1994-10-12 | SIP SOCIETA ITALIANA PER l'ESERCIZIO DELLE TELECOMUNICAZIONI P.A. | Codeur de langage utilisant des techniques d'analyse par synthèse avec excitation d'impulsion |
Non-Patent Citations (2)
Title |
---|
DATABASE INSPEC INSTITUTE OF ELECTRICAL ENGINEERS, STEVENAGE, GB; KATAOKA A ET AL: "Implementation and performance of an 8-kbit/s conjugate structure CELP speech coder" * |
PROCEEDINGS OF ICASSP '94. IEEE INTERNATIONAL CONFERENCE ON ACOUSTICS, SPEECH AND SIGNAL PROCESSING, ADELAIDE, SA, AUSTRALIA, 19-22 APRIL 1, ISBN 0-7803-1775-0, 1994, NEW YORK, NY, USA, IEEE, USA, pages II/93 - 6 vol.2 * |
Also Published As
Publication number | Publication date |
---|---|
CA2209623A1 (fr) | 1996-07-11 |
AU697892B2 (en) | 1998-10-22 |
DE69602421T2 (de) | 1999-12-23 |
CN1173938A (zh) | 1998-02-18 |
FR2729247B1 (fr) | 1997-03-07 |
ATE180092T1 (de) | 1999-05-15 |
BR9606887A (pt) | 1997-10-28 |
AU4490396A (en) | 1996-07-24 |
WO1996021220A1 (fr) | 1996-07-11 |
EP0801790A1 (fr) | 1997-10-22 |
US5963898A (en) | 1999-10-05 |
DE69602421D1 (de) | 1999-06-17 |
EP0801790B1 (fr) | 1999-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0801790B1 (fr) | Procede de codage de parole a analyse par synthese | |
EP0801788B1 (fr) | Procede de codage de parole a analyse par synthese | |
EP0801789B1 (fr) | Procede de codage de parole a analyse par synthese | |
EP0749626B1 (fr) | Procede de codage de parole a prediction lineaire et excitation par codes algebriques | |
US8401843B2 (en) | Method and device for coding transition frames in speech signals | |
EP1576585B1 (fr) | Procede et dispositif pour une quantification fiable d'un vecteur de prediction de parametres de prediction lineaire dans un codage vocal a debit binaire variable | |
JP2004163959A (ja) | 汎用AbS音声符号化方法及びそのような方法を用いた符号化装置 | |
CN1271925A (zh) | 用于码激励线性预测语音编码的整形的固定码簿搜索 | |
EP1192619B1 (fr) | Codage et decodage audio par interpolation | |
WO2002029786A1 (fr) | Procede et dispositif de codage segmental d'un signal audio | |
EP1194923B1 (fr) | Procedes et dispositifs d'analyse et de synthese audio | |
EP1192618B1 (fr) | Codage audio avec liftrage adaptif | |
JP2001100799A (ja) | 音声符号化装置、音声符号化方法および音声符号化アルゴリズムを記録したコンピュータ読み取り可能な記録媒体 | |
HK1132324B (en) | Method and device for coding transition frames in speech signals | |
EP1192620A1 (fr) | Codage et decodage audio incluant des composantes non harmoniques du signal |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
CD | Change of name or company name | ||
CJ | Change in legal form | ||
CA | Change of address | ||
CD | Change of name or company name | ||
TP | Transmission of property |
Owner name: MICROSOFT CORPORATION, US Effective date: 20130408 |