Brevet FR2960335A1 — publié le 20111125

Codage avec mise en forme du bruit dans un codeur hiérarchique La présente invention concerne le domaine du codage des signaux numériques. 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 Pulse 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 20 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 xp (n) à partir des échantillons précédents du signal d'erreur quantifié eQ (n') = y~ (n')v(n') n' = n -1,...,n - Nz , où v(n') est le facteur d'échelle de 25 quantification, et du signal reconstitué rB (n') n' = n -1,..., n - Np où n est l'instant courant. - un module de soustraction 120 qui retranche du signal d'entrée x(n) sa prédiction xp (n) pour obtenir un signal d'erreur de prédiction noté e(n) . - un module de quantification 130 QB+K du signal d'erreur qui reçoit en entrée le signal d'erreur e(n) pour donner des indices de quantification IB+K(n) constitués de B+K 30 bits. Le module de quantification QB+K est à codes imbriqués c'est-à-dire qu'il comporte un quantificateur coeur à B bits et des quantificateurs à B + k k= 1,..., K bits qui sont imbriqués sur le quantificateur coeur. 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 QB+i QB+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. Maitre. "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 QB+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 (QB) pour donner en sortie un signal d'erreur quantifié eQB(n) = yB (n) v(n) sur B bits; - un module d'adaptation 170 QAd,e 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 xp (n) au signal d'erreur quantifié pour donner le signal reconstruit à bas débit rB (n) ; - un module d'adaptation 190 PAdapt du module de prédiction à partir du signal 20 d'erreur quantifié sur B bits e( n) et du signal eQ (n) filtré par I+P'(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 IB(n) et d'adapter les prédicteurs 165 et 175 à partir des données bas débit 25 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'B+K issu du canal de transmission 140, version de IB+K éventuellement perturbée par des 30 erreurs binaires, et réalise une quantification inverse par le module de quantification inverse 210 (QB) i de débit B bits par échantillon pour obtenir le signale (n) = y,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 5 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 4(n) et de la sortie du quantificateur inverse 230 à B+1 bits 10 y 1B , (n)v'(n) . Si mode indique que B+2 bits ont été transmis alors la sortie sera égale à la somme de la prédiction 4(n) et de la sortie du quantificateur inverse 240 à B+2 bits y'822(n)v'(n) . En utilisant les notations de la transformée en z, on peut écrire que dans cette structure bouclée : 15 R B" (z) = X (Z) + QB+k (z) en définissant le bruit de quantification à B+k bits QB+k (z) par : QB+k (z) = EQ+k (z) - E(z) Le codage MICDA à codes imbriqués de la norme UIT-T G.722 (ci-après nommé 20 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 25 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. 30 A titre d'exemple, dans la nonne G.722, les 8 bits sont répartis de la façon suivante telle que représenté à la figure 3: 2 bits Ihi et 11,2 pour la bande haute 6 bits ILS ,IL2 IL3 IL4 ILS ILbpour la bande basse. -4 Les bits I L5 et IL6 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 IL! , IL2 IL3 IL4 constituent les bits coeur 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 pulse code modulation » ou « G.711.1: A wideband extension to 1TU-T G.711 ». Y. Hiwasaki, S. Sasaki, H. Ohmuro, T. Mori, J. Seong, M. S. Lee, B. KÈivesi, 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 coeur 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 coeur inverse. Un décodeur local de débit coeur 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 coeur. Un quantificateur délivrant des bits d'amélioration est utilisé au codeur. Le décodeur recevant le flux binaire coeur 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 coeur 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é coeur. La mise en forme du bruit améliore ainsi la qualité perceptuelle du signal de débit 35 coeur. 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 - 5 d'amélioration, l'entrée du quantificateur étant la même pour la quantification coeur 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 coeur. 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 10 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 15 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. 20 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 coeur, délivrant N indices scalaires (IB(n) n=0,..,N-l) de quantification pour un ensemble de N échantillons (x(n) n=0, ..., N-1) d'un signal d'entrée; 25 - 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 (Jk(n)n=0, ..., N-1) de quantification (Qk ) e'r, 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 30 d'un dictionnaire d'amélioration ( DicrBi+k (n) j = 0,..., 2N -1;n = 0,..., N -1 ) à partir au moins des N indices de quantification coeur ( I B (n) n = 0,..., N -1 ) et des indices d'amélioration des étages de rangs inférieurs (Ji (n),..., Jk_l (n) n = 0, ..., N -1); - une étape de recherche dans le dictionnaire d'amélioration produisant les N indices (Jk (n) n=0, ..., N-1) 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 coeur 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 oeuvre 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é (DicB+kHT) en appliquant un filtre de masquage à mémoire nulle aux vecteurs du dictionnaire d'amélioration (Dic7~+k - une étape de recherche conjointe des N indices (Jk (n) n=0, ..., N-1) 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. 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 5 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 ]]~~B+k _ B+k _ B+k-1 ^U 10 (en/i -Y2(/lB+A-I+f y~BFA_' j=0,1,...,2 -1). Selon une caractéristique de mise en oeuvre, 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 (ew,I,red (n)) pour N échantillons, à partir des sorties passées du quantificateur d'amélioration et du filtre de 15 masquage déterminé; - obtention du signal cible à partir du signal de prédiction calculé (eB; p,.ed (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. 20 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 coeur et à l'étage de codage d'amélioration auquel des gains d'amortissement sont appliqués en fonction de l'étage de codage respectif. 25 Ainsi, la mise en forme du bruit est adaptée pour le codage coeur 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 coeur de type codage MICDA et aussi lorsque le codage coeur est un codage MIC. Selon un mode particulier, pour le cas du codage coeur MICDA, la détermination 30 des vecteurs du dictionnaire d'amélioration est fonction de facteurs d'échelle (v(n)) issus du codage coeur. Les valeurs sont ainsi adaptées au niveau de sortie du codage coeur. La présente invention se rapporte également à un codeur hiérarchique de signal audionumérique comportant: - un étage de codage coeur, délivrant N indices scalaires Gr(n) n=0,..,N-1) de quantification pour un ensemble de N échantillons (x(n) n=0, ..., N-1) 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 (Jk (n) n=0, ..., N-1) de quantification (Qk 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 ( Dic7+k (n) j = 0, ..., 2N -1; n = 0, ..., N -1) à partir 10 au moins des N indices de quantification coeur (I B (n) n = 0,...,N-1 ) et des indices d'amélioration des étages de rangs inférieurs (JI (n),..., Jk_1(n) n = 0, ..., N -1); - un module (310,340) de recherche dans le dictionnaire d'amélioration produisant les N indices (Jk (n) n=0, ..., N-1) du codage d'amélioration de rang k, par minimisation de l'énergie d'un signal d'erreur filtré (. d a+k (n)) obtenu en utilisant les coefficients du filtre de 15 masquage. Elle se rapporte aussi à un programme informatique comportant des instructions de code pour la mise en oeuvre 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 20 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 25 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; 30 - 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; - 9 - 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 10 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; 15 - la figure 11a illustre un exemple de dictionnaire de quantification avec une structure en arbre selon l'invention; - la figure 1 lb 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é 20 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é 25 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. II 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 30 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 5a comporte un codage coeur (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 35 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 coeur est de rang O. -10- Ce codeur de la figure 5a comporte un étage de codage de débit coeur 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 coeur 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 coeur avec mise en forme du bruit de codage, c'est-à-dire masquage du bruit du codage coeur. 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 coeur. Par ailleurs, le terme "codeur coeur" est utilisé au sens large dans ce document. Ainsi on peut considérer comme "codeur coeur" 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 coeur à 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 coeur. L'étage de codage coeur 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 filtre bB (n) a partir des échantillons passes du bruit de reconstruction bB (n') n' = n -1,n - 2,..., n - ND et des échantillons passés du signal de bruit de reconstruction filtré bB (n') n' = n -1,n - 2,...,n ,..., n - NN . Ce module de prédiction délivre en sortie un signal de prédiction bB pred (n) pour l'instant d'échantillonnage n. L'étage de codage coeur 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 4 (n) , un signal reconstruit r B (n) égal à la somme de la prédiction et de la sortie du quantificateur inverse de -11- 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 filtre bB pred (n) et de la prédiction du signal xp (n) du signal d'entrée x(n) pour donner ew(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 «coeur» 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 © (n)v(n)IF é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 IB pour l'échantillon n. Une recherche par dichotomie limite considérablement le nombre de recherches à effectuer. L'indice de quantification optimal IB(n) et la valeur quantifiée yB (n)(n)v(n) minimisent le critère d'erreur EB = eB(n)_[4(n)v(n)1 F2 j = 0, ..., NQ -1 ou de façon équivalente Dist an ce eB (n) - [ye (n)v(n)] F j = 0,..., NQ -1 où les valeurs yB (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 20 quantificateur coeur QB sont définis par le tableau VI de l'article de X. Maitre. "7 kHz audio coding within 64 kbit/s", IEEE Journal on Selected Areas in Communication, Vol.6-2, February 1988". L'étage de codage coeur comporte aussi un module 415 de soustraction entre le signal d'entrée x(n) et le signal rB (n) de sortie du décodeur local du codeur MIC/MICDA 25 pour donner le signal de différence ou bruit de reconstruction bB (n) . Il comporte également un module 425 d'addition de la prédiction be p,.ej (n) au signal de différence bB (n) pour donner le signal de bruit de reconstruction bB (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. 30 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. - 12 - De façon générale, chaque étage k de codage d'amélioration reçoit en entrée N indices IB(n) n=O, ..., N-1 du codage coeur et des indices des étages d'amélioration précédents JI (n),..., Jk_1 (n) n=0, ..., N-1 ou de façon équivalente l'ensemble de ces indices multiplexé IB+k-' , les N échantillons du signal de bruit reconstruit à l'étape précédente bB+k-'(n) n=0, ..., N-1, les paramètres du filtre de masquage et le cas échéant, les facteurs d'échelle v(n) n=0, ..., N-1, 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 Jk (n) n=0, ..., N-1 de quantification des bits d'amélioration de cet étage de codage qui seront multiplexés avec les indices I B+k-! (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+k (n) n=O, ..., N-1. La sortie eQ+k(n) n=O, ..., N-1 est soustraite en 445 du signal bB+k-i (n) n=0, ..., N-1 pour donner le signal bB+k (n) n=0, ..., N-1 d'entrée du bloc suivant. Il est à noter que l'indice Jk (n) représente ici un bit pour chaque échantillon d'indice n; cependant dans le cas général Jk (n) peut représenter plusieurs bits par échantillon si le nombre de valeurs de quantification possibles est supérieur à 2. Les indices à transmettre JI(n),...,Jkl(n) seront multiplexés à l'indice IB(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 coeur 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 coeur 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 Jkl+,(,...,Jk2(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. 2960335 - 13 - 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 oeuvre 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 5 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. 10 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) bB+k-i (n) de l'étage précédent. Afin de minimiser le nombre de filtrage, ce codeur peut être mis en oeuvre 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é 15 bg(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 coeur 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 20 bits par échantillon. L'étage de codage coeur 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 25 de bruit de reconstruction filtré be(n) à partir des échantillons passés du bruit de reconstruction bB (n') n' = n -1,n - 2,...,n - ND et des échantillons passés du signal de bruit de reconstruction filtré bB (n') n' = n -1,n - 2,...,n - NN . Ce module de prédiction délivre en sortie un signal de prédiction bB pYed (n) pour l'instant d'échantillonnage n. L'étage de codage coeur comporte également un module 505 de décodage local 30 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 rB (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. 2960335 - 14 - Un module 512 effectue la soustraction de la prédiction du bruit de reconstruction filtre ba p,.ed (n) et de la prédiction du signal xP (n) du signal d'entrée x(n) pour donner eg(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 5 du filtre sont inversés. Le module 510 de quantification MIC/MICDA de a coeur » 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 â (n)v(n)]F étant calculés par multiplication et passage en précision finie des valeurs de sortie des 10 quantificateurs fixes MIC/MICDA par un facteur d'échelle v(n) pour donner les indices de quantification IB 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 ye (n) (n)v(n) 2 minimisent le critère d'erreur EB = [eB (n) - [ yB (n)v(n)] 12 j = 0, ..., NQ -1 ou de façon 15 équivalente Dist an ce [eB (n) - [ yB (n)v(n)]r j = 0, ..., Ne - 1 où les valeurs yB (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 coeur QB sont définis par le tableau VI de l'article de X. Maitre. "7 kHz audio coding within 64 kbit/s", IEEE Journal on Selected Areas in Communication, Vol.6-2, 20 February 1988". L'étage de codage coeur comporte aussi un module 515 de soustraction entre le signal d'entrée x(n) et le signal rB (n) de sortie du décodeur local du codeur MIC/MICDA pour donner le signal de différence ou bruit de reconstruction bB (n) . Il comporte également un module 525 d'addition de la prédiction bwB pred (n) au 25 signal de différence bB (n) pour donner le signal de bruit de reconstruction bB (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. 30 De façon générale, chaque étage k de codage d'amélioration reçoit en entrée N indices IB(n) n=0, N-1 du codage coeur et des indices des étages d'amélioration 2960335 - 15 - précédents JI (n),..., Jk_1 (n) n=0, ..., N-1 ou de façon équivalente l'ensemble de ces indices multiplexé IB+k-' les N échantillons du signal de bruit reconstruit à l'étape précédente be+k-i (n) n=0, ..., N-1, les paramètres du filtre de masquage et le cas échéant, les facteurs d'échelle v(n) n=0, ..., N-1, dans le cas d'un codage adaptatif. 5 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 Jk(n) n=0, ..., N-1 de quantification des bits d'amélioration de cet étage de codage qui seront multiplexés avec les indices IB+k-' (n) n=0, ..., N-1 dans le module de multiplexage 560. L'étage d'amélioration 10 k fournit également en sortie N échantillons du signal d'amélioration filtré en sortie du quantificateur eQ' k(n) n=0, ..., N-1. La sortie filtrée eQWk(n) n=0, ..., N-1 est soustraite en 545 du signal bQ+k_i (n) n=0, ..., N-1 pour donner le signal ba+k (n) n=0, ..., N-1 d'entrée du bloc suivant. Il est à noter que l'indice Jk (n) représente ici un bit pour chaque échantillon d'indice n; cependant dans le cas général Jk (n) peut représenter plusieurs bits par échantillon 15 si le nombre de valeurs de quantification possibles est supérieur à 2. Les indices à transmettre JI (n),..., Jk{ (n) seront multiplexés à l'indice IB (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 20 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 coeur de 56 kbit/s les bits d'amélioration emmenant le débit de 56 à 64 kbit/s 25 peuvent être décodés par le décodeur G.722 standard. Par contre si le débit coeur 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 Jkl+I(n),...,Jk2(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 30 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 oeuvre dans ce module est 2960335 - 16- 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 5 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. 10 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 = O,..., N -1. Le premier étage est mis en oeuvre lorsque le codeur « coeur » a fini son traitement sur une trame de N échantillons de signal. Il transmet au premier étage le signal de bruit de reconstruction bB(n), les index IB(n) et le cas échéant les facteurs de cadrage v(n) pour les 15 é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 bB+l (n) soustraction de eô+~ (n) à bB (n) , l'indice IB+i (n) J1(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 20 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 Jk (n) ou un groupe de bits Jk(n) k = 1,1,...,K où K est le nombre d'étages, si plusieurs étages ont été fusionnés pour n=O,...,N-1. 25 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, DicB (j n) = enhe ,> (n)v(n) F j(n)=0,1;n=0,...,N-1. Ce dictionnaire est généré à partir des indices coeur I B (n) n = 0, ..., N -1 , des 30 indices d'amélioration des étages précédents JI (n),..., Jk_1(n) n = 0, ..., N - 1 et le cas échéant des facteurs d'échelle v(n) n=0, .... N-1. Par exemple, connaissant l'indice IB+k-i (n) , deux niveaux sont possibles pour le quantificateur imbriqué de débit B+1 bits. On en déduit les 2 niveaux d'amélioration possibles : 2960335 -17- ene+k = yB+k k =1 K- j = 0,1 . à partir des niveaux de reconstruction à B+k bits par échantillon (yB~ kk_,+~) et des niveaux de reconstruction à B+k-1 bits par échantillon (y B,, ;-' ). Ce principe se generalise au cas ou les étages d'amélioration délivrent U>1 bits par échantillon avec un nombre de 5 niveaux d'amélioration égal à 2u Les niveaux d'amélioration possibles dans l'étage de rang k associés au niveau de reconstruction de l'indice IB+k_I dans l'étage de rang k-1 se déduisent alors comme suit : enhB+k = yB+k B+k-I j= 0 1 2u -1 2U 1 B+k-1 -Y117"-1 , , ..., en supposant que l'étage d'amélioration de rang k délivre U bits par échantillon 10 supplémentaires par rapport à l'étage d'amélioration de rang k-l. A noter que dans une variante équivalente le dictionnaire généré peut contenir directement un sous-ensemble (dépendant de l'indice IB+k-I choisi à l'étage d'amélioration de rang k-1) des niveaux de reconstruction à B+k bits par échantillon (y l k,_,+j ) multiplié par le facteur d'échelle v(n), 15 Dic2B+k(j,n)=y2BIÀ,_,+j(n)v(n)k=1,...,K;j=0,1;n=0,...,N-1. 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-l. Raisonnant sur N instants d'échantillonnage on aboutit au dictionnaire de la figure Il a. Sur cette figure on suppose des blocs de N=3 échantillons avec un étage d'amélioration à N 20 k=1 bit par échantillon. Le dictionnaire est représenté par une matrice de taille (2k x N où chaque ligne correspond à un chemin dans l'arbre équivalent représenté sur la figure l lb. 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) QB+I et QB+2 pour B=4, yB+k (n) j = 0,..., NQ -1, 25 sont donnés par le tableau VI de l'article de X. Maitre. "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-I enh = y2,H+A +, - y,B+h_, k =1 ..., K; j = 0,1. Pour le codeur G.722 avec B=5, les niveaux de reconstruction du quantificateur 30 imbriqué (bande basse) QB+I sont donnés dans le tableau VI de l'article de X. Maitre. Par contre les niveaux de reconstruction du quantificateur imbriqué (bande basse) - 18 - QB+2 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 ya Bkk_ + , par exemple en trouvant les centroïdes (niveaux de reconstruction) minimisant l'erreur quadratique pour un modèle 5 laplacien. Du fait de la nature imbriquée des quantificateurs, le dictionnaire a une structure en arbre tel que représenté en figure 1 la 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 10 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 bB+k-«n) de l'étage précédent ; le signal résultant d B+k (n) 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+k (n) . 15 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+k (n) à la reconstruction de l'étage précédent rB+k-' (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 20 précédent bB+k-i (n) 1' entrée vectorielle optimale du dictionnaire eQ+k (n) . 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. 25 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 oeuvre lorsque le codeur «coeur» a fini son traitement sur une trame de N échantillons de signal. Il transmet au premier étage le signal de bruit de reconstruction filtre ba (n) , les index 18(n) et le cas échéant les facteurs de cadrage v(n) 30 pour les échantillons n = O,..., 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é be+i (n) soustraction de eQ,«n) à ba (n) , l'indice 2960335 - 19- I 3+1 (n) , J1 (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. Par la suite on utilisera tantôt la notation de la transformée en z 5 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 peiniet d'obtenir l'indice des bits d'amélioration Jk (n) ou un groupe de bits Jk(n) k =1,..., GK où Gk est le nombre d'étages, si plusieurs étages ont été fusionnés pour 10 n=0,...,N-1. 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 ee 1keB (n) n = 0,..., N - 1, à partir des échantillons passés de l'erreur reconstituée eQ' k(n') n' = -ND,...,-1 et du signal de sortie du quantificateur 610, eQ+k (n) n = -ND ,..., -1 . k 1- PP (z) 15 Cette prédiction se fait en calculant la réponse du filtre w k = a une 1-PN(z) entrée nulle sur n= 0,..., N -1 , avec comme conditions initiales des filtres PN (z) et Pk (z) les valeurs de eB+k (n') n' = -N -1 et eB+k (n') n' _ -N -1 obtenues en fin de traitement du bloc précédent. Ce signal de prédiction est aussi appelé « ringing » du filtre W k (z) . 20 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 25 be+k_i (n) n = 0,...,N -1 , du signal de prédiction de l'erreur reconstituée de l'étage k B+k ew,,~r~ r (n) n = 0, ..., N -1 . 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, DicN+k (j n) = enhe~k (n)v(n) K j(n) = 0,1; n = 0,..., N -1 . Ce dictionnaire est généré 30 comme expliqué précédemment pour la figure 6a. 2960335 - 20 - Du fait de la nature imbriquée des quantificateurs, le dictionnaire a une structure en arbre tel que représenté en figure 1 la pour n=3. Les deux premières valeurs entourées de chaque colonne représentant le dictionnaire DicNs+k (j n) = enh ,~ (n)v(n) j = 0,1; n = 0, ..., N -1 Après quantification dans le bloc 610, l'erreur quantifiée de sortie eQ+k (n) n = 0, ..., N -1 non filtrée est donnée par une valeur de vecteur du dictionnaire, en fonction des indices Jk (n) n = 0, ...,N -1 par 10 eQ+k (n) = [enhk«n) (n)v(n)1F n = 0,...,N-1 Dans le module 620 de prédiction les mémoires sont mises à jour en utilisant les valeurs eQ+k (n); n = 0, ..., N -1 . Le module 660 calcule le signal d'erreur reconstituée filtré ee'-k (n) n = 0,..., 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é 15 eQ k (n) n = 0,..., 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 eQ+k (n) n = 0,..., N -1 par le filtre W k (z) = P° (z) en partant des conditions initiales PN (z) obtenues à la fin de la trame précédente eQWk (n) n = -1, ..., -ND et eQ+k (n) n = -1,..., -No . La seconde consiste à ajouter au signal de prédiction de l'erreur reconstituée 1) n = 0,..., N -1, la réponse du filtre W k (z) = P~ (z) appliqué au signal de sortie PN (z) du quantificateur eQ+k ) en partant de conditions initiales nulles pour donner eQ, (n) n=0,...,N-1. Enfin, un module 670 de soustraction soustrait au signal de bruit de reconstruction filtré de l'étage k-1 précédent b8+k-i (n) n = 0,..., N -1, le signal d'erreur reconstruit et filtré 25 de l'étage k eQ k (n) n = 0,..., N -1 pour donner un nouveau signal de bruit reconstitué filtré b,8+k (n) n = 0, ..., N - 1 de l'étage k utilisé pour transmission à l'étage k+l suivant. Cette opération sera omise dans le dernier étage. 20 B+k e,,,, pred 2960335 -21- Optionnellement, on peut obtenir le signal reconstitué à l'étage k rB+k (n) par addition de la sortie du quantificateur eQ+k (n) au signal reconstitué de l'étage précédent rB+k_i (n) dans le module 630. Nous allons à présent détailler l'étape de quantification vectorielle effectuée par le 5 module de quantification 610 de la figure 6b. La sortie du quantificateur de l'étage d'amélioration k eQ+k (n) peut être représenté conformément à la figure 10 par deux composantes: - les sorties passées des quantificateurs d'amélioration: enh~p k (n) [enhB ~k> (n)v(n)1 n = -c , ..., -1 =0 n=0,...,N-1 - la composante courante issue du dictionnaire pour n = 0,..., N - 1 : enh, ,1)(n) = 0 n = -cc,...,-1 = [enhe +,,> (n)v(n)1F 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 15 d'amélioration on recherche les indices du quantificateur d'amélioration j(n) pour n=0,...,N-1. La trame courante est représentée par les échantillons n = 0,..., N -1 et le passé du signal par n = -co,..., -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 20 insérant les N nouveaux échantillons ou par un « buffer circulaire ». Le terme enh~~n~ (n) n = 0, ..., N -1 quant à lui représente le dictionnaire vectoriel adaptatif DicN+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: DicN+k (Ln) _ enhg't,» (n)v(n)1 j(n)=0,1;n=0,...,N-1 F 25 Ce dictionnaire represente les noeuds dans un dictionnaire DicT +k (J j = 0,..., 2" -1;n = 0, ..., N -1 à 2N lignes et N colonnes permettant de représenter de façon exhaustive tous les vecteurs possibles de sortie du quantificateur sur une durée de N échantillons tel que représenté sur la figure 11 a. La prédiction généralisée ee ~.ed (n) telle que représentée en sortie du module de B+k Enh 30 prédiction 620 est obtenue de la façon suivante : 2960335 -22- Compte tenu du fait que la contribution de Enhj k (z) est nulle pour n = 0,...N -1 (figure 10), on pourra calculer sa contribution pour n = 0,...N -1 en filtrant le signal Enh,P k (z) égal à EQ+k (z) pour n DicT+k (z) est la transfoiiiiée en z de la j1eme ligne de la matrice DicT+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é : h(0) 0 0 0 0 0 h(1) h(0) 0 0 0 0 h(2) h(1) h(0) 0 0 0 H = h(3) h(2) h(l) h(0) 0 0 h(N -1) h(N - 2) h(N - 3) h(1) h(0) Le critère d'erreur peut être écrit dans le domaine temporel sous la forme suivante : EB+k = 1 B+k B+k r ew - H (Dic,y ) J=0,...,2" -1 2 2960335 - 23 - Où (DicTj+k )T est la j`erre ligne de la matrice (DicT+k )T Soit en développant : B+k )T eB+k - 2 (eB+k )T H(DicB+k )T + DicB+kHTH Iv 1v 1,; Ti T On remarquera que le signal eB+k _ H (DicB+k) correspond à un signal d'erreur filtrée, où 5 eB+k est un bruit de quantifié ramené dans le domaine perceptuel par le filtre de masquage et T H (DicB+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 : Ee d = _2 (eB+k )T H (DcB+k )T + DicTj+kHTH (DicB" )T J = O, ..., 2" -1 10 L'indice pour lequel l'erreur est minimale est l'indice J sur N bits. les indices Jk (n) n = O,..., N -1 sont donnés par la décomposition binaire de l'indice J sur N bits. Le terme DicB+kHT; j = 0, ..., 2" -1 est le dictionnaire filtré, calculé parle 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 15 redondants. On présente par la suite une méthode de mise en oeuvre optimisée de cette recherche exhaustive pour le cas général de blocs de N échantillons; à noter que pour des faibles valeurs de N (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, 20 car ils sont équivalents en termes de résultats de recherche. T Tout d'abord le terme eh = (eB+k) H de l'équation EQ1 est calculé, ce qui T équivaut à filtrer le vecteur (ea+k) 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 H, c'est-à-dire l'intercorrélation entre h(n) et eB+k (n) telle que: N-I-k reh(k)= h(j)eB+k (j+k) k=O,...,N-1 j=0 Puis les produits scalaires reh (DicT+k)T ou mieux AA = DicT+kr~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" (j(n),n) j(n) = 0,1; n = 0, ...,N - 1 EB+k DicB+k)T j = 0,...,2" -1 2960335 -24- Eho (Ô) ho (- enho (0) enho (1) enho (0) enh, (1) enho (0) enh, (1) (07 ~nho ( ) enh, (0) enho (1) enh, (0) enh, (0) enh, (1) 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. 5 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 enho (0)reh(0) et enh, (0) reh(0) . A l'instant n=1, on va ajouter à chacune de ces deux valeurs, enho (1) reh(1) et enh, (1) reh(1) ce qui va donner 4 produits scalaires partiels et ainsi de suite. 10 Un exemple possible de mise en oeuvre 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 = DicT+k e/)r à partir des valeurs de DicN % 15 AA(l)= DicN(1,1)*reh(1); AA(2)= DicN(2,1)*reh(1); N2=2; for loop=2:N mO=DicN(1,loop)*reh(loop); 20 ml=DicN(2,loop)*reh(loop); for i=N2:-1:1 AA(2 *i)=AA(i)+m l ; AA(2*i-1)=AA(i)+mO; end 25 N2=2*N2; end AA=Diee+kr = r~r 2960335 -25- Le nombre d'addition/multiplications est de l'ordre de N.2N pour le calcul direct alors qu'il n'est que de 2(2N -1) lorsqu'on élimine les calculs redondants. Une réduction de complexité dans un rapport N / 2 est ainsi obtenue. Le ternie : 5 A = Die~+kHTH (DieB+k )T j = 02N -1 de l'équation EQ1 peut encore s'écrire sous la forme : A=(H(DlcTBj+k)T)T (H(DlcTj+k)T)j =0,...,2" -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 10 carrés des composantes du vecteur résultant comme le montre l'équation suivante pour le cas particulier N=3 Eho (1~ nho (2) enho (0) enho (1) enhi enho (0) enh, (1 nho (2 enho (0) (MI(65) enho (1-D enh, (0) enho (1) enhl (0) El(ID enh1(0) enho (1) Pour réduire la complexité, les filtrages et les carrés sont calculés simultanément 15 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 20 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 oeuvre en langage MATLAB est décrit ci-dessous. % % Calcul rapide norme pondérée 25 % AF(1)= DicN(1, l)*h(1); AF(2)= DicN(2,1)*h(1); E(1)=AF(1)*AF(1); DicB"HT = h(0) h(1) h(2) 0 h(0) h(1) 0 0 h (0) - 26 - 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+l j)*DicN(1,j); ml=h(loop+l j)*DicN(2,.j); for i=K:-1:1 AF(2*i)=AF(i)+ml ; AF(2 * i-1)=AF(i)+m0; end K=2*K; end for i=N2:-1:1 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 25 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 N2x2N à 4.2N-2N-2 pour le calcul éliminant les opérations redondantes, ce qui donne une réduction de N2 30 complexité de soit de l'ordre de 25 pour n=10 4 Une fois que la forme d'onde optimale eQ+k (n) = DicT" (JK (n), n) n = 0,..., N - 1 a été sélectionnée dans le dictionnaire, le filtrage de ee (n) par w' (z) = P (~) est effectué dans le module 620 par l'une des deux N ( ) 20 2960335 - 27 - méthodes expliquées précédemment et les mémoires du filtrage de eeB+k (n) et de eQ'k (n) sont mémorisées pour la trame suivante notamment pour le calcul de la prédiction e,B+k~,(/ (n) n = 0,...N-1 pour une entrée nulle (prédiction). Les indices de quantification Jk (n) n = 0, ..., N -1 en sortie du module de 5 quantification QÉnh par minimisation du critère seront multiplexés avec l'index IB+k-i (n) comprenant les bits coeur IB(n) et les bits d'amélioration des étages précédents J1(n),..., Jk_1(n) n = 0, ..., N - 1 , avant d'être transmis à la fin du traitement du dernier étage K via le canal de transmission au décodeur de la figure 7. 10 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 oeuvre 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 15 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 coeur. Le signal restitué rB+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 oeuvre dans le codeur. Pour un canal de transmission à débit plus élevé, 72, 80, 96 kbit/s, si le train binaire JB+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 JB+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ÿ (n) donnera le signal amélioré haut débit rB+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- PD (z) , c'est-à-dire PN (z) = 0 . Le filtre de masquage est alors: W(z) =1- PD (z) . Le codeur décrit à la figure 8 s'applique à la bande basse de G.722 où le codeur coeur 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- 2960335 - 28 - Durbin (bloc 870) puis pondéré pour donner le filtre Po (z) = A(z / y) -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. 5 Le codage coeur 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 à Po ( z ) . Le bruit de quantification filtré bB p,.ed (n) et la prédiction xP (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 10 rB(n) , le bruit de quantification bB(n) est calculé en 515. Le bruit de reconstruction filtré est simplement donné par soustraction en 525 par: B,B (Z)= BB (z)W (z) = BB (z) - BB (z)PD(z) . A noter que le quantificateur coeur QB (bloc 510) du codeur coeur reçoit en entrée le signal d'erreur filtré eB(n) pour donner des indices de quantification IB(n) pour un 15 ensemble de N échantillons. L'indice de quantification optimal IB(n) et la valeur quantifiée y8( (n)v(n) minimisant le critère d'erreur EB = [eB (n) - yB (n)v(n)]2 j = 0,..., NQ -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 20 quantificateur coeur QB sont définis par le tableau VI de l'article de X. Maitre. "7 kHz audio coding within 64 kbit/s", IEEE Journal on Selected Areas in Communication, Vol.6-2, Febniary 1988". Ainsi, pour chaque bloc de N échantillons, les niveaux reconstruits vont constituer le dictionnaire de l'étage d'amélioration enhB+k = yB ,, k -1 , - yg+k j = 0,1 où k=1. 25 L'indice de quantification 18(n) de B bits en sortie du module de quantification sera multiplexé dans le module de multiplexage 560 avec les bits d'amélioration J1, ..., JK 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 30 la bande basse de G.722 au débit coeur 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+1=6 bits 2960335 -29- par échantillon est donné par les blocs 810 à 860. Cet étage fonctionne par blocs de N=5 échantillons. Un signal de type "ringing" zw(n) du filtre de masquage W(z) =1- 1-13,(z) est calculé (bloc 860) en filtrant le signal égal à eQ (n) pour n (n)v(n)1 j(n) = 0,1; n = 0,..., N -1 construit en 850 comme décrit en référence aux figures 6, 10 (enhvc~k (n) n = 0, ..., N -1), 1 la et l lb sont 10 filtrés au bloc 840 par le filtre de masquage W(z) = 1 - Po (z) à mémoire nulle et l'erreur est minimisée dans le module de quantification 830 pour trouver conjointement les indices optimaux Jk(n) dans des blocs successifs de N échantillons et le signal eQ (n) n = 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 15 DicN+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: 20 DicC+kHT = X0(0) 00(1) 00(2) 00(3) X0(4) enho(0) enk(1) en%(2) en/ (3) enhl(4) enh, (0) enh, (1) enhr (2) enh(3) enh, (4) h(0) h(1) h(2) 11(3) h(4) 0 h(0) h(1) h(2) h(3) 0 0 h(0) h(1) h(2) 0 0 0 h(0) h(1) 0 0 0 0 h(0) où H est la matrice de réponse impulsionnelle de W(z) =1- Po (z) . Une fois la cible t(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 25 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, ..., NT - 1 complété par un segment d'échantillons de la trame 2960335 - 30 - précédente xprec(n),n = , -1 pour donner le bloc à analyser x (n), n = -N. -1 0 NT -1. Pour éliminer les très basses fréquences le signal .xa (n) est filtré en E91par un filtre récursif de fonction de transfert Fhp (z) pour donner le signal xaf (n) : 5 xaj(n)=xa(n)-xa(n-1)+aoxaf(n-1) Avec, par exemple, a0 = 1 - 2-10 Pour mieux faire ressortir les pics du spectre du filtre de masquage, le signal xaf (n) est pré-filtré en E93 avant le calcul des coefficients de corrélation par un filtre AI (z) dont le ou les coefficients sont soit fixes, soit de façon avantageuse, adaptés par prédiction linéaire. 10 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 : 1 N -1 Cor (k) = 1 signe [xaf (n) signe [xaf (n - k)1 k = 1,..., KLPI N '=o Corrigé éventuellement par une fonction sinus selon l'équation: 15 Co â (k) = sin(- Cor) k =1,..., KLPI Le calcul de la fonction de corrélation est de ce fait extrêmement simple : On calcule les signes du signal xaf (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(x) peut être approximée par x et tabulée dans la zone de non-20 linéarité pour éviter le calcul du sin(x) . Une dizaine de valeurs tabulées suffisent. Les KLPI coefficients du filtre Al (z) sont calculés par l'algorithme de Levinson à partir des coefficients de corrélation normalisés ( Cor (0) = 1). Le signal à analyser xP (n) est calculé par filtrage inverse : XP (z) = AI (z)Xaf (z) 25 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 xpr (n) . Les KLPZ + 1 coefficients de corrélation de xPF (n) sont ensuite calculés en E95 par l'équation: 2960335 -31- N-I Cor(k) = xpp. (n)xpF. (n - k) k = 0,.. KLp2 n=o ou par la méthode des signes comme décrit précédemment. Les coefficients du filtre tout pôles A2(z) qui modélisent l'enveloppe du signal pré-filtré sont donnés en E95 par l'algorithme de Levinson-Durbin. 5 On obtient donc un filtre Al2(z) en E96, filtre de fonction de transfert 1 1 1 modélisant l'enveloppe du signal d'entrée avec un Al2 (z) 1- A1(z) 1- A2 (z) découplage adaptatif pente-formants qui permet ensuite d'amortir séparément les filtres de masquage. A partir du filtre de base AI (z) et A2 (z) on obtient les filtres de masquage en E97 10 en affectant différents amortissements au filtre de masquage de «coeur» et aux filtres de masquage des étages d'amélioration:. KLp, KLP2 1- 1 a (k)g" z-k 1- 1 a2 (k)gN2 z-k H-i (z) = 1-P'1(z)1-P'2(z) - k=1 1 k=1 1-Pol (z) 1-PD2(Z) 1-Ka1(k)gDiz k 1-K1 a2(k)gD2z k k=l k=l Les constantes gNI , gDI , gN, et gD2 définies en E98 permettent d'ajuster le spectre du filtre de masquage pour le codage « coeur » et les étages d'amélioration de façon à 15 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 gNI , gD1 permettent de régler la pente du filtre de masquage tandis que g,2 et gD2 permettent de régler l'étalement des formants. Le numérateur PN (z) et le dénominateur PD (z) du filtre de masquage W' (z) 20 sont obtenus soit par filtrage soit par produit des polynômes du numérateur et du dénominateur. H' (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 25 appliqué au signal d'entrée fenêtré suivant la méthode de calcul de A2 (z) à partir de x. (n) . - Un préfiltrage adaptatif est appliquée et seul A2 (z) entre en compte dans le calcul du filtre de masquage. Cette configuration est utilisée dans la norme ITU-T G.711.1 -32- «Wideband embedded extension for G.711 pulse code modulation» dans laquelle la pré-emphase 1 - J6,z-1 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é «Attenuation 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 10 fois ci un étage de codage coeur 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 oeuvre le procédé décrit en référence à la figure 9 pour l'obtention du filtre de masquage. Les blocs de prédiction 15 520 du codage coeur 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. II 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. 20 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 25 quantificateur (distance minimale au sens de la distance euclidienne). A titre d'exemple, les niveaux de reconstruction du quantificateur coeur QMIC 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, «Pulse Code Modulation (PCM) of voice frequencies ».). 30 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 IH`` et la sortie du quantificateur inverse MIC ayant pour entrée r tel que: B+k B+k 13+k-1 ~nhMlcj ~MIC2Ia+t+j MICIB+A-' k = I,...,K;J = 0,1 2960335 -33- 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 5 figure 6b. II 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 µP 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 oeuvre 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 IB+K Le bloc mémoire BM peut comporter un programme informatique comportant les instructions de code pour la mise en oeuvre des étapes du procédé selon l'invention lorsque ces instructions sont exécutées par un processeur µP du codeur et notamment les étapes de détermination de niveaux d'améliorations pour former les vecteurs d'un dictionnaire d'amélioration ( Diva+k (n) j = 0, ..., 2" -1; n = 0, ..., N -1) à partir au moins des N indices de quantification coeur (I e (n) n = 0,...,N- 1 ) et des indices d'amélioration des étages de rangs inférieurs ( J~ (n),..., Jk_l (n) n = 0, ..., N - 1 ), de recherche dans le dictionnaire d'amélioration produisant les N indices (Jk (n) n-0, ..., N-1) du codage d'amélioration de - 34 - 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. 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 5 informatique mettant en oeuvre 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. REVENDICATIONS1. Procédé de codage hiérarchique d'un signal audionumérique comportant: - un codage coeur (400,500), délivrant N indices scalaires (IB(n) n=0,..,N-1) de quantification pour un ensemble de N échantillons (x(n) n=0, ..., N-1) 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-1) de quantification (Qk ) en!, , 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 (Die7+k (n) j = 0, ..., 2N -1;n = 0, ..., N -1) à partir au moins des N indices de quantification coeur (I B (n) n = 0,...,N1 ) et des indices d'amélioration des étages de rangs inférieurs (JI (n), ..., Jk_I (n) 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-1) du codage d'amélioration de rang k, par minimisation de l'énergie d'un signal d'erreur filtré (d B; k (n), ea+k - H (Dica+k )r) 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é (DicT~+kH-T ) en appliquant un filtre de masquage à mémoire nulle aux vecteurs du dictionnaire d'amélioration (Dicp+k) ; - une étape de recherche (610) conjointe des N indices (Jk (n) n=0, ..., N-1) du codage d'amélioration de rang k par minimisation d'un critère d'erreur entre les vecteurs du dictionnaire filtrés (Dic+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.30-36- 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 (en7 B+k B+k B+k-I 2L/ jB+k-I+f -,/IB+k-1 =0,1,...,2u -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 (eB; p,ed (n)) pour N échantillons, à partir des sorties passées du quantificateur d'amélioration et du filtre de 15 masquage déterminé; - obtention du signal cible à partir du signal de prédiction calculé (eB; p .ed (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. 20 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 coeur et à l'étage de codage d'amélioration auquel des gains d'amortissement sont appliqués en fonction de l'étage de codage respectif. 25 7 Procédé selon la revendication 1, caractérisé en ce que le codage coeur 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 30 codage coeur MICDA. 9. Procédé selon la revendication 1, caractérisé en ce que le codage coeur est un codage MIC. 35 10. Codeur hiérarchique de signal audionumérique comportant: 20 2960335 - 37 - - un étage de codage coeur, délivrant N indices scalaires (I B (n) n=0,..,N-1) de quantification pour un ensemble de N échantillons (x(n) n=0, ..., N-1) 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 5 scalaires (Jk (n) n=0, ..., N-1) de quantification (Q ) :,th , 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 ( Diva+k (n) j = 0,..., 2N -1; n = 0, ..., N -1) à partir 10 au moins des N indices de quantification coeur (I B (n) n = 0, ..., N -1) et des indices d'amélioration des étages de rangs inférieurs (J, (n), ..., Jk_~ (n) n = 0, ..., N -1); - un module (310,340) de recherche dans le dictionnaire d'amélioration produisant les N indices (Jk (n) n=0, ..., N-1) du codage d'amélioration de rang k, par minimisation de l'énergie d'un signal d'erreur filtré (. clB+k (n)) obtenu en utilisant les coefficients du filtre de masquage. 11. Programme informatique comportant des instructions de code pour la mise en oeuvre des étapes du procédé de codage selon l'une des revendications 1 à 9, lorsque ces instructions sont exécutées par un processeur. 25