Brevet FR2961980A1 — publié le 20111230

Contrôle d'une boucle de rétroaction de mise en forme de bruit dans un codeur de signal audionumérique 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 10 autres') La présente invention se rapporte plus particulièrement au contrôle d'une boucle de rétroaction dans un codage de forme d'onde de type codage MICDA (pour "Modulation par Impulsion et Codage Différentiel Adaptatif') dit "ADPCM" (pour "Adoptive Differential Pulse Code Modulation") en anglais et notamment au codage de type MICDA à 15 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 20 (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=O. Il comporte: - un module de prédiction 110 permettant de donner la prédiction du signal xpB(n) à partir des échantillons précédents du signal d'erreur quantifié 25 B v(n') n' = n -1, ..., n - Nz , où v(n') est le facteur d'échelle de quantification, et à partir du signal reconstitué r'5 (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) . 30 - un module de quantification 130 QB+h 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 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.5 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 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. Maitre. "7 kHz audio coding within 64 kbit/s". IEEE Journal on Selected Areas in 5 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: 10 - 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 I11 (n) ; - un module de quantification inverse 121 (QB) pour donner en sortie un signal d'erreur quantifié eeB(n) = y e (n) v(n) sur B bits; - un module d'adaptation 170 QAdapt des quantificateurs et des quantificateurs 15 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' :,(n) au signal d'erreur quantifié pour donner le signal reconstruit à bas débit rB (n) ; - un module d'adaptation 190 ' 4dapr du module de prédiction à partir du signal 20 d'erreur quantifié sur B bits eQ (n) et du signal eQ (n) filtré par 1+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. En l'absence de pertes de trames, le décodeur MICDA à codes imbriqués de la figure 2 reçoit en entrée les indices lB+k où 0 k K , issu du canal de transmission 140, 30 version de I B" éventuellement perturbée par des erreurs binaires. Le décodeur réalise une Y quantification inverse par le module de quantification inverse 210 (QB) de débit B bits par échantillon pour obtenir le signal e. (n) = y~, (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 rie (n) pour B bits sera égal à la somme de la prédiction xp (n) du signal et de la sortie eô (n) 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+1 bits ont été transmis, la sortie sera égale à la somme de la prédiction xP (n) et de la sortie du quantificateur inverse 230 à B+1 bits 10 y13,(n)v'(n). Si mode indique que B+2 bits ont été transmis alors la sortie sera égale à la somme de la prédiction xP (n) et de la sortie du quantificateur inverse 240 à B+2 bits y,n+ `(n)v'(n) . Le codage MICDA à codes imbriqués de la norme UIT-T G.722 (ci-après nommé 15 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 20 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). II a été récemment déployé dans les applications de téléphonie de qualité améliorée sur réseau IP. 25 Pour un quantificateur à grand nombre de niveaux, le spectre du bruit de quantification sera relativement plat. Cependant, dans les zones fréquentielles où le signal a une faible énergie, le bruit peut avoir un niveau supérieur au signal et n'est donc plus forcément masqué. Il peut alors devenir audible dans ces régions. Une mise en forme du bruit de codage est donc nécessaire. Dans un codeur comme 30 G.722, une mise en forme du bruit de codage adaptée à un codage à codes imbriqués est de plus souhaitable. De façon générale, le but de la mise en forme du bruit de codage est d'obtenir un bruit de quantification dont l'enveloppe spectrale suit le seuil de masquage court-terme; ce principe est souvent simplifié de sorte que le spectre du bruit suive approximativement le -4 spectre du signal, assurant un rapport signal à bruit homogène pour que le bruit reste inaudible même dans les zones de plus faible énergie du signal. 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 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 un codage avec mise en forme du bruit de codage par 10 rétroaction de bruit (ou "noise feedback" en anglais) tel qu'illustré à la figure 3. Un filtre perceptuel F(z) de mise en forme du bruit de codage (bloc 305) est calculé (bloc 303) sur la base des signaux décodés sL'o (n) à débit de coeur à 64 kbit/s (LO pour Layer 0), issus d'un quantificateur coeur inverse (bloc 301). Un décodeur local de débit coeur (bloc 301) permet donc de calculer le filtre F(z) de mise en forme du bruit. Ainsi, au décodeur, il est également 15 possible de calculer ce même filtre de mise en forme du bruit à partir des signaux décodés de débit coeur. Un quantificateur délivrant des bits de coeur (bloc 308) et un quantificateur délivrant des bits d'amélioration (bloc 309) est utilisé au codeur G.711.1. Le décodeur G.711.1 recevant le flux binaire coeur (LO) et les bits d'amélioration 20 (L1), calcule le filtre F(z) 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 (64 kbit/s) 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é de coeur. La mise en forme du bruit améliore ainsi la qualité perceptuelle du signal de débit 25 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 pour le codage des bits d'amélioration, l'entrée du quantificateur étant la même pour la quantification de coeur que pour la quantification améliorée. Le décodeur doit alors supprimer une composante parasite résultante par un filtrage 30 adapté, lorsque les bits d'amélioration sont décodés en plus des bits coeur. La mise en forme de bruit par rétroaction de bruit telle que mise en oeuvre dans la recommandation G.71 1.1 est généralisable à d'autres codeurs MIC que G.711 et à un codage de type MICDA. Un exemple de structure connue de rétroaction de bruit en codage MIC/MICDA est 35 présenté à la figure 4. Dans la suite on utilisera les notations suivantes : s(n) : signal d'entrée à coder s'(n) : signal d'entrée du codeur (signal à coder modifié) .s ''(n) : signal décodé fourni par le décodeur local q(n) = s' (n) - s (n) : bruit de quantification du codeur 5 La figure 4 illustre un exemple de mise en oeuvre de la mise en forme du bruit de codage MIC/MICDA. Ce codeur comporte un bloc de codage MIC/MICDA 502 et un décodeur local 503. Le bruit de codage qG(n) = s (n) - (n) est filtré (bloc 504) et réinjecté (bloc 505) sur le signal s(n) . Les coefficients de prédiction sont estimés (bloc 500) à partir du signal s(n) alors que dans G.711.1 (figure 3) ils sont estimés à partir du signal décodé passé au débit coeur. De façon connue, on obtient (bloc 500) typiquement le filtre A (y) à partir d'un filtre de prédiction linéaire A(z) modélisant les corrélations court-terme du signal s(n) , en atténuant les coefficients du filtre de prédiction linéaire A(z). Le bruit de codage sera mis en forme par le filtre H(z) = P (z) 1 avec comme valeur typique y = A(z/y) 0.92 En effet, pour le schéma de la figure 4, partant de S' (z) = ) Q(z) , avec q(n) = s' (n) - s (n) le bruit de quantification MIC/MICDA, on peut montrer que dans le domaine de la transformée en z: A(z/y) Autrement dit le bruit de codage "global" qG(n)=s(n)-s(n) correspond au bruit de 1 quantification MIC/MICDA q(n) filtré (mis en forme) par La rétroaction de bruit appliquée au codage MICDA est une technique efficace pour 25 améliorer la qualité des codeurs MIC/MICDA, en masquant le bruit de codage, particulièrement pour les signaux audio "naturels" tels que la parole ou la musique. Le schéma S(z)-S(z)= Q(z) A(zl)/ 6 de la figure 4 permet de mettre en forme le bruit de codage suivant un filtre de masquage 1 afin d'obtenir un rapport signal à bruit plus homogène suivant les fréquences. Cependant, pour certains signaux moins "naturels" que la parole ou la musique, la rétroaction de bruit peut, comme c'est parfois le cas avec les systèmes bouclés, devenir instable et conduire à une dégradation ou une saturation du signal décodé. La saturation est à prendre ici au sens où l'amplitude du signal décodé dépasse les valeurs maximales représentables à précision finie (exemple: entiers signés sur 16 bits) et conduit ainsi à un écrêtage du signal. Des exemples de signaux problématiques pour la rétroaction de bruit sont les signaux présentant des transitions rapides entre des séquences stationnaires de grande dynamique spectrale, comme par exemple une série de sinusoïdes pures de fréquences différentes séparées par de courts segments de silence. On considère en particulier les signaux «tonaux » (les sinusoïdes pures) comme des signaux à risque pouvant engendrer un problème d'instabilité ou de saturation dans les schémas de codage avec rétroaction de bruit. A(z/y Pour ce type de signal, le filtre de masquage (ou mise en forme) estimé 1 A(z / y) varie rapidement dans les transitions entre sinusoïdes et dans les attaques, le bruit de quantification qui est réinjecté est souvent très élevé. Le problème de stabilité et de saturation observé avec la rétroaction de bruit est particulièrement critique en codage MICDA. En effet, le codage MICDA tel que mis en oeuvre dans G.722 repose sur une adaptation progressive des paramètres de codage (pas de quantification, coefficients de prédiction). Cette adaptation se fait échantillon par échantillon suivant un principe similaire à l'algorithme LMS (pour "Least Mean Square" en anglais) en filtrage adaptatif, ce qui implique que l'adaptation ne suit pas immédiatement les caractéristiques non stationnaires du signal à coder. Il est connu que pour certains signaux l'adaptation dans le codage MICDA seul (sans rétroaction de bruit) peut décrocher ("mistracking" en anglais), au sens où l'adaptation diverge avant de re-converger après un certain temps. Pour les signaux problématiques, la rétroaction de bruit peut perturber l'adaptation du codage MICDA, car - en reprenant la figure 4 - le signal à coder s (n) est modifié par le bruit réinjecté d(n) pour former le signal s'(n). Lorsque le bruit réinjecté d(n) est de niveau similaire au niveau du signal s(n) - ce qui est souvent le cas dans les transitions rapides entre des séquences stationnaires de grande dynamique spectrale -, le signal s'(n) à l'entrée du codeur MICDA peut devenir très "instable" suivant que les signaux s (n) et d (n) sont en phase ou hors-phase. Si en plus le codage MICDA a une adaptation qui décroche ("mistracking" en anglais), la rétroaction de bruit va amplifier la durée et l'ampleur du décrochage. Pour montrer l'origine de ce phénomène on peut calculer le Rapport Signal à Bruit Perceptuel RSBp (perceptuel car il inclut l'effet de la rétroaction de bruit visant à masquer le bruit de codage) : N-t 1 s«n) RSBp = N-I n=o [s(n) - s (n) n=0 On peut montrer que : RSBp GMJCDA RSBQ-1+1 ED où GA,/CDA est le gain de prédiction du codeur MICDA, RSBQ le Rapport Signal à Bruit du quantificateur MICDA (autour de 24 dB pour un quantificateur de Laplace à 5 bits) et ED l'énergie de la réponse impulsionnelle fD (n) du filtre de masquage. D'après cette formule, on voit que plus le gain GM/CDA est faible, et/ou plus l'énergie ED est forte, et plus RSBp est faible. Ces deux conditions (GMrcDA faible et ED forte) sont réunies dans des situations de transitions entre deux séquences de sinusoïdes pures car le gain GnucD4 devient très faible (le codage MICDA adapté à la première sinusoïde pure prend un certain temps avant de se réadapter à la seconde sinusoïde pure) et ED est forte car les sinusoïdes donnent des filtres de réinjection très résonants. Dans ce cas le codeur MICDA 20 sera instable ou proche de l'instabilité. De tels phénomènes d'instabilité et de saturation ne sont pas acceptables car ils peuvent générer des artefacts audibles (ex: pics d'amplitude localisés dans le temps), voire des "chocs acoustiques" en cas de saturation complète du niveau temporel du signal. Il existe donc un besoin de prévenir et contrôler les phénomènes d'instabilité et de 25 saturation dans les structures de codage avec rétroaction, en particulier pour les signaux problématiques tels que les séries de sinusoïdes pures à différentes fréquences. La présente invention vient améliorer la situation. -8 A cet effet, elle propose un procédé de contrôle de mise en forme d'un bruit de codage lors du codage d'un signal d'entrée audionumérique, la mise en forme de bruit s'effectuant par la mise en oeuvre d'une rétroaction comportant un filtrage du bruit. Le procédé est tel qu'il comporte les étapes suivantes: - obtention d'un paramètre d'indication de risque d'instabilité de la rétroaction; - détection d'un risque d'instabilité par comparaison du paramètre d'indication à au moins un seuil prédéterminé; - limitation de la rétroaction en cas de détection de risque d'instabilité; - réactivation progressive de la rétroaction sur un nombre prédéterminé de trames 10 postérieures à la trame courante pour laquelle la rétroaction a été limitée. Ainsi, le procédé permet de faire une détection rapide et efficace de signaux potentiellement problématiques et risquant d'engendrer des phénomènes d'instabilité dans la rétroaction. Ce phénomène est ainsi évité puisqu'une limitation de la rétroaction est effectuée lors de l'apparition de ces signaux à risques. Cette limitation peut même consister en une 15 désactivation complète de cette rétroaction. Le procédé a donc une action préventive sur l'apparition de phénomènes gênants. La réactivation de la boucle de rétroaction se fait ensuite de façon progressive de sorte de ne pas engendrer de variation trop brusques des signaux codés. Dans un mode de réalisation particulier, le paramètre d'indication de risque 20 d'instabilité est le second coefficient de réflexion issu d'une analyse de prédiction linéaire du signal d'entrée ou encore le second coefficient de réflexion issu d'une analyse de prédiction linéaire du signal décodé. Ainsi, ce paramètre est bien représentatif des signaux à risque et indique donc le risque d'instabilité de la rétroaction. Ce paramètre est obtenu lors d'une analyse de prédiction 25 linéaire effectuée pour calculer notamment le filtre de mise en forme du bruit. Il est donc avantageux de le réutiliser ici pour contrôler la rétroaction. Dans un autre mode de réalisation, le paramètre de risque d'instabilité est un rapport signal à bruit entre le signal d'entrée et le bruit. Ce paramètre permet de mesurer le risque d'instabilité de la rétroaction pour tout 30 type de signaux à risque, pas seulement ceux présentant des sinusoïdes. Dans un mode possible de réalisation, la limitation de la rétroaction s'effectue par la mise à zéro d'un coefficient de pondération à appliquer aux paramètres de filtrage du bruit. Cela revient à annuler l'action du filtre de mise en forme de bruit et donc à désactiver la rétroaction, de façon simple. 35 Dans une variante de réalisation, la limitation de la rétroaction s'effectue par application d'un gain de valeur nulle en sortie du filtrage de bruit. Ainsi, le filtre reste invariant mais son action est annulée en sortie par l'application de ce gain. Ceci permet de désactiver la rétroaction sans modifier le calcul du filtre. De façon simple, la réactivation progressive de la rétroaction s'effectue par l'application d'un coefficient de pondération aux paramètres de filtrage, le coefficient de pondération étant défini par incrémentation sur le nombre prédéterminé de trames, dans le cas où la désactivation de la boucle de rétroaction s'effectue par la mise à zéro d'un coefficient de pondération. Dans le cas où la désactivation de la boucle de rétroaction s'effectue par l'application d'un gain de valeur nulle en sortie du filtrage de bruit, la réactivation progressive de la rétroaction s'effectue par l'application d'une valeur de gain croissante en sortie du filtrage de bruit sur le nombre prédéterminé de trame. Le procédé s'applique avantageusement dans le cas des codeurs de type hiérarchique et peut être mis en oeuvre à la fois lors du codage coeur et lors du codage d'amélioration d'un codage hiérarchique. Ainsi, non seulement on évite les problèmes d'instabilité lors du codage coeur mais également lors du codage d'amélioration, sans pour autant augmenter en proportion la complexité du codage. La présente invention se rapporte également à un codeur de signal audionumérique comportant une rétroaction de mise en forme d'un bruit de codage contenant un module de filtrage du bruit. Le codeur est tel qu'il comporte un module de contrôle de mise en forme de bruit incluant: - des moyens d'obtention d'un paramètre d'indication de risque d'instabilité de la rétroaction; - des moyens de détection d'un risque d'instabilité par comparaison du paramètre 25 d'indication à au moins un seuil prédéterminé; - des moyens de limitation de la rétroaction en cas de détection de risque d'instabilité; - des moyens de réactivation progressive de la rétroaction sur un nombre prédéterminé de trames postérieures à la trame courante pour laquelle la rétroaction a été 30 limitée. Elle se rapporte aussi à un programme informatique comportant des instructions de code pour la mise en oeuvre des étapes du procédé de contrôle 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 35 mémorisant un programme informatique tel que décrit. - 10- 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 5 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 la mise en forme du bruit appliquée dans un codeur de type normalisé G.71 1.1 selon l'état de l'art et tel que décrit précédemment; 10 - la figure 4 illustre un exemple de mise en forme de bruit dans le cas d'un codeur MIC/MICDA selon l'état de l'art et tel que décrit précédemment; - la figure 5 illustre un mode de réalisation d'un codeur de type MIC/MICDA avec une couche d'amélioration comportant un module de contrôle de mise en forme de bruit selon l'invention ; 15 - la figure 6 illustre une variante de réalisation d'un codeur comportant un module de contrôle de mise en forme de bruit selon l'invention ; - la figure 7 illustre un organigramme représentant les étapes d'un mode de réalisation du procédé de contrôle de mise en forme de bruit selon l'invention; - la figure 8 illustre un organigramme représentant les étapes d'une variante de 20 réalisation du procédé de contrôle de mise en forme de bruit selon l'invention; - la figure 9 illustre une variante de réalisation du procédé et du module de contrôle de mise en foune de bruit selon l'invention pour un deuxième exemple de codeur de type MIC/MICDA avec une couche d'amélioration; et - la figure 10 représente un mode de réalisation possible d'un codeur selon 25 l'invention. En référence à la figure 5, un codeur à codes imbriqués intégrant l'invention est maintenant décrit. Ce codeur fonctionne sur des signaux échantillonnés à 8 kHz avec des trames de 5 30 ms. II comporte une mise en forme du bruit de codage, laquelle est mise en oeuvre par rétroaction de bruit (étapes 606, 604, 605). On entend ici par rétroaction de bruit les étapes d'obtention d'un bruit (606), de filtrage du bruit (604) et de modification d'un signal (605). A noter qu'ici le signal modifié par la rétroaction est le signal d'entrée s(n) mais de façon équivalente dans le cas d'un codage MICDA un autre signal peut être modifié avant l'étape de 35 codage (601), par exemple le signal modifié par la rétroaction peut être la différence entre le signal d'entrée s(n) et le signal prédit par le codage MICDA, avant d'appliquer la quantification scalaire MICDA. -I1- Dans l'exemple décrit ici, le codage s'effectue avec des étages d'amélioration apportant un bit par échantillon supplémentaire. Ce choix est pris ici de façon à simplifier la présentation du codeur. Il est cependant clair que l'invention décrite ci-après s'applique au cas plus général où les étages d'amélioration apportent plus d'un bit par échantillon. 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. Ce codeur comporte un étage de codage de débit coeur 603 avec quantification (bloc 601) sur B+k-1 bits, de type par exemple codage MICDA tel que le codeur normalisé G.722 ou G.727 ou MIC pour "Modulation par Impulsions Codées" ou PCM en anglais (pour "Pulse code Modulation") tel que le codeur normalisé G.711. Cet étage de codage coeur comprend un module de décodage local (bloc 602). Le codeur de débit coeur comporte une boucle de rétroaction de mise en forme de bruit similaire à celle décrite en référence à la figure 4. Ainsi le bruit de codage est calculé (bloc 606), filtré (bloc 604) et réinjecté (bloc 605). Le codeur comporte également un étage d'amélioration 613 apportant un bit par échantillon afin de passer du débit B+k-1 bits par échantillon à B+k bits par échantillon. Cet étage d'amélioration est optionnel pour la mise en oeuvre de l'invention puisque seul l'étage de codage coeur peut mettre en oeuvre le procédé de contrôle de mise en forme de bruit comme décrit ultérieurement. Cet étage d'amélioration utilise un quantificateur (610) et un décodeur local (bloc 611) et réalise une mise en forme du bruit qui utilise le même filtre de masquage A( ? y)-1 que le codeur coeur. Ainsi le codeur coeur et l'étage d'amélioration repose sur le même filtre de mise en forme de bruit (A(-1) (blocs 604, 608) dont les coefficients sont calculés par le bloc 600. La figure 6 donne une solution équivalente à celle de la figure 5 mais donne une autre interprétation pour la partie filtrage. A la place d'utiliser des prédicteurs A(, /) - 1 on utilise des filtres A) (modules 614 et 615) dont l'entrée (respectivement se (n) et te (n) ) 30 sont préparée par les blocs 616 et 617 respectivement, de façon suivante : s~(n')=t(n') n'=n-no,...,n-1 s. (n') = s(n') n' = n et 2961980 -12- t,.(n')=t(n')-72(11') n'=n-np,...,11-1 t,.(n') = t(n') n' = n Le bloc 600 représente le module de contrôle de mise en forme du bruit selon l'invention. 5 Dans cet exemple, le module de contrôle 600 effectue entre autre, un calcul des coefficients du filtre de masquage à partir du signal d'entrée s(n) comme expliqué ultérieurement en référence à la figure 7. Ce calcul des coefficients du filtre de masquage peut également s'effectuer à partir du signal décodé comme dans le cas du codeur G.71 1.1 décrit en référence à la figure 3. 10 Ce module comporte notamment des moyens d'obtention d'un paramètre d'indication de risque d'instabilité de la rétroaction. Plusieurs exemples d'obtention de ce paramètre sont explicités par la suite. Ce module comporte en outre, des moyens de détection d'un risque d'instabilité de la rétroaction sous forme par exemple de comparateur qui va effectuer une comparaison du 15 paramètre obtenu, à un seuil prédéterminé. Le module comporte des moyens de limitation de la rétroaction par exemple par la mise à o ou à une valeur faible d'un gain ou d'un facteur de pondération comme expliqué par la suite. Il comporte également des moyens de réactivation progressive de la rétroaction sur 20 un nombre prédéterminé de trames postérieures à la trame courante pour laquelle la rétroaction a été limitée. Ces moyens de réactivation progressive sont par exemple des moyens d'attribution de valeurs de pondération ou de gain augmentant progressivement au fur et à mesure du nombre prédéterminé de trames. Ce module de contrôle met en oeuvre le procédé de contrôle de mise en forme de 25 bruit représenté sous forme d'organigramme, dans un mode de réalisation décrit maintenant en référence à la figure 7. Dans ce mode de réalisation, les étapes 701 à 704 sont optionnelles et ne font pas nécessairement partie du procédé de contrôle selon l'invention. On définit ici M comme étant l'ordre de prédiction linéaire, utilisée pour la mise en 30 forme de bruit, dont la valeur typique est M=4. Ainsi, à l'étape 701, un calcul d'autocorrélations, r(k), k=0,...,M, du signal s(n), M est l'ordre de prédiction linéaire, est effectué. A noter que ces autocorrélations pourraient être également calculées à partir du signal décodé s(n) comme dans G.711.1, sans changer la nature du procédé. 2961980 - 13 - Pour cela, le signal s (n) est d'abord pré-accentué par un filtre de type (1- fiez pour obtenir: sPre (n) = s(n) - As(n -1) où le facteur fi, est calculé comme dans G.711.1 suivant la formule suivante: 5 =1- 0.007813c_c, où c_e, est le nombre de passage par zéros. Ensuite un filtre de prédiction linéaire (LPC) d'ordre M=4 est estimé, une fois par trame (toutes les 5 ms). Pour ce faire le signal pré-accentué s'"(n) est pondéré par une fenêtre asymétrique et hybride cosinus-Hamming de 80 échantillons (10 ms) centrée sur le 10 début de la trame courante pour obtenir s,,,'« n) . L'autocorrélation est ensuite calculée suivant la formule: 79 r(k)=~sP"(n)s7(n-k),k=0,...,M n=k Les corrélations ainsi obtenues sont modifiées en r'(k) avec une extension de bande de 120 Hz incluant un facteur de correction de 1/1.0001 - qui représente un plancher de bruit 15 ("noise floor" en anglais) de 40 dB - comme dans G.711.1: r'(k) = r(k) k = 0 Wmg(k)rco(k) k=1,...,M 1 où wiagO k = exp 1.00011 72gfok 2 fS avec fo=120 Hz et"; =8000 Hz. 20 A l'étape 701, on calcule également un facteur de normalisation qui compte le nombre de décalage binaire en représentation arithmétique à virgule fixe comme dans G.711.1 défini par: q = 30 -[log, (r(0)) où L. représente l'arrondi à l'entier inférieur. 25 L'étape 702 correspond à l'algorithme de Levinson-Durbin décrit dans la recommandation UIT-T G.711.1 qui fournit comme résultat: - les coefficients de prédiction a,, i=0...M - les coefficients de réflexion k;, associés à une réalisation en treillis du filtre de prédiction linéaire. -14- L'algorithme de Levinson-Durbin est un algorithme récursif dont rappelées ci-dessous: . Numéro d'itération i 1, aô°1 = 1.0 , and E[°] = rL° (0) les étapes sont ~ rL0(i)+r 1IrLO(l-.%) i=1 / . Calculer k; _ - 1 El`-11 . Fixer a,'i = k; . Calculer aY = agi`-11 + k,arj)1 for j = 1,...,i - 1 . Calculer EH = (1 k12 )E['-1' . Incrémenter i de 1 et aller à l'étape 2 jusqu'à i =M. Le résultat est donné par a1 = agi` }, j=1,...,M qui sont les coefficients du prédicteur linéaire A(z) = 1 + a1z_i + a2z_2 + a3z_3 + agz-4 et par les coefficients de réflexion k; qui correspondent à une réalisation en treillis du filtre A(z) comme expliqué dans la référence de J.D. Markel et A. H. Gray « Linear Prediction of Speech », Springer-verlag, 1976.. Le coefficient de réflexion k, représente la "pente" du spectre court-terme du signal modélisé par prédiction linéaire, tandis que le coefficient de réflexion k2 est un indicateur de la dynamique spectrale du signal car il est associé au facteur de qualité (degré de résonance) du prédicteur linéaire d'ordre 2 trouvé à la deuxième itération de l'algorithme de Levinson-Durbin. Dans l'exemple illustré ici, ce coefficient de réflexion k2 constitue un paramètre d'indication de risque d'instabilité de la rétroaction telle qu'illustrée en référence à la figure 7.. On montre ici que le coefficient k2 permet la détection des signaux à très forte surtension en particulier les sinusoïdes. Comme expliqué précédemment, les signaux à forte surtension, en particulier les sinusoïdes, sont des signaux à risque (pour la rétroaction de bruit) qu'il convient de détecter. La détection de ces signaux à risque peut-être effectuée en examinant le deuxième coefficient de corrélation partielle en sortie de l'algorithme de Levinson-Durbin qui est utilisé pour calculer le filtre A(z) à partir duquel est calculé le filtre de pondération W( ) A(zly -15- Nous allons calculer le deuxième coefficient de corrélation partielle par l'algorithme de Levinson-Durbin pour une sinusoïde s(n) = cos(ncoT) de pulsation 27r Î w = a la fréquence d'échantillonnage 1/T qui possède une surtension au niveau 7' de sa fréquence. Sa fonction de corrélation sera égale à : 5 r'o (k) = cos(kwT) . La première étape de l'algorithme donne : k, = -cos(wT) = - cos(wT) E' = 2 [l - cos(2wT)] 10 Et la deuxième étape : k, = 1 a, = -2 cos(coT) a; =1 E' = 0 15 Comme l'erreur de prédiction est nulle on déduit qu'une sinusoïde est prédictible à partir de 2 échantillons: x(n) = 2 cos(wT)x(n -1) - x(n - 2) Du fait des divers amortissements de la fonction de corrélation avant le calcul du prédicteur, le coefficient de surtension n'est pas égal à sa valeur idéale. Pour une sinusoïde à 20 3000 Hz on trouve typiquement k, = 0.97. La solution mise en oeuvre consiste donc à détecter les signaux à forte surtension qui fournissent un coefficient de corrélation partielle k, supérieur à un seuil typiquement 0.95. L'étape 703 vérifie si le facteur de normalisation ri dépasse une valeur limite 25 (MAXNORM=16), ce qui permet de détecter les signaux de faibles niveaux (silence ou signal très faible) comme dans G.711.1. Dans le cas où ce facteur de normalisation dépasse un seuil prédéterminé, il > MAXNORM , les coefficients de prédiction linéaire a, ,i = 0,..., M sont atténués (étape 704), ce qui revient à réduire l'effet du filtre de masquage (ou mise en forme) de bruit. - 16 - Dans ce cas, le filtre de masque W(z) -1 est obtenu en utilisant les coefficients a, , i = 0, ..., M obtenus à l'étape 704 selon l'équation suivante: a. W(z) -1 z z 2'+,r-Ma_VNORM Dans le cas contraire, le filtre de mise en forme de bruit est défini suivant la 5 formule: W(z) -1= On suppose que la valeur du facteur d'atténuation y est gardée en mémoire et récupérée au début du traitement de chaque trame. Cette valeur gardée en mémoire est notée y,,,,,,,, . Cette opération de récupération est effectuée à l'étape 711. 10 Dans les trames où un signal de faible niveau est détecté (i ? MAXNORM ), le paramètre y,, est réinitialisé à une valeur égale par exemple à GAMMA, = 0.92 à l'étape 712. Le procédé de contrôle de mise en forme du bruit comporte une étape 705 de détection d'un risque d'instabilité par comparaison du paramètre d'indication à au moins un 15 seuil prédéterminé. Plusieurs techniques existent pour détecter des signaux à forte dynamique spectrale tels que les sinusoïdes. Dans le cas où on dispose d'une analyse de prédiction linéaire avec des coefficients de réflexion kz comme décrit ici, il est avantageux de réutiliser le deuxième coefficient de réflexion comme décrit précédemment. 20 Dans cet exemple de mise en oeuvre, l'étape 705 consiste à vérifier si le second coefficient de réflexion dépasse une valeur prédéterminée, ici 0,95 (k2 > 0.95 ). Ce test permet de détecter les signaux à forte dynamique spectrale et permet de détecter en particulier les sinusoïdes pures (sans modulation forte d'amplitude, mais d'amplitude relativement constante) 25 Si le test s'avère positif, une étape de limitation de la rétroaction est effectuée puisque le risque d'instabilité de cette rétroaction est avéré. Une limitation possible est par exemple la désactivation de la rétroaction, à l'étape 706, en fixant le coefficient ï à 0. Dans une variante le coefficient Y est fixé à une valeur très faible mais non nulle, 30 par exemple 0.001. Cette variante correspond à non pas à une désactivation complète de la rétroaction, mais à une limitation de la rétroaction, ce qui produit le même effet (éviter une instabilité ou une saturation) -17 De façon équivalente il serait possible dans les trames où Y = 0 de fixer s (n) = s(n) aux figures 5 et 6, ce qui revient à n'injecter aucun bruit sur le signal s(n). Les coefficients de prédiction linéaire a, , i = 0,-, M sont pondérés par Y à l'étape 707 afin de calculer les coefficients de A(z / )/) -1. La valeur 7.e. gardée en mémoire est ensuite mise à jour pour la prochaine trame à GAMMA, l'étape 708. Cette valeur est d'abord calculée en incrémentant Y de 4 où GAMMA1 = 0.92 par exemple et le résultat est saturé à GAMMA, aux étapes 709 et 710. La division par 4 permet de retrouver après 4 trames une valeur de GAMMA) Dans le cas où Y est fixé à une valeur très faible (GAMMA0=0.001) en 706, on peut 10 incrémenter Y par des valeurs de GAMMA, -GAMMAo Ce cas de figure est décrit pour un nombre prédéterminé de trames égal à 4 mais cette étape peut bien évidemment être effectuée sur un nombre de trame supérieur ou inférieur à 4. De même, les valeurs d'incrémentation peuvent être différentes et l'incrémentation peut s'effectuer avec des pas répartis de façon non-linéaire. 15 Ces étapes 708 à 710 reviennent à effectuer une réactivation progressive de la rétroaction sur un nombre prédéterminé de trames postérieures (ici 4 trames) à la trame courante pour laquelle la rétroaction a été limitée. Ainsi le procédé de contrôle de mise en forme de bruit selon l'invention 20 consiste à détecter les signaux problématiques susceptibles de provoquer une instabilité ou une saturation du signal par un test effectué dans ce mode de réalisation, sur le second coefficient de réflexion et de limiter la rétroaction de bruit dès que ce test est positif. Après une détection positive, la valeur de Y est progressivement augmentée (après 4 trames dans l'exemple décrit ici) jusqu'à sa valeur "normale" GAMMA, . La valeur courante de Y est copiée dans Ym,,,, afin de passer la valeur de ce paramètre d'une trame à la suivante. L'incrémentation successive de Y distribuée sur plusieurs trames permet de rétablir la rétroaction de bruit progressivement, et évite au système bouclé de diverger suite à une réactivation trop brusque de la rétroaction qui peut engendrer des variations brusques des statistiques "locales" du signal. Dans une variante de réalisation du procédé de contrôle de la mise en forme de bruit, le paramètre d'indication d'un risque d'instabilité est différent. 4 25 30 -18- Par exemple, une mesure d'aplatissement spectral ("spectral flatness" en anglais) est effectuée en calculant le rapport entre la moyenne arithmétique et la moyenne géométrique des raies spectrales du spectre de puissance calculé à partir du signal court-terme fenêtré par la fenêtre LPC. Cette mesure tend vers une très grande valeur pour des spectres ne contenant qu'une raie (sinusoïde pure). Dans cette variante de réalisation, le seuil de détection permettant de détecter un signal de grande dynamique à l'étape 705, dépend du contexte (longueur de trame, fenêtre..). Cette variante implique cependant de calculer une transformation temps-fréquences (de type Fourier) à court-terme et de calculer la mesure décrite ci-dessus. Dans une autre variante de réalisation, on ne s'attache pas à détecter a priori les signaux à forte dynamique mais à détecter de façon non paramétrique et a posteriori des signaux problématiques qui engendrent des instabilités sur la rétroaction. Le paramètre de risque d'instabilité est dans ce mode de réalisation, le rapport signal à bruit instantané entre le signal d'entrée s(n) et le bruit de codage t(n) définis aux figures 5 et 6. La détection de signaux problématiques à l'étape 705, se fait alors en fixant un seuil sur le rapport signal à bruit, par exemple dès que ce rapport est en dessous de 5 dB. Dans ce mode de réalisation, il est nécessaire de calculer une moyenne du signal d'entrée et du bruit afin de pouvoir calculer des rapports signal à bruit qui soient bien définis. Ce type de détection a posteriori intervient cependant souvent quand les problèmes 20 d'instabilité ou de saturation sont déjà en partie observables. De plus cette variante présente l'inconvénient d'avoir un assez fort taux de fausse alarme. Un autre mode de réalisation pour l'obtention du paramètre d'indication de risque d'instabilité de la rétroaction et de la détection d'un risque d'instabilité est illustré en figure 8. Cet algorithme ne diffère de celui décrit en référence à la figure 7 que par les étapes 25 702 devenue 802 et 705 devenue 805. En effet, à l'étape 802, on obtient non seulement les coefficients du prédicteur linéaire a;, i=O...M et les coefficients de réflexion k,, i=l,...,M, comme décrit en référence à la figure 7, mais on obtient également l'énergie du filtre de masquage ED de la trame courante de la façon suivante: 30 ED = n=0 qui peut être approximé par le gain de prédiction en sortie de l'algorithme de Levinson-Durbin. E[hrj divisé par YL0 (0) - 19 - En fait le filtre de masquage est égal à H(z) = M 1 1+lai)/ et pour calculer son énergie il convient d'utiliser l'algorithme qui recalcule les prédicteurs successifs d'ordre A(=) inférieur en partant de )/ ainsi que les coefficients de corrélation partielle. p'(a)=1,Po(j)=ay» j=1,...,M m = M,...,1 k. =po(m) pfl l (J) = p (J)-k,nP~(m-j) L'énergie ED du filtre résultant calculée en 702 sera donné par : Al ED = H 1- k; 1- k2 j=1,...,m-1 Le paramètre d'indication de risque d'instabilité est donné alors par ED GMICDA avec GAncDA le gain de prédiction du codeur MICDA estimé sur la trame précédente. Il est approximé par le quotient du seuil de saturation V O du quantificateur, éventuellement 10 filtré, par l'énergie du signal d'entréee /Io (0) . L'étape de détection d'un risque d'instabilité 805, s'effectue alors par comparaison du E paramètre d'indication D à un seuil défini ici comme le rapport signal à bruit du GA4JCDA quantificateur MICDA multiplié par un facteur kRSB qui règle le dégrée de risque (kRsBRSBO ). 15 RSBQ est en effet le rapport signal à bruit du quantificateur MICDA (1/0.00414241 de l'ordre de 24 dB pour un quantificateur de Laplace à 5 bits). La valeur de RSBQ pour différents nombres de bits et une densité de probabilité de Laplace est donnée dans la table II de l'article de Paez et Glisson « Minimum Mean-Squared-Error Quantization 20 in Speech PCM and DPCM Systems » de la revue IEEE Trans. Communications d'avril 1972 PP.225-230. - 20 - L'étape de limitation de la rétroaction de l'étape 706 peut également s'effectuer de différentes façons. Dans un mode de réalisation différent, la rétroaction de bruit est désactivée, non pas en mettant le coefficient Y à 0, mais en appliquant un facteur d'échelle (ou gain) g de valeur nulle sur la sortie du filtre W(z) -1, Ce mode de réalisation est illustré en référence à la figure 9. Cette figure illustre un codeur hiérarchique comme représenté en figure 5, avec les mêmes éléments. La seule différence provient du module de contrôle de la mise en forme de bruit 900 qui délivre en 913, en sortie du module de filtrage 604 pour le codage coeur et en 914 en sortie du module de filtrage 608 pour le codage d'amélioration, un gain g qui lorsqu'il est mis à 0, désactive la rétroaction. Ce facteur g est mémorisé dans g,,,e,,, de la même façon que pour le paramètre Y dont les valeurs sont mis en mémoire dans à l'étape 711 de la figure 7. Dans le bloc 900, le calcul des coefficients du filtre W(z) -1 est donc similaire au bloc 600, sauf que dans le cas où Tl 0.95 alors g = 0 . De façon alternative, le gain g est fixé à une valeur très faible mais non nulle, par exemple 0.001. Cette variante correspond à non pas à une désactivation complète de la 20 rétroaction, mais à une limitation de la rétroaction. Le rétablissement progressif de la rétroaction de bruit se fait dans cette variante en faisant passer progressivement la valeur de g de 0 à 1. Par exemple, dans les trames qui suivent une détection k2 > 0.95 et dans lesquelles k2 0.95 on pourra fixer la valeur de g 25 à 0.25, 0.5, 0.75 et 1 dans les trames respectives suivantes. Ces valeurs peuvent bien évidemment être adaptées suivant la valeur de limitation donnée pour g (ex: g=0.001 en cas de détection de risque d'instabilité). Par ailleurs, dans les trames où un signal de faible niveau est détecté en 703 (1/ _> MAXNORM )le gain g,,,e", est rétabli à une valeur à 1 de façon similaire à l'étape 712 30 de la figure 7 qui rétablit la valeur de Y . Un exemple de réalisation 1000 d'un codeur selon l'invention est maintenant décrit en référence à la figure 10. -21- Matériellement, un codeur tel que décrit selon les modes de réalisation des figures 5, 6 et 9 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 valeurs de seuil de détection d'instabilité ou toutes autres données nécessaire à la mise en oeuvre du procédé de contrôle de mise en forme de bruit tel que décrit en référence aux figures 5, 6, 7, 8 et 9. Ce codeur reçoit en entrée un signal numérique s(n) et délivre des indices de quantification multiplexés la+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 d'obtention d'un paramètre d'indication de risque d'instabilité de la rétroaction, de détection d'un risque d'instabilité par comparaison du paramètre d'indication à au moins un seuil prédéterminé, de limitation de la rétroaction en cas de détection de risque d'instabilité et de réactivation progressive de la rétroaction sur un nombre prédéterminé de trames postérieures à la trame courante pour laquelle la rétroaction a été limitée. 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 oeuvre un procédé de contrôle de mise en forme de bruit selon l'invention. Les figures 7 et 8 peuvent par exemple illustrer l'algorithme d'un tel programme informatique. REVENDICATIONS1. Procédé de contrôle de mise en forme d'un bruit de codage lors du codage d'un signal d'entrée audionumérique, la mise en forme de bruit s'effectuant par la mise en oeuvre d'une rétroaction comportant un filtrage du bruit, caractérisé en ce qu'il comporte les étapes suivantes: - obtention (702) d'un paramètre d'indication de risque d'instabilité de la rétroaction; - détection (705) d'un risque d'instabilité par comparaison du paramètre d'indication 10 à au moins un seuil prédéterminé; - limitation (706) de la rétroaction en cas de détection de risque d'instabilité; - réactivation progressive (708, 709, 710) de la rétroaction sur un nombre prédéterminé de trames postérieures à la trame courante pour laquelle la rétroaction a été limitée. 15 2. Procédé selon la revendication 1, caractérisé en ce que le paramètre d'indication de risque d'instabilité est le second coefficient de réflexion (k2 ) issu d'une analyse de prédiction linéaire du signal d'entrée (s (n) ). 20 3. Procédé selon la revendication 1, caractérisé en ce que le paramètre d'indication de risque d'instabilité est le second coefficient de réflexion (k2 ) issu d'une analyse de prédiction linéaire du signal décodé ( (n)). 4. Procédé selon la revendication 1, caractérisé en ce que le paramètre de risque 25 d'instabilité est un rapport signal à bruit entre le signal d'entrée et le bruit. 5. Procédé selon la revendication 1, caractérisé en ce que la limitation de la rétroaction s'effectue par la mise à zéro d'un coefficient de pondération à appliquer aux paramètres de filtrage du bruit (604). 6. Procédé selon la revendication 1, caractérisé en ce que la limitation de la rétroaction s'effectue par application d'un gain de valeur nulle en sortie du filtrage de bruit. 7. Procédé selon la revendication 5, caractérisé en ce que la réactivation progressive 35 de la rétroaction s'effectue par l'application d'un coefficient de pondération aux paramètres de 30-23- filtrage, le coefficient de pondération étant défini par incrémentation sur le nombre prédéterminé de trames. 8. Procédé selon la revendication 6, caractérisé en ce que la réactivation progressive de la rétroaction s'effectue par l'application d'une valeur de gain croissante en sortie du filtrage de bruit sur le nombre prédéterminé de trame. 9. Procédé selon la revendication 1, caractérisé en ce qu'il est mis en oeuvre à la fois lors du codage coeur et lors du codage d'amélioration d'un codage hiérarchique. 10 10. Codeur de signal audionumérique comportant une rétroaction de mise en forme d'un bruit de codage contenant un module de filtrage du bruit, caractérisé en ce qu'il comporte un module (600, 800) de contrôle de mise en forme de bruit incluant: - des moyens d'obtention d'un paramètre d'indication de risque d'instabilité de la 15 rétroaction; - des moyens de détection d'un risque d'instabilité par comparaison du paramètre d'indication à au moins un seuil prédéterminé; - des moyens de limitation de la rétroaction en cas de détection de risque d'instabilité; 20 - des moyens de réactivation progressive de la rétroaction sur un nombre prédéterminé de trames postérieures à la trame courante pour laquelle la rétroaction a été limitée. 11. Programme informatique comportant des instructions de code pour la mise en 25 oeuvre des étapes du procédé de contrôle selon l'une des revendications 1 à 9, lorsque ces instructions sont exécutées par un processeur. 30