RAGOT, Stéphane (Allegoat, Lannion, F-22300, FR)
LE GUYADER, Alain (12 rue de Crec'h Huet, Lannion, F-22300, FR)
KOVESI, Balazs (16 chemin du Moulin à Vent, Lannion, F-22300, FR)
RAGOT, Stéphane (Allegoat, Lannion, F-22300, FR)
LE GUYADER, Alain (12 rue de Crec'h Huet, Lannion, F-22300, FR)
| REVENDICATIONS 1. Procédé de codage hiérarchique d'un signal audionumérique comportant: - un codage cœur (400,500), délivrant N indices scalaires { I (n) n=0,..,N-l) de quantification pour un ensemble de N échantillons (x(n) n=0, ..., N-l) d'un signal d'entrée; - une étape d'obtention (480, 580) de coefficients de filtre de masquage; - au moins un codage d'amélioration de rang k délivrant N indices scalaires ( Jk {n) n=0, ... , N-l) de quantification ( Qeknh ), caractérisé en ce que ledit codage d'amélioration comporte: - une étape de détermination (300, 600) de niveaux d'améliorations pour former les vecteurs d'un dictionnaire d'amélioration ( DicB}+k (n) j = 0, ..., 2N—l; n = 0, ..., N— l ) à partir au moins des N indices de quantification cœur ( IB {n)n = 0, ..., N— 1 ) et des indices d'amélioration des étages de rangs inférieurs ( J: («), ..., J _γ η) n = 0, ..., N— 1 ); - une étape de recherche (310, 340, 610) dans le dictionnaire d'amélioration produisant les N indices ( Jk (n) n=0, N-l) du codage d'amélioration de rang k, par minimisation de l'énergie d'un signal d'erreur filtré ( d^B k (n) , e^+k _ H ( ic^k ) ) obtenu en utilisant les coefficients du filtre de masquage. 2. Procédé selon la revendication 1, caractérisé en ce que l'étape de recherche produisant les N indices comporte: - une étape de détermination (603) de vecteurs du dictionnaire filtré ( DicB}+kHT ) en appliquant un filtre de masquage à mémoire nulle aux vecteurs du dictionnaire d'amélioration ( DicB}+k ) ; - une étape de recherche (610) conjointe des N indices ( Jk (n) n=0, N-l) du codage d'amélioration de rang k par minimisation d'un critère d'erreur entre les vecteurs du dictionnaire filtrés ( DicB}+kHT ) et les N échantillons d'un signal cible ( tw (n) ) obtenu à partir d'un signal reconstruit issu du codage des étages de rangs inférieurs et d'un filtre de masquage obtenu à partir desdits coefficients de filtre. 3. Procédé selon la revendication 2, caractérisé en ce que le filtre de masquage à mémoire nulle est obtenu par détermination (602) de la réponse impulsionnelle (h(n)) du filtre de masquage déterminé à partir desdits coefficients de filtre. 4. Procédé selon la revendication 1 , caractérisé en ce que la détermination des niveaux d'amélioration dans l'étage d'amélioration de rang k est effectuée en fonction des différences entre les niveaux de reconstruction dans l'étage d'amélioration de rang k et les niveaux de reconstruction associés dans l'étage d' amélioration de rang k-1 5. Procédé selon la revendication 2, caractérisé en ce que la détermination du signal cible pour un étage de codage d'amélioration de rang k, comporte les étapes suivantes: - calcul d'une prédiction vectorielle de l'erreur reconstituée ( ^red (n) ) pour N échantillons, à partir des sorties passées du quantificateur d'amélioration et du filtre de masquage déterminé; - obtention du signal cible à partir du signal de prédiction calculé ( ^+^red {n) ) et du signal de bruit de reconstruction filtré obtenu de l'étage précédent; - adaptation des mémoires du filtre de masquage à partir des valeurs obtenues en sortie du quantificateur pour les N échantillons courants. 6. Procédé selon la revendication 1 , caractérisé en ce que l'obtention du filtre de masquage est un calcul commun à l'étage de codage cœur et à l'étage de codage d'amélioration auquel des gains d'amortissement sont appliqués en fonction de l'étage de codage respectif. 7 Procédé selon la revendication 1 , caractérisé en ce que le codage cœur est un codage MICDA. 8. Procédé selon la revendication 7, caractérisé en ce que la détermination des vecteurs du dictionnaire d'amélioration est fonction de facteurs d'échelle (v(n)) issus du codage cœur MICDA. 9. Procédé selon la revendication 1 , caractérisé en ce que le codage cœur est un codage MIC. 10. Codeur hiérarchique de signal audionumérique comportant: - un étage de codage cœur, délivrant N indices scalaires ( IB (n) n=0,..,N-l) de quantification pour un ensemble de N échantillons (x(n) n=0, .. . , N-l) d'un signal d'entrée; - un module (580) d'obtention de coefficients d'un filtre de masquage; - au moins un étage de codage d'amélioration (EAk) de rang k délivrant N indices scalaires ( J k {n) n=0, ... , N-l) de quantification ( Qeknh ), caractérisé en ce que l'étage de codage d'amélioration courant de rang k (EAk) comporte:, - un module de détermination (600) de niveaux d'améliorations pour former les vecteurs d'un dictionnaire d'amélioration ( Dic^}+k (n) j = 0, ..., 2N—l; n = 0, ..., N— l ) à partir au moins des N indices de quantification cœur ( IB {n)n = Ο, .,., Ν— 1 ) et des indices d'amélioration des étages de rangs inférieurs ( J: («), ..., J _γ η) n = Ο, .,., Ν— 1 ); - un module (310,340) de recherche dans le dictionnaire d'amélioration produisant les N indices ( Jk (n) n=0, N-l) du codage d'amélioration de rang k, par minimisation de l'énergie d'un signal d'erreur filtré (. d^k (n) ) obtenu en utilisant les coefficients du filtre de masquage. 11. Programme informatique comportant des instructions de code pour la mise en œuvre des étapes du procédé de codage selon l'une des revendications 1 à 9, lorsque ces instructions sont exécutées par un processeur. |
Le codage selon l'invention est adapté notamment pour la transmission et/ou le stockage de signaux numériques tels que des signaux audiofréquences (parole, musique ou autres).
La présente invention se rapporte plus particulièrement au codage de forme d'onde de type codage MICDA (pour "Modulation par Impulsion et Codage Différentiel Adaptatif") dit " ADPCM" (pour "Adaptive Differential Puise Code Modulation") en anglais et notamment au codage de type MICDA à codes imbriqués permettant de délivrer des indices de quantification à train binaire scalable.
Le principe général du codage/décodage MICDA à codes imbriqués spécifié par les recommandations UIT-T G.722, UIT-T G.726 ou UIT-T G.727 est tel que décrit en référence aux figures 1 et 2.
La figure 1 représente ainsi un codeur à codes imbriqués de type MICDA (ex : G.722 bande basse, G.727) fonctionnant entre B et B+K bits par échantillon ; à noter que le cas d'un codage MICDA non scalable (ex : G.726, G.722 bande haute) correspond à K=0.
Il comporte:
- un module de prédiction 110 permettant de donner la prédiction du signal x B (n) à partir des échantillons précédents du signal d'erreur quantifié e Q B (n ' ) = y B B (n )v(n ) n = n— ï, ..., n— N z , où v(n ) est le facteur d'échelle de quantification, et du signal reconstitué r B (n ) n = n— Ι, .,., η— N p où n est l'instant courant.
- un module de soustraction 120 qui retranche du signal d'entrée x(n) sa prédiction x B (n) pour obtenir un signal d'erreur de prédiction noté e(n) .
- un module de quantification 130 Q B+K du signal d'erreur qui reçoit en entrée le signal d'erreur e(n) pour donner des indices de quantification I B+K (n) constitués de B+K bits. Le module de quantification Q B+K est à codes imbriqués c'est-à-dire qu'il comporte un quantificateur cœur à B bits et des quantificateurs à B + k k = l, ..., K bits qui sont imbriqués sur le quantificateur cœur. Dans le cas de la norme UIT-T G.722 (codage de la bande basse), les niveaux de décision et les niveaux de reconstruction des quantificateurs Q B , Q B+l , Q B+2 pour B = 4 sont donnés par les tableaux IV et VI de l'article de synthèse décrivant la norme G.722 de X. Maître. "7 kHz audio coding within 64 kbit/s". IEEE Journal on Selected Areas in Communication, Vol.6-2, February 1988.
L'indice de quantification I B+K (n) de B + K bits en sortie du module de quantification Q B+K est transmis via le canal de transmission 140 au décodeur tel que décrit en référence à la figure 2.
Le codeur comporte également:
- un module 150 de suppression des K bits de poids faible de l'indice I B+K (n) pour donner un indice bas débit I B (n) ;
- un module de quantification inverse 121 pour donner en sortie un signal d'erreur quantifié e Q B (n) = y B B (n)v(n) sur B bits;
- un module d'adaptation 170 Q Adapt des quantificateurs et des quantificateurs inverses pour donner un paramètre de contrôle de niveau v(n) encore appelé facteur d'échelle, pour l'instant suivant;
- un module d'addition 180 de la prédiction x B (n) au signal d'erreur quantifié pour donner le signal reconstruit à bas débit r B {n) ;
- un module d'adaptation 190 P Adapt du module de prédiction à partir du signal d'erreur quantifié sur B bits e Q B {n) et du signal e Q B {n) filtré par l+ P z (z)■
On peut remarquer que sur la figure 1 la partie grisée référencée 155 représente le décodeur local à bas débit qui contient les prédicteurs 165 et 175 et le quantificateur inverse 121. Ce décodeur local permet ainsi d'adapter le quantificateur inverse en 170 à partir de l'indice bas débit I B (n) et d'adapter les prédicteurs 165 et 175 à partir des données bas débit reconstruites.
Cette partie se retrouve à l'identique sur le décodeur MICDA à codes imbriqués tel que décrit en référence à la figure 2.
Le décodeur MICDA à codes imbriqués de la figure 2 reçoit en entrée les indices τ
I issu du canal de transmission 140, version de / éventuellement perturbée par des erreurs binaires, et réalise une quantification inverse par le module de quantification inverse
210 {j B ) de débit B bits par échantillon pour obtenir le signal (n) = y B B (n) v '(n) . Le symbole " ' " indique une valeur décodée à partir des bits reçus, éventuellement différente de celle utilisée par le codeur du fait d'erreurs de transmission.
Le signal de sortie r ' B (n) pour B bits sera égal à la somme de la prédiction du signal et de la sortie du quantificateur inverse à B bits. Cette partie 255 du décodeur est identique au décodeur local bas débit 155 de la figure 1.
Moyennant l'indicateur de débit mode et le sélecteur 220, le décodeur peut améliorer le signal restitué.
En effet si mode indique que B+l bits ont été transmis, la sortie sera égale à la somme de la prédiction x B {n) et de la sortie du quantificateur inverse 230 à B+l bits
' B+l \
y jB+l (n)v (n) .
Si mode indique que B+2 bits ont été transmis alors la sortie sera égale à la somme de la prédiction x B (n) et de la sortie du quantificateur inverse 240 à B+2 bits y {η)ν .
En utilisant les notations de la transformée en z, on peut écrire que dans cette structure bouclée :
R B+k (z) = X (Z) + Q B+k (z)
en définissant le bruit de quantification à B+k bits Q B+k (z) par :
Q B+k (z) = E B+k (z) - E(z)
Le codage MICDA à codes imbriqués de la norme UIT-T G.722 (ci-après nommé G.722) réalise un codage des signaux en bande élargie qui sont définis avec une largeur de bande minimale de [50-7000 Hz] et échantillonnés à 16 kHz. Le codage G.722 est un codage MICDA de chacune des deux sous-bandes du signal [0-4000 Hz] et [4000-8000 Hz] obtenues par décomposition du signal par des filtres miroirs en quadrature. La bande basse est codée par un codage MICDA à codes imbriqués sur 6, 5 et 4 bits tandis que la bande haute est codée par un codeur MICDA de 2 bits par échantillon. Le débit total sera de 64, 56 ou 48 bit/s suivant le nombre de bits utilisé pour le décodage de la bande basse.
Ce codage a d'abord été développé pour utilisation dans le RNIS (Réseau Numérique à Intégration de Services) . il a été récemment déployé dans les applications de téléphonie de qualité améliorée sur réseau IP.
A titre d'exemple, dans la norme G.722, les 8 bits sont répartis de la façon suivante telle que représenté à la figure 3:
2 bits I hl et I h2 pour la bande haute
6 bits I L1 , I L2 I L3 I L4 I L5 I L6 pour la bande basse. Les bits I L5 et I L6 peuvent être supprimés (mis à zéro) pour réduire le débit en cas de congestion réseau ou volés (remplacés) par des données ; ces bits constituent les bits d'amélioration de la bande basse. Les bits I L1 , I L2 I L3 I L4 constituent les bits cœur de la bande basse.
Ainsi, une trame de signal quantifié selon la norme G.722 est constituée d'indices de quantification codés sur 8, 7 ou 6 bits. La fréquence de transmission de l'indice étant de 8 kHz, le débit sera de 64, 56 ou 48 kbit/s.
Pour un quantificateur à grand nombre de niveaux, le spectre du bruit de quantification sera relativement plat comme le montre la figure 4. Le spectre du signal est aussi représenté sur la figure 4 (ici un bloc de signal voisé). Ce spectre a une grande dynamique (~40dB). On peut voir que dans les zones de faible énergie, le bruit est très proche du signal et n'est donc plus forcément masqué. Il peut alors devenir audible dans ces régions, essentiellement dans la zone de fréquences [2000-2500 Hz] sur la figure 4.
Une mise en forme du bruit de codage est donc nécessaire. Une mise en forme du bruit de codage adaptée à un codage à codes imbriqués serait de plus souhaitable.
Une technique de mise en forme du bruit pour un codage de type MIC (pour "Modulation par Impulsions Codées") à codes imbriqués est décrite dans la recommandation UIT-T G.711.1 « Wideband embedded extension for G.711 puise code modulation » ou « G.711.1 : A wideband extension to ITU-T G.711 ». Y. Hiwasaki, S. Sasaki, H. Ohmuro, T. Mori, J. Seong, M. S. Lee, B. Kôvesi, S. Ragot, J.-L. Garcia, C. Marro ,L. M., J. Xu, V. Malenovsky, J. Lapierre, R. Lefebvre. EUSIPCO, Lausanne, 2008.
Cette recommandation décrit ainsi un codage avec mise en forme du bruit de codage pour un codage de débit cœur et un étage d'amélioration. Un filtre perceptuel de mise en forme du bruit de codage est calculé sur la base des signaux décodés passés, issus d'un quantificateur cœur inverse. Un décodeur local de débit cœur permet donc de calculer le filtre de mise en forme du bruit. Ainsi, au décodeur, il est possible de calculer ce filtre de mise en forme du bruit à partir des signaux décodés de débit cœur.
Un quantificateur délivrant des bits d'amélioration est utilisé au codeur.
Le décodeur recevant le flux binaire cœur et les bits d'amélioration, calcule le filtre de mise en forme du bruit de codage de la même façon qu'au codeur à partir du signal décodé de débit cœur et applique ce filtre au signal de sortie du quantificateur inverse des bits d'amélioration, le signal haut débit mis en forme étant obtenu en ajoutant le signal filtré au signal décodé cœur.
La mise en forme du bruit améliore ainsi la qualité perceptuelle du signal de débit cœur. Elle offre une amélioration limitée de la qualité pour les bits d'amélioration. En effet, la mise en forme du bruit de codage n'est pas effectuée au codeur pour le codage des bits d'amélioration, l'entrée du quantificateur étant la même pour la quantification cœur que pour la quantification améliorée.
Le décodeur doit alors supprimer une composante parasite résultante par un filtrage adapté, lorsque les bits d'amélioration sont décodés en plus des bits cœur.
Le calcul supplémentaire d'un filtre au décodeur augmente la complexité du décodeur.
Cette technique n'est pas utilisable dans les décodeurs scalables standards déjà existants de type décodeur G.722 ou G.727 puisque le décodeur standard ne possède pas le dispositif permettant d'éliminer la composante parasite. De plus, cette technique dégraderait la qualité dans les équipements standards (ponts audio, passerelles, ....) qui n'auraient pas été mis à jour ce qui est inacceptable pour l'introduction progressive d'un tel dispositif dans le réseau. Il existe donc un besoin d'amélioration de la qualité des signaux quelque soit le débit tout en restant compatible avec les décodeurs scalables standards existants.
Dans les structures de codage scalables avec plusieurs codages d'amélioration, il existe un besoin d'améliorer la qualité de codage pour tous les étages de codage. Il est aussi important que l'introduction progressive de la nouvelle technique dans le réseau puisse se faire sans dégradation de qualité dans les équipements actuels (ponts de conférence, passerelles, etc) en gardant une qualité standard avant leur mise à jour et en procurant une qualité améliorée après adaptation.
La présente invention vient améliorer la situation.
A cet effet, elle propose un procédé de codage hiérarchique d'un signal audionumérique comportant:
- un codage cœur, délivrant N indices scalaires ( I B (n) n=0,..,N-l) de quantification pour un ensemble de N échantillons (x(n) n=0, ..., N-l) d'un signal d'entrée;
- une étape d'obtention de coefficients de filtre de masquage;
- au moins un codage d'amélioration de rang k délivrant N indices scalaires
( J k {n) n=0, ... , N-l) de quantification ( Q e k nh ).
Le procédé est tel que ledit codage d'amélioration comporte:
- une étape de détermination de niveaux d'améliorations pour former les vecteurs d'un dictionnaire d'amélioration ( Dic B * k (n) j = 0, ..., 2 N — l; n = Ο, .,., Ν— 1 ) à partir au moins des N indices de quantification cœur ( I B {n) n = Ο, .,., Ν— 1 ) et des indices d'amélioration des étages de rangs inférieurs ( J η) n = 0, ..., N— 1); - une étape de recherche dans le dictionnaire d'amélioration produisant les N indices ( J k (n) n=0, ..., N-l) du codage d'amélioration de rang k, par minimisation de l'énergie d'un signal d'erreur filtré (. d^ B k (n) ) obtenu en utilisant les coefficients du filtre de masquage.
Ainsi, une mise en forme du bruit de codage du signal d'amélioration de plus haut débit est effectuée. La méthode d'analyse par synthèse faisant l'objet de l'invention ne nécessite pas d'effectuer au décodeur, de traitement de signal complémentaire comme ceci peut être le cas dans les solutions de mise en forme du bruit de codage de l'état de l'art.
Le signal reçu au décodeur pourra donc être décodé par un décodeur standard apte à décoder le signal de débit cœur et de débits imbriqués qui ne nécessite pas de calcul de mise en forme du bruit ni de terme correctif.
La qualité du signal décodé est donc améliorée quelque soit le débit disponible au décodeur.
La quantification vectorielle mise en œuvre pour déterminer les indices de quantification du signal d'amélioration permet de prendre en compte un groupe de N échantillons pour optimiser la qualité de codage et éviter qu'une prise de décision à un instant n ait un impact négatif sur les échantillons futurs.
Les différents modes particuliers de réalisation mentionnés ci-après peuvent être ajoutés indépendamment ou en combinaison les uns avec les autres, aux étapes du procédé défini ci-dessus.
Dans un mode de réalisation particulier, l'étape de recherche produisant les N indices comporte:
- une étape de détermination de vecteurs du dictionnaire filtré ( Dic^ +k H T ) en appliquant un filtre de masquage à mémoire nulle aux vecteurs du dictionnaire d'amélioration ( Dic B } +k ) ;
- une étape de recherche conjointe des N indices ( J k (n) n=0, N-l) du codage d'amélioration de rang k par minimisation d'un critère d'erreur entre les vecteurs du dictionnaire filtrés ( Dic B } +k H T ) et les N échantillons d'un signal cible ( t w (n) ) obtenu à partir d'un signal reconstruit issu du codage des étages de rangs inférieurs et d'un filtre de masquage obtenu à partir desdits coefficients de filtre.
En effet, du fait de la mémoire du filtre de masquage, chaque échantillon en sortie du quantificateur contribue au signal d'erreur à quantifier pendant une durée égale à la longueur effective de la réponse impulsionnelle du filtre de masquage. Il en résulte qu'il est préférable de minimiser le critère d'erreur sur quelques échantillons en explorant toutes les combinaisons des sorties de quantification possibles plutôt que d'effectuer une quantification scalaire.
Selon un mode de réalisation, le filtre de masquage à mémoire nulle est obtenu par détermination de la réponse impulsionnelle (h(n)) du filtre de masquage déterminé à partir desdits coefficients de filtre.
Dans un mode particulier de réalisation, la détermination des niveaux d'amélioration dans l'étage d' amélioration de rang k est effectuée en fonction des différences entre les niveaux de reconstruction dans l'étage d' amélioration de rang k et les niveaux de reconstruction associés dans l'étage d' amélioration de rang k-1 , i B+k B+k B+k-l · r\
( enh j = _y 2Î/ /B+M+ . - _y /B+M j = 0, l,...,2 - 1 ).
Selon une caractéristique de mise en œuvre, la détermination du signal cible pour un étage de codage d'amélioration de rang k, comporte les étapes suivantes:
- calcul d'une prédiction vectorielle de l'erreur reconstituée ( e^ + ^ red (n) ) pour N échantillons, à partir des sorties passées du quantificateur d'amélioration et du filtre de masquage déterminé;
- obtention du signal cible à partir du signal de prédiction calculé ( e^ red (n) ) et du signal de bruit de reconstruction filtré obtenu de l'étage précédent;
- adaptation des mémoires du filtre de masquage à partir des valeurs obtenues en sortie du quantificateur pour les N échantillons courants.
L'agencement des opérations décrit ici conduit à une mise en forme du bruit de codage d'amélioration par des opérations de complexité très réduite.
Dans un mode particulier de réalisation, l'obtention du filtre de masquage est un calcul commun à l'étage de codage cœur et à l'étage de codage d'amélioration auquel des gains d'amortissement sont appliqués en fonction de l'étage de codage respectif.
Ainsi, la mise en forme du bruit est adaptée pour le codage cœur et pour le codage d'amélioration sans pour autant augmenter la complexité de calcul des filtres.
L'invention s'applique de façon avantageuse à un codage cœur de type codage MICDA et aussi lorsque le codage cœur est un codage MIC.
Selon un mode particulier, pour le cas du codage cœur MICDA, la détermination des vecteurs du dictionnaire d'amélioration est fonction de facteurs d'échelle (v(n)) issus du codage cœur.
Les valeurs sont ainsi adaptées au niveau de sortie du codage cœur.
La présente invention se rapporte également à un codeur hiérarchique de signal audionumérique comportant: - un étage de codage cœur, délivrant N indices scalaires ( / (n) n=0,..,N-l) de quantification pour un ensemble de N échantillons (x(n) n=0, .. . , N-l) d'un signal d'entrée;
- un module (580) d'obtention de coefficients d'un filtre de masquage;
- au moins un étage de codage d'amélioration (EAk) de rang k délivrant N indices scalaires ( J k {n) n=0, .. . , N-l) de quantification ( Q e k nh ).
Le codeur est tel que l'étage de codage d'amélioration courant de rang k (EAk) comporte:,
- un module de détermination (600) de niveaux d'améliorations pour former les vecteurs d'un dictionnaire d'amélioration ( Dic B } +k (n) j = 0, ..., 2 N — l; n = Ο, .,., Ν— 1 ) à partir au moins des N indices de quantification cœur I B (n) n = Ο, ., ., Ν— 1 ) et des indices d'amélioration des étages de rangs inférieurs ( J {η) n = 0, ..., N— 1 );
- un module (310,340) de recherche dans le dictionnaire d'amélioration produisant les N indices ( J k (n) n=0, N-l) du codage d'amélioration de rang k, par minimisation de l'énergie d'un signal d'erreur filtré (. d^ B k (n) ) obtenu en utilisant les coefficients du filtre de masquage.
Elle se rapporte aussi à un programme informatique comportant des instructions de code pour la mise en œuvre des étapes du procédé de codage selon l'invention, lorsque ces instructions sont exécutées par un processeur.
L'invention se rapporte enfin à un moyen de stockage lisible par un processeur mémorisant un programme informatique tel que décrit.
D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante, donnée uniquement à titre d'exemple non limitatif, et faite en référence aux dessins annexés, sur lesquels:
- la figure 1 illustre un codeur de type MICDA à codes imbriqués selon l'état de l'art et tel que décrit précédemment;
- la figure 2 illustre un décodeur de type MICDA à codes imbriqués selon l'état de l'art et tel que décrit précédemment;
- la figure 3 illustre un exemple de trame d'indices de quantification d'un codeur de type MICDA à codes imbriqués selon l'état de l'art et tel que décrit précédemment;
- la figure 4 représente un spectre d'un bloc de signal par rapport au spectre d'un bruit de quantification présent dans un codeur n'implémentant pas la présente invention;
- la figure 5a représente un schéma bloc général d'un codeur à codes imbriqués et d'un procédé de codage selon un mode général de réalisation de l'invention; - la figure 5b représente un schéma bloc optimisé d'un codeur à codes imbriqués et d'un procédé de codage selon un mode général de réalisation de l'invention;
- la figure 6a représente un schéma bloc général d'un étage de codage d'amélioration et d'un procédé de codage d'amélioration selon l'invention;
- la figure 6b représente un schéma bloc optimisé d'un étage de codage d'amélioration et d'un procédé de codage d'amélioration selon l'invention;
- la figure 7 illustre différentes configurations de décodeurs adaptés au décodage d'un signal issu du codage selon l'invention;
- la figure 8 représente un schéma bloc d'un premier mode détaillé de réalisation d'un codeur selon l'invention et d'un procédé de codage selon l'invention;
- la figure 9 illustre un organigramme représentant les étapes d'un mode de réalisation du calcul du filtre de masquage pour le codage selon l'invention;
- la figure 10 illustre une représentation du signal d'amélioration selon le procédé de codage de l'invention;
- la figure l ia illustre un exemple de dictionnaire de quantification avec une structure en arbre selon l'invention;
- la figure 11b illustre une représentation équivalente du dictionnaire de quantification selon l'invention, sous la forme d'un arbre.
- la figure 12 représente un schéma bloc d'un deuxième mode de réalisation détaillé d'un codeur selon l'invention et d'un procédé de codage selon l'invention; et
- la figure 13 représente un mode de réalisation possible d'un codeur selon l'invention.
Dans la suite du document, le terme "prédiction" est systématiquement employé pour décrire des calculs utilisant uniquement des échantillons passés.
En référence à la figure 5a, un codeur à codes imbriqués selon l'invention est maintenant décrit. Il est important de noter que le codage s'effectue avec des étages d'amélioration apportant un bit par échantillon supplémentaire. Cette contrainte n'est utile ici que pour simplifier la présentation de l'invention. Il est cependant clair que l'invention décrite ci-après se généralise facilement au cas où les étages d'amélioration apportent plus d'un bit par échantillon.
Le codeur tel que représenté en figure 5 a comporte un codage cœur (400) apparaissant en grisé, plusieurs étages de codage d'amélioration (430, 440, 450), et le calcul d'un filtre de masquage (480). L'étage d'amélioration de rang 1 EA1 (430), l'étage d'amélioration de rang k EAk (440) et l'étage d'amélioration de rang k2 EAk2 (450) sont ici représentés. Par convention on considérera que le codage cœur est de rang 0. Ce codeur de la figure 5a comporte un étage de codage de débit cœur 400 avec décodeur local 405 comme décrit en référence aux figures 1 et 2 de l'état de l'art et tel que prévu dans le codeur normalisé G.722, G.726 ou G .727 ou encore G.711 avec contre-réaction du bruit de codage en fonction des sorties du bloc 420. Le signal d'entrée est quantifié sur B bits. Les indices de quantification sont multiplexés (460) et transmis au décodeur via le canal de transmission 470.
Dans la suite de cette description, et sans perte de généralité, on prendra comme exemple particulier de réalisation de codage cœur le codeur normalisé MICDA hiérarchique utilisé dans la bande basse de la norme G.722 avec B = 5 bits (on suppose donc que G.722 fonctionne à 56 kbit/s, qu'il est étendu de façon hiérarchique et que le codage MICDA en bande basse est modifié suivant l'invention). Cependant dans le cas général le codeur auquel s'applique l'invention est un codeur MIC ou MICDA.
Le bloc référencé 400 représente cet étage de codage cœur avec mise en forme du bruit de codage, c'est-à-dire masquage du bruit du codage cœur.
L'invention telle que présentée, se rapporte également dans le cas où on n'effectue pas de masquage du bruit de codage dans la partie cœur. Par ailleurs, le terme "codeur cœur" est utilisé au sens large dans ce document. Ainsi on peut considérer comme "codeur cœur" un codeur multi-débits existant comme par exemple UIT-T G.722 à 56 ou 64 kbit/s. A l'extrême on peut également considérer un codeur cœur à 0 kbit/s, c'est-à-dire appliquer la technique de codage d'amélioration qui fait l'objet de la présente invention dès la première étape du codage. Dans ce dernier cas le codage d'amélioration devient codage cœur.
L'étage de codage cœur est décrit ici en référence à la figure 5a, avec mise en forme du bruit. Il opère sur une trame de N échantillons du signal d'entrée en effectuant les opérations dans l'ordre défini ci-dessous pour chacun des instants d'échantillonnage n = 0, ..., N— 1. Il comporte un module de prédiction 420 effectuant la prédiction du signal de bruit de reconstruction filtré b B (n) à partir des échantillons passés du bruit de reconstruction b B (n ) n = n— \, n— 2, ..., n— N D et des échantillons passés du signal de bruit de reconstruction filtré b B (n ) n = n— l, n— 2, ..., n— N N . Ce module de prédiction délivre en sortie un signal de prédiction b B pred (n) pour l'instant d'échantillonnage n.
L'étage de codage cœur comporte également un module 405 de décodage local
MIC/MICDA du signal, préférentiellement de type de ceux constitutifs des normes de type
G.711, G.722, G.726 ou G.727 pour donner le cas échéant, un signal prédit Xp (n) , un signal reconstruit r B (n) égal à la somme de la prédiction et de la sortie du quantificateur inverse de B bits et un facteur d'échelle v(n) calculé à partir des échantillons des instants précédents dans le cas du codage de type MICDA.
Un module 412 effectue la soustraction de la prédiction du bruit de reconstruction filtré b B pred (n) et de la prédiction du signal x B (n) du signal d'entrée x(n) pour donner e B (n) , le signal d'entrée du module de quantification modifié MIC/MICDA. A noter que la soustraction effectuée en module 412 peut être remplacée par une addition si les coefficients du filtre sont inversés.
Le module 410 de quantification MIC/MICDA de « cœur » sur B bits effectue la quantification par comparaison du signal d'entrée à l'ensemble des valeurs de sortie possibles et par sélection de la valeur la plus proche, les niveaux de sortie ^y^, (ft)v(n)^] étant calculés par multiplication et passage en précision finie des valeurs de sortie des quantificateurs fixes MIC/MICDA par un facteur d'échelle v(n) pour donner les indices de quantification I B pour l'échantillon n. Une recherche par dichotomie limite considérablement le nombre de recherches à effectuer.
L'indice de quantification optimal I B (n) et la valeur quantifiée y^ B (n)v(n) minimisent le critère d'erreur E B = e B (n) - [y B (n)v(n) j = 0, ..., N O —1 ou de façon équivalente Dist an ce e B (n) - [y B (n)v(n) j = 0, ..., N Q —1 OÙ les valeurs . (n) sont les niveaux reconstruits et v(n) le facteur d'échelle issu du module 405 de décodage local.
A titre d'exemple pour le codeur G.722, les niveaux de reconstruction du quantificateur cœur Q B sont définis par le tableau VI de l'article de X. Maître. "7 kHz audio coding within 64 kbit/s", IEEE Journal on Selected Areas in Communication, Vol.6-2, February 1988".
L'étage de codage cœur comporte aussi un module 415 de soustraction entre le signal d'entrée x(n) et le signal r B (n) de sortie du décodeur local du codeur MIC/MICDA pour donner le signal de différence ou bruit de reconstruction b B {n) .
Il comporte également un module 425 d'addition de la prédiction b B pred (n) au signal de différence b B (n) pour donner le signal de bruit de reconstruction b B (n)
Les modules d'adaptation des quantificateurs directs et inverses et du prédicteur MICDA, le cas échéant, sont inclus dans le décodeur local MIC/MICDA.
Un étage de codage d'amélioration de 1 bit par échantillon ainsi représenté sera détaillé ultérieurement en référence à la figure 6a. De façon générale, chaque étage k de codage d'amélioration reçoit en entrée N indices I B (n) n=0, N-l du codage cœur et des indices des étages d'amélioration précédents J^ri), ..., J ^ (n n=0, N-l ou de façon équivalente l'ensemble de ces indices multiplexé J B+k~l ) les N échantillons du signal de bruit reconstruit à l'étape précédente b B+k~l (n) n=0, N-l, les paramètres du filtre de masquage et le cas échéant, les facteurs d'échelle v(n) n=0, N-l , dans le cas d'un codage adaptatif.
Tous ces signaux ou indices d'entrée ont été calculés pour les N échantillons et mis en mémoire avant d'être transmis à l'étage de codage d'amélioration.
Cet étage d'amélioration fournit en sortie N indices J k (n) n=0, N-l de quantification des bits d'amélioration de cet étage de codage qui seront multiplexés avec les indices I B+k~l (n) n=0, .. . , N-1 dans le module de multiplexage 460. L'étage d'amélioration k fournit également en sortie N échantillons du signal d' amélioration en sortie du quantificateur eQ B k (n) n=0, N-l . La sortie eQ B k (n) n=0, N-l est soustraite en 445 du signal b B+k~l (n) n=0, N- l pour donner le signal b B+k (n) n=0, N- l d'entrée du bloc suivant. Il est à noter que l'indice J k (n) représente ici un bit pour chaque échantillon d'indice n; cependant dans le cas général J k (n) peut représenter plusieurs bits par échantillon si le nombre de valeurs de quantification possibles est supérieur à 2.
Les indices à transmettre J l (n), ..., J kl (n) seront multiplexés à l'indice I B (n) de sorte que l'indice résultant puisse être décodé par un décodeur standard tel que représenté et décrit ultérieurement en figure 7. Il n'est donc pas nécessaire de changer le décodeur distant; de plus, aucune information supplémentaire n'est nécessaire pour "informer" le décodeur distant des traitements effectués au codeur. Un indicateur de débit indique au décodeur le nombre de bits à décoder et dans le cas d'un décodeur standard les bits d'amélioration peuvent être ignorés s'ils ne correspondent pas au débit de décodage déjà définis dans le standard. Par exemple si l'invention s'applique au codage MICDA dans la bande basse de G.722 au débit cœur de 56 kbit/s les bits d' amélioration emmenant le débit de 56 à 64 kbit/s peuvent être décodés par le décodeur G.722 standard. Par contre si le débit cœur est de 64 kbit/s alors les bits d'améliorations seront ignorés par le décodeur G.722 standard car G.722 est limité à 64 kbit/s.
D'autres bits J kl+1 (n), ..., J k2 (n) correspondent à des bits d'amélioration par augmentation du débit du décodeur standard avec masquage de bruit et nécessitent un module de décodage supplémentaire décrit en référence à la figure 7. Le codeur de la figure 5a comporte également un module 480 de calcul du filtre de mise en forme du bruit ou filtre de masquage, à partir du signal d'entrée ou des coefficients des filtres de synthèse du codeur. Un exemple de calcul mis en œuvre dans ce module est décrit en référence à la figure 9. A noter que le module 480 pourrait avoir en entrée le signal décodé localement plutôt que le signal original.
Les étages de codage d'amélioration tels que représentés ici permettent de fournir des bits d'amélioration offrant une qualité accrue du signal au décodeur, quelque soit le débit du signal décodé et sans modifier le décodeur et donc sans aucune complexité additionnelle au décodeur.
Dans le codeur de la figure 5a, le codage d'amélioration de rang k a pour entrée le signal d'erreur (ou bruit de codage) b B+k~l (n) de l'étage précédent. Afin de minimiser le nombre de filtrage, ce codeur peut être mis en œuvre de façon équivalente suivant le schéma illustré à la figure 5b, la différence principale étant que dans le codeur de la figure 5b le codage d'amélioration de rang k a pour entrée un signal de bruit de reconstruction filtré b B (n) déduit de la sortie de l'étage précédent.
Ce codeur de la figure 5b comporte un étage de codage de débit cœur 500 avec décodeur local 505 comme décrit en référence aux figures 1 et 2 de l'état de l'art et tel que prévu dans le codeur normalisé G.722, G.726 ou G .727 ou encore G.711 avec contre-réaction du bruit de codage en fonction des sorties du bloc 520. Le signal d'entrée est quantifié sur B bits par échantillon.
L'étage de codage cœur est décrit ici en référence à la figure 5b, avec mise en forme du bruit. Il opère sur une trame de N échantillons du signal d'entrée en effectuant les opérations dans l'ordre défini ci-dessous pour chacun des instants d'échantillonnage n = 0, ..., N— 1. Il comporte un module de prédiction 520 effectuant la prédiction du signal de bruit de reconstruction filtré b B (n) à partir des échantillons passés du bruit de reconstruction b B (n ) n = n— l, n— 2, ..., n— N D et des échantillons passés du signal de bruit de reconstruction filtré b B (n ) n = n— l, n— 2, ..., n— N N . Ce module de prédiction délivre en sortie un signal de prédiction b B pred (n) pour l'instant d'échantillonnage n.
L'étage de codage cœur comporte également un module 505 de décodage local MIC/MICDA du signal, préférentiellement de type de ceux constitutifs des normes de type
G.711, G.722, G.726 ou G.727 pour donner le cas échéant, un signal prédit Xp (n) , un signal reconstruit r B (n) égal à la somme de la prédiction et de la sortie du quantificateur inverse de B bits et un facteur d'échelle v(n) calculé à partir des échantillons des instants précédents dans le cas du codage de type MICDA. Un module 512 effectue la soustraction de la prédiction du bruit de reconstruction filtré b B pred (n) et de la prédiction du signal x B (n) du signal d'entrée x(n) pour donner e B (n) , le signal d'entrée du module de quantification modifié MIC/MICDA. A noter que la soustraction effectuée en module 512 peut être remplacée par une addition si les coefficients du filtre sont inversés.
Le module 510 de quantification MIC/MICDA de « cœur » sur B bits effectue la quantification par comparaison du signal d'entrée à l'ensemble des valeurs de sortie possibles et par sélection de la valeur la plus proche, les niveaux de sortie ^y^, («)v(«)^| étant calculés par multiplication et passage en précision finie des valeurs de sortie des quantificateurs fixes MIC/MICDA par un facteur d'échelle v(n) pour donner les indices de quantification I B pour l'échantillon n. Une recherche par dichotomie limite considérablement le nombre de recherches à effectuer.
L'indice de quantification optimal I e (n) et la valeur quantifiée y B B ( ^ (n)v(n) minimisent le critère d'erreur E B = e B (n) - [y B (n)v(n) j = 0, ..., N O —1 ou de façon équivalente Dist an ce j = 0, ..., N Q —1 OÙ les valeurs y . (n) sont
les niveaux reconstruits et v(n) le facteur d'échelle issu du module 505 de décodage local.
A titre d'exemple pour le codeur G.722, les niveaux de reconstruction du quantificateur cœur Q B sont définis par le tableau VI de l'article de X. Maître. "7 kHz audio coding within 64 kbit/s", IEEE Journal on Selected Areas in Communication, Vol.6-2, February 1988".
L'étage de codage cœur comporte aussi un module 515 de soustraction entre le signal d'entrée x(n) et le signal r B (n) de sortie du décodeur local du codeur MIC/MICDA pour donner le signal de différence ou bruit de reconstruction b B {n) .
Il comporte également un module 525 d'addition de la prédiction b B pred (n) au signal de différence b B {n) pour donner le signal de bruit de reconstruction b B (n)
Les modules d'adaptation des quantificateurs directs et inverses et du prédicteur MICDA, le cas échéant, sont inclus dans le décodeur local MIC/MICDA.
Un étage de codage d'amélioration de 1 bit par échantillon ainsi représenté sera détaillé ultérieurement en référence à la figure 6b.
De façon générale, chaque étage k de codage d'amélioration reçoit en entrée N indices I B (n) n=0, N-l du codage cœur et des indices des étages d'amélioration précédents J^ri), ..., J ^ (ή) n=0, N-l ou de façon équivalente l'ensemble de ces indices multiplexé J B+k~l ) les N échantillons du signal de bruit reconstruit à l'étape précédente b B+k~l (n) n=0, N-l, les paramètres du filtre de masquage et le cas échéant, les facteurs d'échelle v(n) n=0, N-l , dans le cas d'un codage adaptatif.
Tous ces signaux ou indices d'entrée ont été calculés pour les N échantillons et mis en mémoire avant d'être transmis à l'étage de codage d'amélioration.
Cet étage d'amélioration fournit en sortie N indices J k (n) n=0, N-l de quantification des bits d'amélioration de cet étage de codage qui seront multiplexés avec les indices I B+k~l (n) n=0, N-l dans le module de multiplexage 560. L'étage d'amélioration k fournit également en sortie N échantillons du signal d' amélioration filtré en sortie du quantificateur (n) n=0, N-l . La sortie filtrée (n) n=0, N-l est soustraite en
545 du signal b B+k~l (n) n=0, N- l pour donner le signal b B+k (n) n=0, N- l d'entrée du bloc suivant. Il est à noter que l'indice J k (n) représente ici un bit pour chaque échantillon d'indice n; cependant dans le cas général J k (n) peut représenter plusieurs bits par échantillon si le nombre de valeurs de quantification possibles est supérieur à 2.
Les indices à transmettre J l (n), ..., J kl (n) seront multiplexés à l'indice I B (n) de sorte que l'indice résultant puisse être décodé par un décodeur standard tel que représenté et décrit ultérieurement en figure 7. Il n'est donc pas nécessaire de changer le décodeur distant; de plus, aucune information supplémentaire n'est nécessaire pour "informer" le décodeur distant des traitements effectués au codeur. Un indicateur de débit indique au décodeur le nombre de bits à décoder et dans le cas d'un décodeur standard les bits d'amélioration peuvent être ignorés s'ils ne correspondent pas au débit de décodage déjà définis dans le standard. Par exemple si l'invention s'applique au codage MICDA dans la bande basse de G.722 au débit cœur de 56 kbit/s les bits d' amélioration emmenant le débit de 56 à 64 kbit/s peuvent être décodés par le décodeur G.722 standard. Par contre si le débit cœur est de 64 kbit/s alors les bits d'améliorations seront ignorés par le décodeur G.722 standard car G.722 est limité à 64 kbit/s.
D'autres bits J kl+1 (n), ..., J k2 (n) correspondent à des bits d'amélioration par augmentation du débit du décodeur standard avec masquage de bruit et nécessitent un module de décodage supplémentaire décrit en référence à la figure 7.
Le codeur de la figure 5b comporte également un module 580 de calcul du filtre de mise en forme du bruit ou filtre de masquage, à partir du signal d'entrée ou des coefficients des filtres de synthèse du codeur. Un exemple de calcul mis en œuvre dans ce module est décrit en référence à la figure 9. A noter que le module 580 pourrait avoir en entrée le signal décodé localement plutôt que le signal original.
Les étages de codage d'amélioration tels que représentés ici permettent de fournir des bits d'amélioration offrant une qualité accrue du signal au décodeur, quelque soit le débit du signal décodé et sans modifier le décodeur et donc sans aucune complexité additionnelle au décodeur.
Un module EAk de la figure 5a représentant un étage de codage d'amélioration de rang k selon un mode de réalisation de l'invention est maintenant décrit en référence à la figure 6a.
Chaque étage d'amélioration est exploré dès que l'étage précédent a fini le calcul des paramètres à transmettre ou des variables auxiliaires pour les échantillons n = 0, ..., N— 1 . Le premier étage est mis en œuvre lorsque le codeur « cœur » a fini son traitement sur une trame de N échantillons de signal. Il transmet au premier étage le signal de bruit de reconstruction b B (n) , les index I B (n) et le cas échéant les facteurs de cadrage v(n) pour les échantillons n = 0, ..., N— 1 .
Une fois que le codage d'un étage est déterminé, il transmet à l'étage suivant le signal de bruit de reconstruction b B+l (n) soustraction de e Q B l {rî) à b B (n) , l'indice I B+l (n) ,
(n) et le cas échéant le facteur de cadrage v(n) pour les échantillons n = 0, N— 1.
La trame en cours de traitement sera repérée par les numéros d' échantillons n = 0, ..., N - 1 .
Conformément au paragraphe précédent, chaque bloc d'amélioration de rang k EAk de la figure 5a permet d'obtenir l'indice des bits d'amélioration J k (n) ou un groupe de bits
J k (n) k = l, ..., K où K est le nombre d'étages, si plusieurs étages ont été fusionnés pour n = 0, ..., N - l .
L'étage d'amélioration k comporte un module 300 de génération d'un dictionnaire de vecteurs de quantification possibles pour la quantification de l'étage d'amélioration k,
Dic B+k (j, n) = j(n) = 0, 1; n = 0, ..., N - 1 .
Ce dictionnaire est généré à partir des indices cœur I B (n) n = 0, ..., N— 1 , des indices d'amélioration des étages précédents J 1 (n), ..., J k _ 1 (n) n = 0, ..., N— l et le cas échéant des facteurs d'échelle v(n) n=0, N-l. Par exemple, connaissant l'indice J B+k~l (^) , deux niveaux sont possibles pour le quantificateur imbriqué de débit B+l bits. On en déduit les 2 niveaux d' amélioration possibles : ; B+k B+k B+k-l . · ( Λ
enh j = y +k - l+j - y k = 1, ..., K; j = 0, 1 . à partir des niveaux de reconstruction à B+k bits par échantillon ( Il + j ) et des niveaux de reconstruction à B+k-1 bits par échantillon ( )· Ce principe se généralise au cas où les étages d'amélioration délivrent U>1 bits par échantillon avec un nombre de niveaux d'amélioration égal à 2 U
Les niveaux d'amélioration possibles dans l'étage de rang k associés au niveau de reconstruction de l'indice l B+k_1 dans l'étage de rang k-1 se déduisent alors comme suit :
; B+k B+k B+k-l r\
enh j = y +t - l+j - y ./ = 0, 1, ..., 2 - 1
en supposant que l'étage d'amélioration de rang k délivre U bits par échantillon supplémentaires par rapport à l'étage d'amélioration de rang k-1.
A noter que dans une variante équivalente le dictionnaire généré peut contenir directement un sous-ensemble (dépendant de l'indice l B+k_1 choisi à l'étage d'amélioration de rang k-1) des niveaux de reconstruction à B+k bits par échantillon ( y 2/ + j ) multiplié par le facteur d'échelle v(n),
Dans ce cas l'entrée de quantificateur est à changer en conséquence, sans soustraire les valeurs reconstruites de l'étage d'amélioration de rang k-1.
Raisonnant sur N instants d'échantillonnage on aboutit au dictionnaire de la figure l ia. Sur cette figure on suppose des blocs de N=3 échantillons avec un étage d' amélioration à l k \ N k=l bit par échantillon. Le dictionnaire est représenté par une matrice de taille ( 2 I X N où chaque ligne correspond à un chemin dans l' arbre équivalent représenté sur la figure 11b. Dans la suite de description retiendra la forme matricielle équivalente, plus facile à manipuler.
A titre d'exemple pour le codeur G.722, les niveaux de reconstruction des quantificateurs imbriqués (bande basse) Q B+l et Q B+2 pour B=4, y B+k (n) J = 0, ..., N Q — 1 , sont donnés par le tableau VI de l' article de X. Maître. "7 kHz audio coding within 64 kbit/s". IEEE Journal on Selected Areas in Communication, Vol.6-2, February 1988". Les niveaux d'amélioration sont stockés en ROM pour chaque étage :
B+k B+k B+k-l v ■ r\
enh j = y +t - l+j - y k = 1, ..., K; j = 0, 1 .
Pour le codeur G.722 avec B=5, les niveaux de reconstruction du quantificateur imbriqué (bande basse) Q B+l sont donnés dans le tableau VI de l'article de X. Maître. Par contre les niveaux de reconstruction du quantificateur imbriqué (bande basse) Q + correspond à un débit total de 5+2=7 bits par échantillon (en bande basse) et n'est pas défini dans G.722 ; dans ce cas on suppose qu'une technique de conception de dictionnaire est utilisée pour définir les niveaux de reconstruction y +j > exemple en trouvant les centroïdes (niveaux de reconstruction) minimisant l'erreur quadratique pour un modèle laplacien.
Du fait de la nature imbriquée des quantificateurs, le dictionnaire a une structure en arbre tel que représenté en figure l ia pour n=3.
Une fois que le dictionnaire est défini suivant le bloc 300, le codage d'amélioration consiste à effectuer une quantification vectorielle (310, 340) à partir de ce dictionnaire suivant un critère d'erreur (320) raméné dans un domaine pondéré par le filtre de masquage (330). Ainsi, chacune des entrées vectorielles d'indice j du dictionnaire est soustraite (320) au signal de bruit b B+k~l (n) de l'étage précédent ; le signal résultant d B+k (ri) est filtré par le filtre de masquage (330) pour donner l'erreur filtrée d B * k (n) dont l'énergie est minimisée (340) afin de sélectionner l'entrée vectorielle optimale du dictionnaire eQ B k (ri) .
De façon optionnelle, la reconstruction de l'étage d'amélioration de rang k est trouvée en ajoutant (350) cette entrée vectorielle optimale du dictionnaire eQ B k (ri) à la reconstruction de l'étage précédent r B+k~l (n) .
Si l'étage d'amélioration de rang k est suivi par un autre étage d'amélioration, le bruit de reconstruction est mis à jour en soustrayant (360) au bruit de reconstruction de l'étage précédent b B+k~l (n) Y entrée vectorielle optimale du dictionnaire eQ B k (ri) .
De façon similaire à la figure 6a, un module EAk de la figure 5b représentant un étage de codage d'amélioration de rang k selon un mode de réalisation optimisé de l'invention est maintenant décrit en référence à la figure 6b.
Chaque étage d'amélioration est exploré dès que l'étage précédent a fini le calcul des paramètres à transmettre ou des variables auxiliaires pour les échantillons n = 0, ..., N— 1 . Le premier étage est mis en œuvre lorsque le codeur « cœur » a fini son traitement sur une trame de N échantillons de signal. Il transmet au premier étage le signal de bruit de reconstruction filtré b B (n) , les index I B (n) et le cas échéant les facteurs de cadrage v(n) pour les échantillons n = 0, ..., N— 1 .
Une fois que le codage d'un étage est déterminé, il transmet à l'étage suivant le signal de bruit de reconstruction filtré b B+l (n) soustraction de (ri) à b B (n) , l'indice / + (n) , J^n) et le cas échéant le facteur de cadrage v(n) pour les échantillons n = 0, ..., N - l .
La trame en cours de traitement sera repérée par les numéros d'échantillons n = 0, ..., N— 1 . Par la suite on utilisera tantôt la notation de la transformée en z tantôt la notation vectorielle suivant les cas, la transformée en z étant privilégiée pour les différents filtrages.
Conformément au paragraphe précédent, chaque bloc d'amélioration de rang k EAk de la figure 5b permet d'obtenir l'indice des bits d'amélioration J k (n) ou un groupe de bits
J k (n) k = 1, G K où G k est le nombre d'étages, si plusieurs étages ont été fusionnés pour n = 0, ..., N - l .
L'étage d'amélioration k comporte ainsi un module de prédiction 620 de calcul d'un signal de prédiction de l'erreur reconstituée à l'étage k e B+k red (n) n = 0, N— 1 , à partir des échantillons passés de l'erreur reconstituée e^ k (n ) n =—N D , ...,—l et du signal de sortie du quantificateur 610, eQ B k (n) n =—N D 1 .
1 P k ( ) Cette prédiction se fait en calculant la réponse du filtre W k (z) = -, à une
1 - P N (z) entrée nulle sur n = 0, ..., N— 1 , avec comme conditions initiales des filtres Ρ χ (ζ) et
P (z) , les valeurs de (n ) n =—N D , ...,—l et eQ B k (n ) n =—N D , ...,—l obtenues en fin de traitement du bloc précédent. Ce signal de prédiction est aussi appelé « ringing » du filtre W k (z) .
En fin de traitement du bloc n = 0, ..., N— 1 , il est donc nécessaire de stocker en mémoire du filtre, les nouvelles valeurs obtenues.
L'étage d'amélioration k comporte également un module 650 de soustraction du signal de bruit de reconstruction filtré reçu de l'étage précédent k-1 b B+k~l (n) n = 0, ..., N— 1 , du signal de prédiction de l'erreur reconstituée de l'étage k L, (n) n = 0, ..., tf - l .
Il comporte en outre un module 600 de génération d'un dictionnaire de vecteurs de quantification possibles pour la quantification de l'étage d'amélioration k,
Dic B+k (j, n) = j(n) = 0, 1; n = 0, N - 1 . Ce dictionnaire est généré
comme expliqué précédemment pour la figure 6a. Du fait de la nature imbriquée des quantificateurs, le dictionnaire a une structure en arbre tel que représenté en figure lia pour n=3.
Les deux premières valeurs entourées de chaque colonne représentant le dictionnaire :
Dic B+k (j,n) = (n)v(n) ~ p j = 0,1; n = 0,...,N-1
Après quantification dans le bloc 610, l'erreur quantifiée de sortie eQ B k (n) n = Ο,.,.,Ν— 1 non filtrée est donnée par une valeur de vecteur du dictionnaire, en fonction des indices J k (n) n = Ο,.,.,Ν— 1 , par eQ B k (n)= enh B * k n) (n)v(n) n = 0,...,N -1.
Dans le module 620 de prédiction les mémoires sont mises à jour en utilisant les valeurs eQ B k (n); n = 0,...,N— 1. Le module 660 calcule le signal d'erreur reconstituée filtré e Qw k n ) n = Ο,.,.,Ν— 1. A noter que les modules 620 et 660 utilise les filtres identiques, ils peuvent être combinés pour obtenir le signal d'erreur reconstituée filtré e^ k (n) n = Ο,.,.,Ν— 1 par exemple suivant l'une des deux méthodes suivantes.
La première consiste à filtrer le signal d'erreur en sortie du quantificateur e Q + (n) n = Ο,.,.,Ν— 1 par le filtre W (z)=— ~ k en partant des conditions initiales obtenues à la fin de la trame précédente e^ k (n) n =—1,...,—N D et eQ B k (n) n =—1,...,—N D .
La seconde consiste à ajouter au signal de prédiction de l'erreur reconstituée
P k (z)
e w + pre d ( n ) n = 0,...,N—1, la réponse du filtre W (z) =— ~ k appliqué au signal de sortie du quantificateur eQ B k (n) en partant de conditions initiales nulles pour donner β^ Β (η)η = 0,...,Ν-1.
Enfin, un module 670 de soustraction soustrait au signal de bruit de reconstruction filtré de l'étage k-1 précédent b B+k~l (n) n = 0, N— 1 , le signal d'erreur reconstruit et filtré de l'étage k e^ k (n) n = 0, N— 1 pour donner un nouveau signal de bruit reconstitué filtré b B+k (n) n = 0, ...,N— 1 de l'étage k utilisé pour transmission à l'étage k+1 suivant. Cette opération sera omise dans le dernier étage. Optionnellement, on peut obtenir le signal reconstitué à l'étage k r B+k (n) par addition de la sortie du quantificateur eQ B k (n) au signal reconstitué de l'étage précédent r B+k~l (n) dans le module 630.
Nous allons à présent détailler l'étape de quantification vectorielle effectuée par le module de quantification 610 de la figure 6b.
La sortie du quantificateur de l'étage d'amélioration k eQ B k (n) peut être représenté conformément à la figure 10 par deux composantes:
- les sorties passées des quantificateurs d'amélioration:
(n) = enh B * k n) (ra)v(ra) n =—∞, ...,—!
= 0 n = 0, ..., N - l
- la composante courante issue du dictionnaire pour n = Ο, .,., Ν— 1 :
e n KS (n) ( n = {) n = - ∞ , ..., -!
= [enh B l k (n)v(n) p n = 0, N - 1; j(n) = 0, 1
On suppose que le signal a été synthétisé jusqu'à l'instant—1 et dans l'étage d'amélioration on recherche les indices du quantificateur d'amélioration j(n) pour n = 0, ..., N - l .
La trame courante est représentée par les échantillons n = 0, ..., N— 1 et le passé du signal par n =—∞, ...,— 1 . Lorsque l'on passe à la trame suivante on se décale de N échantillons, ce qui est, par exemple, réalisé par un buffer en décalant le signal puis en insérant les N nouveaux échantillons ou par un « buffer circulaire ».
Le terme enh^^ k (n) {n) n = 0, ..., N— 1 quant à lui représente le dictionnaire vectoriel adaptatif Dic B+k (j, n) à 2 lignes et N colonnes utilisé pour la quantification vectorielle conformément à l'invention. Ce dictionnaire est défini selon l'équation suivante:
Dic B+k (j, n) = (n)v(n) ~ p j(n) = 0, 1; n = 0, ..., N - l
Ce dictionnaire représente les nœuds dans un dictionnaire
Dic B+k (j, n) j = 0, ..., 2 N — \ n = Ο, .,., Ν— 1 à 2 N lignes et N colonnes permettant de représenter de façon exhaustive tous les vecteurs possibles de sortie du quantificateur Q B ^ sur une durée de N échantillons tel que représenté sur la figure l ia.
La prédiction généralisée e B+k red (n) telle que représentée en sortie du module de prédiction 620 est obtenue de la façon suivante : Compte tenu du fait que la contribution de Enh yp (z) est nulle pour n = Ο,,.,Ν—1 (figure 10), on pourra calculer sa contribution pour n = Ο,,.,Ν— 1 en filtrant le signal Enh^ p k (z) égal à Ε Β+Ιζ (Z) pour n < 0 et à 0 pour n = Ο,,.,Ν— 1 , en partant des conditions initiales à la fin de la trame précédente :
/ J· :w", · p.'red , (z) = l~P } z) K +k ω = W k (z)E 0 B+k (z)
Les calculs suivants sont alors effectués dans le module de prédiction 620 de la figure 6b:
e Q B+k ( n ) = 0 n = 0,...N-l ( ») = e (») -∑ PD 0 (» ~ j) +∑ PN U k (» - J n = 0,...N-l d'où e ; (n) = -∑ p D k U Q +k (n - j) +∑ p N k 0 £* (n- j) n = 0, ...N - 1 Le critère d'erreur de l'éta e de uantification ectorielle de ient alors:
et
OiC j k (z) est la transformée en ζ de la j ieme ligne de la matrice Dic B+k .
Soit H la matrice de filtrage de la réponse impulsionnelle h(n) du filtre de masquage W k (z) obtenue par le module 602 en sortie du filtre W k (z) formé de cellules ARMA en cascade et ayant pour entrée une impulsion unité :
KO) 0 0 0 0 0
D MO) 0 0 0 0
h(2) MD MO) 0 0 0
H
h(3) M2) MD MO) 0 0
MN-i) MN-2) MN-3) ... Mi) KO)
Le critère d'erreur peut être écrit dans le domaine temporel sous la forme suivante :
B+k B+k \ Ί
e w -H{Dw Tj ) j = 0,...,2 N ~ l Où (Dic^ k Y est la j ième ligne de la matrice (Dic* + * ) .
Soit en développant :
= ) ~ 2 o ) (
H Dw Tj ) + Dic Tj H H Dw Tj ) j = 0, ..., 2 - 1 On remarquera que le signal e +k - H Dic^ k ) correspond à un signal d'erreur filtrée, où e^ +k est un bruit de quantifié ramené dans le domaine perceptuel par le filtre de masquage et
H ^Dic^ } +k ) correspond à une entrée du dictionnaire filtrée.
En fait, comme le premier terme ne dépend pas de l'indice j, la minimisation du critère revient à maximiser l'équation EQ1 suivante :
¾ = -2 (£« ) T H (Dic ) T + Dic H T H (Dic^ T j = 0.....2" - 1
L'indice pour lequel l'erreur est minimale est l'indice sur N bits, les indices
J k (n) n = Ο, .,., Ν— 1 sont donnés par la décomposition binaire de l'indice sur N bits. Le terme Dic^ +k H T ; j = 0, ..., 2 N - 1 est le dictionnaire filtré, calculé par le module 603.
La recherche exhaustive de l'indice optimal dans le dictionnaire peut être réduite de façon drastique en utilisant la structure en arbre du dictionnaire afin d'éliminer les calculs redondants.
On présente par la suite une méthode de mise en œuvre optimisée de cette recherche exhaustive pour le cas général de blocs de Ν échantillons; à noter que pour des faibles valeurs de Ν (typiquement N=2,3,4 ou 5) il est possible de réduire les formules générales données ci- après à des calculs simples. Ces cas particuliers ne sont pas traités ici par souci de concision, car ils sont équivalents en termes de résultats de recherche.
Tout d'abord le terme r eh = [e1 +k ) H de l'équation EQ1 est calculé, ce qui équivaut à filtrer le vecteur par les versions décalées de la réponse impulsionnelle inversée du filtre h(n) de mise en forme du bruit de la matrice Η, c'est-à-dire intercorrélation entre h(n) et e^ +k (n) telle que: r eh (k) = h( j)e w B+k (j + k) k = 0, N - 1
Puis les produits scalaires r eh DÎC j +k ) ou mieux AA = Dic^ +k r eh T sont calculés simultanément en n'utilisant que les valeurs non redondantes du dictionnaire, entourées d'un cercle sur l'équation suivante qui sont les valeurs du dictionnaire
Dic N B+k (j(n), n) j(n) = 0, 1; n = 0, N - 1 : ¾ (2)
En effet, si on effectue les produits scalaires pour tous les vecteurs, on va effectuer des opérations qui sont redondantes comme le montre le schéma ci-dessus.
Les opérations non redondantes à effectuer sont indiquées par des valeurs entourées. Un vecteur de produits scalaire est initialisé à 0. Puis pour chaque instant d'échantillonnage on va adapter le vecteur qui va donc contenir des produits scalaires partiels. Pour l'instant n=0 le vecteur est initialisé avec les deux valeurs eft ¾(0)re î(0) et en/¾(0) reh(0) . A l'instant n=l, on va ajouter à chacune de ces deux valeurs, enh O (Y) rehiY) et enh l (Y) rehiY) ce qui va donner 4 produits scalaires partiels et ainsi de suite.
Un exemple possible de mise en œuvre en langage MATLAB est décrit ci-dessous, exemple qu'il sera facile d'adapter pour le processeur disponible.
% algorithme rapide de calcul de AA = Dic^ +k r eh T à partir des valeurs de DicN
%
AA(1)= DicN(l,l)*reh(l);
AA(2)= DicN(2,l)*reh(l);
N2=2;
for loop=2:N
m0=DicN( 1 ,ΐοορ) *reh(loop) ;
ml =DicN(2,loop) *reh(loop) ;
for i=N2:-l : l
AA(2*i)=AA(i)+ml ;
AA(2*i-l)=AA(i)+mO;
end
N2=2*N2;
end Le nombre d'addition/multiplications est de l'ordre de N.2 pour le calcul direct alors qu'il n'est que de 2 (2 N —1) lorsqu'on élimine les calculs redondants. Une réduction de complexité dans un rapport N 12 est ainsi obtenue.
Le terme :
A = DÎC j * k H T H {DÎC j * k ) r j = 0, ..., 2 N —1 de l'équation EQ1 peut encore s'écrire sous la forme :
A = (H (Dic T B ; k ) T ) T (H (Dic?; k ) T ) j = 0, ..., 2 N - 1
Sous cette forme le calcul de A revient à calculer le filtrage de chaque vecteur du dictionnaire par des versions décalées de la réponse impulsionnelle et à calculer la somme des carrés des composantes du vecteur résultant comme le montre l'équation suivante pour le cas particulier N=3
Pour réduire la complexité, les filtrages et les carrés sont calculés simultanément pour tous les mots de codes et on va utiliser la structuration du dictionnaire en arbre et la particularité de la matrice H qui est une matrice de Toëplitz triangulaire inférieure afin de ne pas effectuer les calculs redondants.
Le filtrage de tous les vecteurs du dictionnaire par chaque vecteur de H est effectué par un algorithme basé sur celui du calcul des produits scalaires qui permet d'effectuer les filtrages au moyen de 2(2"—1) additions/multiplications à chaque étage n. La mise à jour des carrés partiels tient compte de la structure en arbre du dictionnaire.
Un exemple d'algorithme mis en œuvre en langage MATLAB est décrit ci-dessous.
%
% Calcul rapide norme pondérée
%
AF(1)= DicN(l,l)*h(l);
AF(2)= DicN(2,l)*h(l);
E(1)=AF(1)*AF(1); E(2)=AF(2)*AF(2);
N2=2;
for loop=2:N
AF( 1 )=h(loop) *DicN( 1,1);
AF(2)=h(loop) *DicN(2, 1 ) ;
K=2;
for j=2:loop
m0=h(loop+ 1 -j )*DicN( 1 ,j) ;
ml =h(loop+ 1 -j )*DicN(2,j) ;
for i=K:-l : l
AF(2*i)=AF(i)+ml ;
AF(2*i-l)=AF(i)+mO;
end
K=2*K;
end
for i=N2:-l : l
E(2*i)=E(i)+AF(2*i)*AF(2*i);
E(2*i- 1 )=E(i)+ AF(2*i- 1 ) * AF(2*i- 1 ) ;
end
N2=2*N2;
end
Il permet d'obtenir une réduction de complexité importante par rapport à la méthode exhaustive grâce à l'utilisation combinée des propriétés de la matrice H de Toëplitz et du dictionnaire à structure en arbre.
Le nombre de carrés à calculer est réduit dans un rapport N/2 par rapport au calcul direct (analogie avec la réduction de complexité obtenue pour les produits scalaires). En ce qui concerne les additions/multiplications de filtrage, leur nombre sera réduit de N 2 x2 N à
4.2 N -2N-2 pour le calcul éliminant les opérations redondantes, ce qui donne une réduction de
N 2
complexité de— soit de l'ordre de 25 pour n=10
Une fois que la forme d'onde optimale eQ B k (n) = DiC j +k (J K (n), n) n = 0, ..., N—l a été sélectionnée dans le dictionnaire, le filtrage de eQ B k (n) par W k (z) = est effectué dans le module 620 par l'une des deux méthodes expliquées précédemment et les mémoires du filtrage de e Q + (n) et de e Q ^ (n) sont mémorisées pour la trame suivante notamment pour le calcul de la prédiction e tpred ( w ) n = Ο, - .-N — 1 pour une entrée nulle (prédiction).
Les indices de quantification J k (n) n = Ο, ., ., Ν— 1 en sortie du module de quantification Q E k nh par minimisation du critère seront multiplexés avec l'index I B+k~l (ri) comprenant les bits cœur I e ' (n) et les bits d'amélioration des étages précédents J 1 (n), ..., J k _ 1 (n) n = 0, ..., N— l , avant d' être transmis à la fin du traitement du dernier étage K via le canal de transmission au décodeur de la figure 7. En référence à la figure 7, nous allons à présent décrire différentes configurations de décodeurs à codes imbriquées aptes à décoder le signal obtenu en sortie d'un codeur selon l'invention et tel que décrit en référence à la figure 5b.
Le dispositif de décodage mis en œuvre dépend du débit de transmission du signal et par exemple de la provenance du signal selon qu'il provient d'un réseau RNIS 710 par exemple ou d'un réseau IP 720.
Pour un canal de transmission à faible débit (48, 56 ou 64 kbit/s), il sera possible d'utiliser un décodeur standard 700 par exemple de type décodeur MICDA normalisé G.722, pour décoder un train binaire de B+k bits avec k=0, 1, 2 et B=4 le nombre de bits de débit cœur. Le signal restitué r B+k (n) issu de ce décodage bénéficiera d'une qualité améliorée grâce aux étages de codage d'amélioration avec masquage de bruit mis en œuvre dans le codeur.
Pour un canal de transmission à débit plus élevé, 72, 80, 96 kbit/s, si le train binaire I B+k+k2 (n) a un débit supérieur au débit du décodeur standard 700 et indiqué par l'indicateur de mode 740, un décodeur additionnel 730 effectue alors une quantification inverse de I B+k+k2 (n), en plus des quantifications inverses à B+1 et B+2 bits décrites en référence à la figure 2 pour fournir l'erreur quantifiée qui additionnée au signal de prédiction x B (n) donnera le signal amélioré haut débit r B+k+k2 (n).
On présente à présent un second mode de réalisation de l'étage d'amélioration dans le cas où le filtre de masquage ne comporte qu'une cellule du type 1— P D (z) , c'est-à-dire
P N (z) = 0 . Le filtre de masquage est alors: W(z) = 1— P D (z)■
Le codeur décrit à la figure 8 s'applique à la bande basse de G.722 où le codeur cœur MICDA fonctionne à 56 kbit/s et un étage d'amélioration est utilisé pour passer au débit de 64 kbit/s.
Le filtre de prédiction linéaire A(z) est d'abord calculé (bloc 870) par la méthode d'autocorrélation et résolution des équations normales suivant l'algorithme de Levinson- Durbin (bloc 870) puis pondéré pour donner le filtre P D (z) = A(z / )— 1 dans le bloc 880. Les coefficients du filtre A(z) sont gardés constants sur la trame de longueur 5 ms.
Ces deux blocs 870 et 880 constituent le bloc 480 ou 580 des figures 5 et 6 décrites précédemment.
Le codage cœur MICDA suit les mêmes étapes décrites précédemment en référence à la figure 5b, dans le cas général, le prédicteur du module 520 étant ici réduit à P D (z)■
Le bruit de quantification filtré b B pred (n) et la prédiction x B (n) sont soustraits du signal d'entrée x(n) , le signal résultant est quantifié avec une résolution de B = 5 bits par échantillon (bloc 510). Après décodage MICDA local (bloc 505) générant le signal reconstruit r B (n) , le bruit de quantification b B (n) est calculé en 515. Le bruit de reconstruction filtré est simplement donné par soustraction en 525 par:
B W B (z)= B B (z)W(z) = B B (z) - B B (z)P D (z) .
A noter que le quantificateur cœur Q B (bloc 510) du codeur cœur reçoit en entrée le signal d'erreur filtré e B (n) pour donner des indices de quantification I B (n) pour un ensemble de N échantillons. L'indice de quantification optimal I B (n) et la valeur quantifiée y B B (n) (n)v(n) minimisant le critère d'erreur E B = ^e B (n)— y B (n)v(n) ~ ^ j = 0, ..., N Q —l où les valeurs y B (n) sont les niveaux reconstruits et v(n) le facteur d'échelle issu du module
505 de décodage local.
A titre d'exemple pour le codeur G.722, les niveaux de reconstruction du quantificateur cœur Q B sont définis par le tableau VI de l' article de X. Maître. "7 kHz audio coding within 64 kbit/s", IEEE Journal on Selected Areas in Communication, Vol.6-2, February 1988".
Ainsi, pour chaque bloc de N échantillons, les niveaux reconstruits vont constituer le dictionnaire de l'étage d'amélioration enh . = y B+t _, .— y j = 0, 1 où k=l . L'indice de quantification I B (n) de B bits en sortie du module de quantification
Q B sera multiplexé dans le module de multiplexage 560 avec les bits d'amélioration
J 1 , ..., J K avant d'être transmis via le canal de transmission au décodeur tel que décrit en référence à la figure 7.
On rappelle ici que dans cet exemple l'invention s'applique au codage MICDA dans la bande basse de G.722 au débit cœur de 56 kbit/s, soit une résolution de B=5 bits par échantillon dans la bande basse. L'étage d'amélioration pour passer à la résolution B+l=6 bits par échantillon est donné par les blocs 810 à 860. Cet étage fonctionne par blocs de N=5 échantillons.
Un signal de type "ringing" z w (n) du filtre de masquage W(z) = 1— P D (z) est calculé (bloc 860) en filtrant le signal égal à e Q B (ri) pour n < 0 et nul pour n = 0, ..., N— 1
( n = -∞, ..., N - 1 de la figure 10) puis retranché (bloc 810) au signal de bruit reconstitué et filtré du codage cœur pour donner le signal cible t w (n) = b B (z)— z w (n) .
Les mots du dictionnaire
Dic B+k (j, n) = ^enh^ ) («)v(«)] j(n) = 0, 1; n = 0, ..., N— l construit en 850 comme décrit en référence aux figures 6, 10 ( enh^c j (n) n = 0, ..., N - 1 ), l ia et 11b sont filtrés au bloc 840 par le filtre de masquage W(z) = 1— P D (z) à mémoire nulle et l'erreur est minimisée dans le module de quantification 830 pour trouver conjointement les indices optimaux J k {n) dans des blocs successifs de N échantillons et le signal eg («) « = 0, ... , N— 1. Ce filtrage à mémoire nul peut être effectué en combinant la réponse impulsionelle du filtre de masquage et les éléments possibles du dictionnaire d'amélioration Dic B+k (j, n) , en calculant le produit de convolution.
La taille des blocs de N=5 échantillons peut être exploitée pour minimiser la complexité de l'étage d'amélioration. En effet la recherche des vecteurs optimaux dans le dictionnaire revient à calculer:
où H est la matrice de réponse impulsionnelle de W(z) = 1— P D (z)■
Une fois la cible t w (n) calculée, la quantification est effectuée comme décrit précédemment.
La figure 9 décrit de façon plus détaillée un mode de réalisation de calcul des filtres de masquage du module 480 ou 580 des figures 5 et 6.
En E90, le module 580 reçoit en entrée un bloc de signal qui correspond au bloc de la trame courante x(n), n = 0, ..., N T —1 complété par un segment d'échantillons de la trame précédente x^ ^ (n), n =—N s 1 pour donner le bloc à analyser x a (ri , n =— N s , 1, 0, ..., N T - 1 .
Pour éliminer les très basses fréquences le signal x a (n) est filtré en E91par un filtre récursif de fonction de transfert F hp (z) pour donner le signal x af (n) :
x af (n) = x a (n) - x a (n - l) + 0 x af (n - 1)
Avec, par exemple, OC 0 = 1— 2 ~10
Pour mieux faire ressortir les pics du spectre du filtre de masquage, le signal x af (n) est pré -filtré en E93 avant le calcul des coefficients de corrélation par un filtre A 1 (z) dont le ou les coefficients sont soit fixes, soit de façon avantageuse, adaptés par prédiction linéaire.
Selon un mode de réalisation de ce calcul du filtre de masquage, une étape de calcul de coefficients de corrélation est effectuée en E92 à partir du signe des signaux selon l'équation :
Cor (k) =—∑signe k = l,..., K LP1
Corrigé éventuellement par une fonction sinus selon l'équation:
π
Cor a (k) = sin(— Cor ) k = l,..., K LP1
Le calcul de la fonction de corrélation est de ce fait extrêmement simple : On calcule les signes du signal x af (n) que l'on stocke et on calcule les coefficients de corrélation par des opérations logiques (ou exclusifs, ...) et des décalages.
La fonction sin(jc) peut être approximée par x et tabulée dans la zone de non- linéarité pour éviter le calcul du sin(jc) . Une dizaine de valeurs tabulées suffisent. Les K LP1 coefficients du filtre {z) sont calculés par l'algorithme de Levinson à partir des coefficients de corrélation normalisés ( Cor (0) = 1).
Le signal à analyser x p (n) est calculé par filtrage inverse :
X P (z) = A(z)X af (z)
Le bloc de signal est ensuite pondéré par une fenêtre de Hanning ou toute autre fenêtre formée de multiplexage de sous-fenêtres en E94 de façon classique pour donner le signal x PF (n) .
Les K LP2 + 1 coefficients de corrélation de x PF (n) sont ensuite calculés en E95 par l'équation: ÎV-1
Cor(k) = Xp F (n)x PF (n - k) k = 0,..., K LP2 ou par la méthode des signes comme décrit précédemment. Les coefficients du filtre tout pôles A^z) qui modélisent l'enveloppe du signal pré-filtré sont donnés en E95 par l'algorithme de Levinson-Durbin.
On obtient donc un filtre A 12 (z) en E96, filtre de fonction de transfert
1 1 1
= modélisant l'enveloppe du signal d'entrée avec un
A 12 (Z) ι-Λω ι-Αω
découplage adaptatif pente-formants qui permet ensuite d'amortir séparément les filtres de masquage.
A partir du filtre de base A : (z) et A^z) on obtient les filtres de masquage en E97 en affectant différents amortissements au filtre de masquage de « cœur » et aux filtres de masquage des étages d'amélioration:.
Les constantes g N } 1 , g D } 1 , g N } 2 et g D } 2 définies en E98 permettent d'ajuster le spectre du filtre de masquage pour le codage « cœur » et les étages d'amélioration de façon à obtenir le meilleur masquage pour chaque étage. Les valeurs typiques des constantes sont par exemple de 0.90, 0.7, 0.95, 0.6. Les deux premières valeurs g N } 1 , g D } 1 permettent de régler la pente du filtre de masquage tandis que g N } 2 et g D } 2 permettent de régler l'étalement des formants.
Le numérateur P^ (z) et le dénominateur P^ (z) du filtre de masquage W' (z) sont obtenus soit par filtrage soit par produit des polynômes du numérateur et du dénominateur.
H 1 (z) est donné ici dans le cas général mais les deux cas particuliers suivants s'en déduisent aisément :
- Aucun pré -filtrage n'est appliqué. Le calcul de corrélation-Levinson est alors appliqué au signal d'entrée fenêtré suivant la méthode de calcul de A j (z) à partir de x p (n) .
- Un préfiltrage adaptatif est appliquée et seul A^z) entre en compte dans le calcul du filtre de masquage. Cette configuration est utilisée dans la norme ITU-T G.711.1 « Wideband embedded extension for G.711 puise code modulation » dans laquelle la préemphase 1— β ε z ~l a une pente croissante pour accentuer les hautes fréquences.
Le pré-filtrage proposé ici est adaptatif avec une pente croissance ou décroissante en fonction du spectre du signal. Cette pente évite d' avoir un filtre de masquage ayant un spectre trop accentué dans les hautes fréquences du fait d'une préaccentuation fixe qui nécessite d'avoir un dispositif de correction de l'effet de la préaccentuation artificielle comme dans le cas du G.711.1 (Voir paragraphe 7.3.2.3 de la norme, intitulé « Atténuation of the perceptual filter for signal with energy concentrated in higher frequencies »).
La figure 12 représente un troisième mode de réalisation de l'invention avec cette fois ci un étage de codage cœur de type MIC.
L'agencement des opérations est du même type que celui décrit en référence à la figure 8.
Le bloc de masquage / prédiction linéaire 580, met par exemple en œuvre le procédé décrit en référence à la figure 9 pour l'obtention du filtre de masquage. Les blocs de prédiction 520 du codage cœur et 620 du codage d'amélioration effectuent leur prédiction à partir des paramètres de filtre provenant du module 580 et adaptés selon l'étage de codage.
Dans ce mode de réalisation, le décodeur local 505 se résume à une quantification inverse MIC. Il ne délivre pas de facteur d'échelle v(n) comme dans le cas du décodeur local de la figure 8 ou 5a, 5b.
La quantification MIC du quantificateur 510 est effectuée soit par des opérations sur les bits du signal d'entrée sur 16 bits soit par tabulation. Dans ce cas, toutes les valeurs de sortie MIC possibles (celles du quantificateur MIC loi A avec éventuellement des niveaux supplémentaires imbriqués) sont données dans une table et la quantification est effectuée par recherche dichotomique de la valeur quantifiée la plus proche du signal d'entrée du quantificateur (distance minimale au sens de la distance euclidienne).
A titre d'exemple, les niveaux de reconstruction du quantificateur cœur Q^ !C de la norme G.711 pour B=8 sont définis par le tableau la pour la loi A et le tableau 2a pour la loi μ de la recommandation ITU-T G.711, « Puise Code Modulation (PCM) of voice frequencies ».).
Le terme d' amélioration de l'étage d'amélioration k est égal à la différence entre les valeurs reconstruites à partir de l'index i B+k~l et la sortie du quantificateur inverse MIC ayant pour entrée i B+k~l tel que:
enn ; M B+ jr k. = y B+k B+k , — y B+k-l B+k , k ; = i Ι, .,., Κ / ■ = 1
MIC J J MIC2I B+t~l + j J MIC I B+t - 1 ' ' ' -' 1 Comme le pas de quantification est constant sur un segment, il suffit de stocker la première valeur pour chaque segment puisque les valeurs suivantes du segment sont identiques.
L'étage de codage d'amélioration est le même que celui décrit en référence à la figure 6b.
Il est possible d'envisager d'autres versions du codeur hiérarchique, représenté aux figures 5a, 5b, 8 ou 12. Dans une variante, le nombre de valeurs de quantification possibles dans le codage d'amélioration varie pour chaque échantillon codé. Le codage d'amélioration utilise un nombre de bits variable en fonction des échantillons à coder. Le nombre de bits d'amélioration alloué peut être adapté suivant une règle d'allocation, fixe ou variable. Un exemple d'allocation variable est donné par exemple par le codage MIC d'amélioration de la bande basse dans la norme UIT-T G.711.1. De préférence, l'algorithme d'allocation s'il est variable doit utiliser des informations disponibles au décodeur distant, de sorte qu'aucune information supplémentaire n'ait besoin d'être transmise, ce qui est le cas par exemple dans la norme UIT-T G.711.1.
Un exemple de réalisation d'un codeur selon l'invention est maintenant décrit en référence à la figure 13.
Matériellement, un codeur tel que décrit selon les modes de réalisation des figures 5a, 5b, 6a, 6b, 8 et 12 au sens de l'invention comporte typiquement, un processeur μΡ coopérant avec un bloc mémoire BM incluant une mémoire de stockage et/ou de travail, ainsi qu'une mémoire tampon MEM précitée en tant que moyen pour mémoriser par exemple les blocs de N échantillons codés des étages précédents ou encore les dictionnaires utilisés pour la quantification vectorielle des étages d'amélioration ou toutes autres données nécessaire à la mise en œuvre du procédé de codage tel que décrit en référence aux figures 5a, 5b, 6a, 6b, 8 et 12. Ce codeur reçoit en entrée des blocs de N échantillons du signal numérique x(n) et délivre des indices de quantification multiplexés I B+K .
Le bloc mémoire BM peut comporter un programme informatique comportant les instructions de code pour la mise en œuvre des étapes du procédé selon l'invention lorsque ces instructions sont exécutées par un processeur μΡ du codeur et notamment les étapes de détermination de niveaux d'améliorations pour former les vecteurs d'un dictionnaire d'amélioration ( Dic^ k (n) j = 0, ..., 2 N — l; /î = 0, ..., N— 1 ) à partir au moins des N indices de quantification cœur { I B (n) n = {), ..., N— \ ) et des indices d'amélioration des étages de rangs inférieurs ( J^ri), ..., J ^ (n n = Ο, .,., Ν— 1 ), de recherche dans le dictionnaire d'amélioration produisant les N indices ( J k (n) n=0, N-l) du codage d'amélioration de rang k, par minimisation de l'énergie d'un signal d'erreur filtré (. (n) ) obtenu en utilisant les coefficients du filtre de masquage.
De manière plus générale, un moyen de stockage, lisible par un ordinateur ou un processeur, intégré ou non au codeur, éventuellement amovible, mémorise un programme informatique mettant en œuvre un procédé de codage selon l'invention.
Les figures 5a, 5b, 6a, 6b, 8 ou 12 peuvent par exemple illustrer l'algorithme d'un tel programme informatique.
