FR 3025923 A1 20160318 FR 1458608 A 20140912 1 Discrimination et atténuation de pré-échos dans un signal audionumérique L'invention concerne un procédé et un dispositif de discrimination et de traitement d'atténuation des pré-échos lors du décodage d'un signal audionumérique. Pour la transmission des signaux audionumériques sur des réseaux de télécommunications, qu'il s'agisse par exemple de réseaux fixes ou mobiles, ou pour le stockage des signaux, on fait appel à des processus de compression (ou codage source) mettant en oeuvre des systèmes de codage qui sont en général du type codage temporel par prédiction linéaire ou codage fréquentiel par transformée. Le procédé et le dispositif, objets de l'invention, ont ainsi comme domaine d'application la compression des signaux sonores, en particulier les signaux audionumériques codés par transformée fréquentielle. La figure 1 représente à titre illustrant un schéma de principe du codage et du décodage d'un signal audio numérique par transformée incluant une analyse-synthèse par addition/recouvrement selon l'art antérieur. Certaines séquences musicales, telles que les percussions et certains segments de parole comme les plosives (/k/, /t/, ...), sont caractérisées par des attaques extrêmement brusques qui se traduisent par des transitions très rapides et une variation très forte de la dynamique du signal en l'espace de quelques échantillons. Un exemple de transition est donné à la figure 1 à partir de l'échantillon 410. Pour le traitement de codage/décodage, le signal d'entrée est découpé en blocs d'échantillons de longueur L dont les frontières sont représentées sur la figure 1 par des traits verticaux en pointillés. Le signal d'entrée est noté x(n), où n est l'indice de l'échantillon. La découpe en blocs successifs (ou trames) conduit à définir les blocs XN(n) = [ x(N.L) x(N.L+L-1) = xN(0) xN(L-1)1, où N est l'indice du bloc (ou de la trame), L est la longueur de la trame. A la figure 1 on a L=160 échantillons. Dans le cas de la transformée modulée en cosinus modifiée MDCT (pour "Modified Discrete Cosine Transform" en anglais), deux blocs XN(n) et XN,I(n) sont analysés conjointement pour donner un bloc de coefficients transformés associés à la trame d'indice N et la fenêtre d' analyse est sinusoïdale. La division en blocs, aussi appelés trames, opérée par le codage par transformée est totalement indépendante du signal sonore et les transitions peuvent donc apparaître en un point quelconque de la fenêtre d'analyse. Or après décodage par transformée, le signal reconstruit est entaché de "bruit" (ou distorsion) engendré par l'opération quantification (Q)- quantification inverse (Q-1). Ce bruit de codage est réparti temporellement de façon 3025923 2- relativement uniforme sur tout le support temporel du bloc transformé, c'est-à-dire sur toute la longueur de la fenêtre de longueur 2L d'échantillons (avec recouvrement de L échantillons). L'énergie du bruit de codage est en général proportionnelle à l'énergie du bloc et est fonction du débit de codage/décodage. 5 Pour un bloc comportant une attaque (comme le bloc 320-480 de la figure 1) l'énergie du signal est élevée, le bruit est donc également de niveau élevé. En codage par transformée, le niveau du bruit de codage est typiquement inférieur à celui du signal pour les segments de forte énergie qui suivent immédiatement la transition, mais le niveau est supérieur à celui du signal pour les segments d'énergie plus faible, 10 notamment sur la partie précédant la transition (échantillons 160 - 410 de la figure 1). Pour la partie précitée, le rapport signal à bruit est négatif et la dégradation résultante peut apparaître très gênante à l'écoute. On appelle pré-écho le bruit de codage antérieur à la transition et post-écho le bruit postérieur à la transition. On peut observer sur la figure 1 que le pré-écho affecte la trame précédant la 15 transition ainsi que la trame où se produit la transition. Les expériences psycho-acoustiques ont montré que l'oreille humaine effectue un pré-masquage temporel des sons assez limité, de l'ordre de quelques millisecondes. Le bruit précédant l'attaque, ou pré-écho, est audible lorsque la durée du pré-écho est supérieure à la durée du pré-masquage. 20 L'oreille humaine effectue également un post-masquage d'une durée plus longue, de 5 à 60 millisecondes, lors du passage de séquences de forte énergie à des séquences de faible énergie. Le taux ou niveau de gêne acceptable pour les post-échos est donc plus important que pour les pré-échos. Le phénomène des pré-échos, plus critique, est d'autant plus gênant que la longueur 25 des blocs en nombre d'échantillons est importante. Or, en codage par transformée, il est bien connu que pour les signaux stationnaires plus la longueur de la transformée augmente, plus le gain de codage est important. A fréquence d'échantillonnage fixée et à débit fixé, si on augmente le nombre de points de la fenêtre (donc la longueur de la transformée) on disposera de plus de bits par trame pour coder les raies fréquentielles jugées utiles par le modèle 30 psychoacoustique, d'où l'avantage d'utiliser des blocs de grande longueur. Le codage MPEG AAC (Advanced Audio Coding), par exemple, utilise une fenêtre de grande longueur qui contient un nombre fixe d'échantillons, 2048, soit sur une durée de 64 ms si la fréquence d'échantillonnage est de 32 kHz; le problème des pré-échos y est géré en permettant de commuter de ces fenêtres longues à 8 fenêtres courtes par le biais de fenêtres intermédiaires 3025923 3 (dites de transition), ce qui nécessite un certain retard au codage pour détecter la présence d'une transition et adapter les fenêtres. La longueur de ces fenêtres courtes est donc de 256 échantillons (8 ms à 32 kHz). A bas débit on peut toujours avoir un pré-écho audible de quelques ms. La commutation des fenêtres permet d'atténuer le pré-écho mais pas de le 5 supprimer. Les codeurs par transformée utilisés pour les applications conversationnelles, comme UIT-T G.722.1, G.722.1C ou G.719, utilisent souvent une longueur de trame de 20 ms et une fenêtre de durée 40 ms à 16, 32 ou 48 kHz (respectivement). On peut noter que le codeur UIT-T G.719 intègre un mécanisme de commutation de fenêtres avec détection de transitoire, cependant le pré-écho n'est pas complètement réduit à bas débit (typiquement à 10 32 kbit/s). Dans le but de réduire l'effet gênant précité du phénomène des pré-échos, différentes solutions ont été proposées au niveau du codeur et/ou du décodeur. La commutation de fenêtres a été citée précédemment ; elle nécessite de transmettre une information auxiliaire pour identifier le type de fenêtres utilisées dans la 15 trame courante. Une autre solution consiste à appliquer un filtrage adaptatif. Dans la zone précédant l'attaque, le signal reconstruit est vu comme la somme du signal original et du bruit de quantification. Une technique de filtrage correspondante a été décrite dans l'article intitulé High Quality Audio Transform Coding at 64 kbits, IEEE Trans. on Communications Vol 42, No. 20 11, November 1994, publié par Y. Mahieux et J. P. Petit. La mise en oeuvre d'un tel filtrage nécessite la connaissance de paramètres dont certains, comme les coefficients de prédiction et la variance du signal corrompu par le pré-écho, sont estimés au décodeur à partir des échantillons bruités. Par contre, des informations telles que l'énergie du signal d'origine ne peuvent être connues qu'au codeur et doivent par 25 conséquent être transmises. Ceci nécessite de transmettre des informations supplémentaires, ce qui à débit contraint diminue le budget relatif alloué au codage par transformée. Lorsque le bloc reçu contient une variation brusque de dynamique, le traitement de filtrage lui est appliqué. Le processus de filtrage précité ne permet pas de retrouver le signal d'origine, mais 30 procure une forte réduction des pré-échos. Il nécessite toutefois de transmettre les paramètres supplémentaires au décodeur. A la différence des solutions précédentes, différentes techniques de réduction de pré-écho sans transmission spécifique de l'information ont été proposées. Par exemple, une revue de la réduction de pré-échos dans le contexte du codage hiérarchique est présentée 3025923 4- dans l'article B. Kiivesi, S. Ragot, M. Gartner, H. Taddei, "Pre-echo reduction in the ITU-T G.729.1 embedded coder," EUSIPCO, Lausanne, Suisse, Août 2008. Un exemple typique de procédé d'atténuation de pré-échos sans information auxiliaire est décrit dans la demande de brevet français FR 08 56248. Dans cet exemple, on 5 détermine des facteurs d'atténuation par sous-bloc, dans les sous-blocs de faible énergie précédant un sous-bloc dans lequel une transition ou attaque a été détectée. Le facteur d'atténuation g (k) dans le k-ième sous-bloc est calculé par exemple en fonction du rapport R(k) entre l'énergie du sous-bloc de plus forte énergie et l'énergie du k-ième sous-bloc en question : 10 g (k) = f (R(k)) où f est une fonction décroissante à valeurs entre 0 et 1 et k est le numéro du sous-bloc. D'autres définitions du facteur g (k) sont possibles, par exemple en fonction de l'énergie En(k) dans le sous-bloc courant et de l'énergie En (k -1) dans le sous-bloc précédent. Si l'énergie des sous-blocs varie peu par rapport à l'énergie maximale dans les 15 sous-blocs considérés à la trame courante, aucune atténuation n'est alors nécessaire ; le facteur g (k) est fixé à une valeur d'atténuation inhibant l'atténuation, c'est-à-dire 1. Sinon, le facteur d'atténuation est compris entre 0 et 1. Dans la plupart des cas, surtout quand le pré-écho est gênant, la trame qui précède la trame de pré-écho a une énergie homogène qui correspond à l'énergie d'un segment de 20 faible énergie (typiquement un bruit de fond). Selon l'expérience il n'est pas utile ni même souhaitable qu'après traitement d'atténuation de pré-écho l'énergie du signal devienne inférieure à l'énergie moyenne (par sous-bloc) du signal précédant la zone de traitement - typiquement celle de la trame précédente, notée En , ou celle de la deuxième moitié de la trame précédente, notée En' . 25 Pour le sous-bloc d'indice k à traiter on peut calculer la valeur limite, notée lime (k) , du facteur d'atténuation afin d'obtenir exactement la même énergie que l'énergie moyenne par sous-bloc du segment précédant le sous-bloc à traiter. Cette valeur est bien sûr limitée à un maximum de 1 puisqu'on s'intéresse ici aux valeurs d'atténuation. Plus précisément on définit ici: 3025923 5 limg (k) = min ( \i max (En, En') 1 En (k) ) où l'énergie moyenne du segment précédent est approximée par la valeur max (En, En') . La valeur lime (k) ainsi obtenue sert de limite inférieure dans le calcul final du facteur d'atténuation du sous-bloc, elle est donc utilisée comme suit : 5 g (k) = max (g (k),lim g (k)) Les facteurs d'atténuation (ou gains) g (k) déterminés par sous-blocs peuvent être ensuite lissés par une fonction de lissage appliquée échantillon par échantillon pour éviter des variations brusques du facteur d'atténuation aux frontières des blocs. Par exemple, on peut d'abord définir le gain par échantillon comme une fonction 10 constante par morceaux : g p' (n) = g (k) , n = kL' , - - - ,(k +1)L'-1 où L' représente la longueur d'un sous-bloc. La fonction est ensuite lissée suivant l'équation suivante: g p' (n) := a g p' (n -1) + (1- a) g p' (n), n = 0, --- , L -1 15 avec la convention que gpre (-1) est le dernier facteur d'atténuation obtenu pour le dernier échantillon du sous-bloc précédent, a est le coefficient de lissage, typiquement (x=0.85. D'autres fonctions de lissage sont également possibles comme par exemple le fondu enchainé linéaire sur u échantillons : 1 u-1 g p' (n) = -1 g p' (n-i) n=0,---,L-1 u i=o 20 où g p' (n) est l'atténuation non lissée et g p' (n) est l'atténuation lissée, g p', (n) avec n = -(u -1), - - - , -1 sont les derniers u-1 facteurs d'atténuation obtenus pour les derniers échantillons du sous-bloc précédent. On peut par exemple prendre u = 5. Une fois les facteurs g p' (n) ainsi calculés, l'atténuation de pré-échos est faite sur le signal reconstruit dans la trame courante, x ', (n) , en multipliant chaque échantillon par 25 le facteur correspondant : x ',,g(n) = g p'(n)x',(n) n = 0 , - - - , L -1 3025923 6- où Xrec g (n) est le signal décodé et post-traité par la réduction de pré-écho. Les figures 2 et 3 illustrent la mise en oeuvre du procédé d'atténuation tel que décrit dans la demande de brevet de l'état de l'art, précitée, et résumé précédemment. Dans ces exemples le signal est échantillonné à 32 kHz, la longueur de la trame est 5 L=640 échantillons et chaque trame est divisée en 8 sous-blocs de K=80 échantillons. Dans la partie a) de la figure 2, une trame d'un signal original échantillonné à 32 kHz, est représentée. Une attaque (ou transition) dans le signal est située dans le sous-bloc commençant à l'indice 320. Ce signal a été codé par un codeur par transformée de type MDCT à bas débit (24 kbit/s). 10 Dans la partie b) de la figure 2, le résultat du décodage sans traitement de pré-écho est illustré. On peut observer le pré-écho à partir de l'échantillon 160, dans les sous-blocs précédents celui contenant l'attaque. La partie c) montre l'évolution du facteur d' atténuation de pré-écho (ligne continue) obtenu par le procédé décrit dans la demande de brevet de l'état de l'art précitée. La 15 ligne pointillée représente le facteur avant lissage. On remarque ici que la position de l'attaque est estimée autour de l'échantillon 380 (dans le bloc délimité par les échantillons 320 et 400). La partie d) illustre le résultat du décodage après application du traitement de pré-écho (multiplication du signal b) avec le signal c)). On voit que le pré-écho a bien été 20 atténué. La figure 2 montre également que le facteur lissé ne remonte pas à 1 au moment de l'attaque, ce qui implique une diminution de l' amplitude de l'attaque. L'impact perceptible de cette diminution est très faible mais peut néanmoins être évité. La figure 3 illustre le même exemple que la figure 2, dans lequel, avant lissage, la valeur de facteur d'atténuation est forcée à 1 pour les quelques échantillons du sous-bloc précédant le sous-bloc où se situe 25 l'attaque. La partie c) de la figure 3 donne un exemple d'une telle correction. Dans cet exemple on a affecté la valeur de facteur 1 aux 16 derniers échantillons du sous-bloc précédant l'attaque, à partir de l'indice 364. Ainsi la fonction de lissage accroît progressivement le facteur pour avoir une valeur proche de 1 au moment de l'attaque. L'amplitude de l'attaque est alors préservée, comme illustré dans la partie d) de la figure 3, 30 par contre quelques échantillons de pré-écho ne sont pas atténués. Dans l'exemple de la figure 3 la réduction de pré-écho par atténuation ne permet pas de réduire le pré-écho jusqu'au niveau de l'attaque, à cause du lissage du gain. 3025923 - 7 - Cette technique de réduction des pré-échos est cependant perfectible pour certains types de signaux comme des signaux de musique moderne par exemple. En effet, dans certains cas, une fausse détection de pré-écho peut avoir lieu. La figure 4 illustre un exemple d'un tel signal original, non codé donc sans pré-écho. Il s'agit d'un battement d'un 5 instrument de percussion électronique/synthétique. On peut y observer qu'avant l'attaque nette vers l'indice 1600 il y a un bruit synthétique qui démarre vers l'indice 1250. Ce bruit synthétique qui fait partie donc du signal serait détecté comme un pré-écho par l' algorithme de détection de pré-écho décrit ci-dessus, en supposant un codage/décodage parfait du signal. Le traitement d'atténuation de pré-échos supprimerait donc cette composante du signal. Ceci 10 dénaturerait le signal décodé (quand le codage/décodage est parfait), ce qui n'est pas souhaitable. Il existe donc un besoin d'une technique améliorée de discrimination et d'atténuation de pré-échos au décodage, qui permette de fiabiliser la détection des pré-échos et d'éviter les fausses détections sans qu'aucune information auxiliaire ne soit transmise par 15 le codeur. La présente invention améliore la situation de l'état de l'art. A cet effet, la présente invention se rapporte à un procédé de discrimination et d'atténuation de pré-écho dans un signal audionumérique dans lequel, pour une trame courante décomposée en sous-blocs, les sous-blocs de faible énergie précédant un sous-bloc 20 dans lequel une transition ou attaque est détectée déterminent une zone de pré-écho dans laquelle un traitement d'atténuation de pré-écho est effectué. Le procédé est tel qu'il comporte les étapes suivantes: - calcul d'un coefficient directeur des énergies pour au moins deux sous-blocs précédant le sous-bloc dans lequel une attaque est détectée; 25 - comparaison du coefficient directeur à un seuil prédéfini; et - inhibition du traitement d'atténuation de pré-écho dans la zone de pré-écho dans le cas où le coefficient directeur calculé est inférieur au seuil prédéfini. Le coefficient directeur des énergies calculé pour les sous-blocs précédant la position de l'attaque, permet de vérifier la tendance d'augmentation de l'énergie du signal 30 dans la zone de pré-écho. Ceci permet de fiabiliser la détection des pré-échos en évitant de fausse détection de pré-échos. En effet, en observant la figure 1 on peut voir que le pré-écho a une caractéristique typique : son énergie a une tendance croissante en approchant l' attaque origine du pré-écho. La forme des fenêtres de pondération de l'addition-recouvrement explique cela. Même si le pré-écho a une énergie à peu près constante avant l' addition- 3025923 8 recouvrement, les signaux à l'entrée du module d'addition-recouvrement sont multipliés par des fenêtres de pondération dont le poids décroit vers le passé. Dans le cas du signal d'exemple de la figure 4, l'énergie du signal avant l'attaque est approximativement constante ce qui permet de le différencier d'un pré-écho. Ainsi, la vérification d'une énergie croissante 5 du signal dans la zone de pré-écho permet d'augmenter la fiabilité de la détection de pré- écho. Dans un mode de réalisation particulier, le procédé comporte en outre une étape de décomposition du signal audionumérique en au moins deux sous-signaux en fonction d'un critère fréquentiel et en ce que les étapes de calcul de comparaison sont effectuées pour au 10 moins un des sous-signaux. Lorsque la position de l'attaque est détectée dans le troisième sous-bloc de la trame courante, l'énergie de deux sous-blocs est utilisée dans la zone de pré-écho pour calculer un coefficient directeur et le comparer à un seuil. Avec seulement deux points, seule la vérification pour le sous-signal haute-fréquence dans le cas d'une décomposition en deux 15 sous-signaux est suffisante pour détecter une fausse détection de pré-écho. Dans le cas où le nombre de sous-blocs précédant le sous-bloc où une position d'attaque a été détecté est suffisant, le procédé comporte en outre une étape de décomposition du signal audionumérique en au moins deux sous-signaux en fonction d'un critère fréquentiel et en ce que les étapes de calcul et de comparaison sont effectuées pour chacun des sous- 20 signaux, l'inhibition du traitement d'atténuation de pré-écho dans la zone de pré-écho de tous les sous-signaux s'effectuant quand un coefficient directeur calculé est inférieur au seuil prédéfini pour au moins un sous-signal. La division en sous-signaux permet ainsi d'effectuer une atténuation de pré-écho de façon indépendante et adaptée dans les sous signaux. La fiabilité de détection de la zone de 25 pré-écho est renforcée pour chacun des sous-signaux par la vérification de la valeur des coefficients directeurs respectifs. Selon un mode de réalisation particulier, un seuil différent est défini par sous- signal. Ceci permet d'adapter la vérification aux caractéristiques spectrales des sous- 30 signaux. Dans un mode de réalisation, le coefficient directeur est calculé selon une méthode d'estimation des moindres carrés. Cette méthode de calcul est de faible complexité. Dans un mode possible de réalisation, le coefficient directeur est normalisé. 3025923 9 Ainsi le coefficient directeur est plus facilement comparable à un seuil lorsque celui-ci est différent de O. La présente invention se rapporte également à un dispositif de discrimination et d'atténuation de pré-écho dans un signal audionumérique comportant un module de détection 5 de transition ou attaque, un module de discrimination de zone de pré-écho et un module de traitement d'atténuation de pré-écho, un traitement d'atténuation de pré-écho étant effectué pour une trame courante décomposée en sous-blocs, dans les sous-blocs de faible énergie précédant un sous-bloc dans lequel une transition ou attaque est détectée déterminant une zone de pré-écho. Le dispositif est tel qu'il comporte en outre: 10 - un module de calcul calculant un coefficient directeur des énergies pour au moins deux sous-blocs précédant le sous-bloc dans lequel une attaque est détectée; - un comparateur apte à effectuer une comparaison du coefficient directeur à un seuil prédéfini; et -un module de discrimination apte à inhiber le traitement d'atténuation de pré-écho dans 15 la zone de pré-écho dans le cas où le coefficient directeur calculé est inférieur au seuil prédéfini. Les avantages de ce dispositif sont les mêmes que ceux décrits pour le procédé de discrimination et de traitement d'atténuation qu'il met en oeuvre. L'invention vise un décodeur d'un signal audionumérique comportant un dispositif 20 tel que décrit précédemment. L'invention vise aussi un programme informatique comportant des instructions de code pour la mise en oeuvre des étapes du procédé tel que décrit précédemment, lorsque ces instructions sont exécutées par un processeur. Enfin, l'invention se rapporte à un support de stockage, lisible par un processeur, 25 intégré ou non au dispositif de traitement, éventuellement amovible, mémorisant un programme informatique mettant en oeuvre un procédé de traitement tel que décrit précédemment. 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 30 faite en référence aux dessins annexés, sur lesquels: - la figure 1 décrite précédemment illustre un système de codage-décodage par transformée selon l'état de l'art; - la figure 2 décrite précédemment illustre un exemple de signal audionumérique pour lequel une méthode d'atténuation selon l'état de l'art est effectuée; 3025923 - 10 - - la figure 3 illustre un autre exemple de signal audionumérique pour lequel une méthode d'atténuation selon l'état de l'art est effectuée; - la figure 4 décrite précédemment illustre un exemple d'un signal pour lequel la technique de l'état d'art détecterait à tort un pré-écho; 5 - la figure 5 illustre un mode de réalisation d'un procédé et d'un dispositif de discrimination et de traitement d'atténuation de pré-écho compris dans un décodeur selon l'invention; - la figure 6 illustre un exemple de fenêtres d'analyse et de fenêtres de synthèse à faible retard pour le codage et le décodage par transformée susceptible de créer le 10 phénomène de pré-écho; - la figure 7 illustre un exemple de signal audionumérique pour lequel la méthode d'atténuation de pré-écho selon un mode de réalisation de l'invention est mis en oeuvre;.... - la figure 8 illustre un exemple matériel de dispositif de discrimination et de traitement d'atténuation selon l'invention. 15 En référence à la figure 5, un dispositif 600 de discrimination et de traitement d'atténuation de pré-écho est décrit. Le dispositif de traitement d'atténuation 600 tel que décrit ci-après est compris dans un décodeur comportant un module 610 de quantification inverse (Q-1) recevant un signal S, un module 620 de transformée inverse (MDCT-1), un module 630 de reconstruction du signal par addition/recouvrement (add/rec) comme décrit 20 en référence à la figure 1 et délivrant un signal reconstruit x', (n) au dispositif de discrimination et de traitement d'atténuation selon l'invention. On peut noter qu' on prend ici l'exemple de la transformée MDCT qui est la plus courante en codage de parole et audio, cependant le dispositif 600 s' applique également à tout autre type de transformée (FFT, DCT, etc.). 25 En sortie du dispositif 600, un signal traité Sa est fourni dans lequel une atténuation de pré-écho a été effectuée. Le dispositif 600 met en oeuvre une méthode de discrimination et de traitement d'atténuation des pré-échos dans le signal décodé x', (n) . Dans un mode de réalisation de l'invention, le procédé de discrimination et de 30 traitement d'atténuation comporte une étape de détection (E601) des attaques qui peuvent engendrer un pré-écho, dans le signal décodé x', (n) . 3025923 Ainsi, le dispositif 600 comporte un module de détection 601 apte à mettre en oeuvre une étape de détection (E601) de la position d'une attaque dans un signal audio décodé. Une attaque (ou onset en anglais) est une transition rapide et une variation brusque 5 de la dynamique (ou amplitude) du signal. On peut désigner ce type de signaux par le terme plus général de "transitoire". Dans la suite et sans perte de généralité, on utilisera uniquement les termes d'attaque ou de transition pour désigner également des transitoires. Chaque trame courante de L échantillons du signal décodé x', (n) est divisée en K sous-blocs de longueur L', avec par exemple L = 640 échantillons (20 ms) à 32 kHz, L' = 10 80 échantillons (2.5 ms) et K = 8. De préférence la taille de ces sous-blocs est donc identique mais l'invention reste valable et facilement généralisable quand les sous-blocs ont une taille variable. Cela peut être le cas par exemple quand la longueur de la trame L n'est pas divisible par le nombre de sous-blocs K ou si la longueur de trame est variable. Des fenêtres d' analyse-synthèse spéciales à bas retard similaires à celles décrites 15 dans la norme UIT-T G.718 sont utilisées pour la partie analyse et pour la partie synthèse de la transformation MDCT. Un exemple de telles fenêtres est illustré en référence à la figure 6. Le retard engendré par la transformation est de seulement 280 échantillons contrairement au retard de 640 échantillons dans le cas d'utilisation des fenêtres sinusoïdales classiques. Ainsi la mémoire MDCT avec des fenêtres d'analyse-synthèse spéciales à bas retard ne contient 20 que 140 échantillons indépendants (non repliés avec la trame actuelle) contrairement aux 320 échantillons dans le cas d'utilisation des fenêtres sinusoïdales classiques. On peut en effet remarquer sur la figure 6 pour les fenêtres d'analyses (Ana.), que la zone de repliement est limitée par les traits en pointillés entre les échantillons 820 et 1100. La ligne de repliement est représentée en trait mixte à l'échantillon 960. 25 Pour la synthèse (Synth.), seuls les échantillons représentés par l'intervalle M (140 échantillons) sont nécessaires pour obtenir l'information sur la zone de repliement de l'analyse, en exploitant la symétrie. Ces échantillons contenus en mémoire sont alors utiles pour décoder cette zone de repliement en utilisant également les échantillons repliés de la fenêtre de la trame suivante. Dans le cas d'une attaque dans cette zone entre les échantillons 30 820 et 1100 l'énergie moyenne des échantillons représentés par l'intervalle M est nettement supérieure à l'énergie de sous-trames précédant l'échantillon 820. L' augmentation brusque de l'énergie de l'intervalle M contenue dans la mémoire MDCT peut donc signaler une attaque dans la trame suivante qui peut engendrer un pré-écho dans la trame courante. 3025923 - 12 - On utilise la mémoire MDCT x'' (n) qui donne une version avec repliement temporel ("folding" en anglais) du signal futur. Avec les fenêtres d'analyse-synthèse spéciales à bas retard comme illustrées en figure 6, on ne retient qu'un (K'=1) bloc de longueur L',(0)=140 qui contient tous les échantillons indépendants de la mémoire MDCT. 5 Malgré le nombre d'échantillons supérieur dans ce sous-bloc, son énergie reste comparable avec celle des sous-blocs de la trame courante (si le signal reste stable) car la partie mémoire a été fenêtrée (donc atténuée) par la fenêtre d' analyse. En effet, la figure 1 montre que le pré-écho influence la trame qui précède la trame où se situe l'attaque, et il est souhaitable de détecter une attaque dans la trame future qui est 10 en partie contenue dans la mémoire MDCT. La trame courante et la mémoire MDCT peuvent être vues comme des signaux concaténés formant un signal découpé en (K+K') sous-blocs consécutifs. Dans ces conditions, on définit l'énergie dans le k-ième sous-bloc comme : (k+i)E-1 En(k)= x'c(n)2 , k=0,...,K-1 n=kL' 15 quand le k-ième sous-bloc se situe dans la trame courante et, comme. En(k)= xMDCT(n) L',,', -1 2 11=0 quand le sous-bloc est dans la mémoire MDCT (qui représente le signal disponible pour la trame future) et Len, est la longueur du sous-bloc de la partie mémoire : L'énergie moyenne des sous-blocs dans la trame courante s'obtient donc comme - 20 En =- 1 ËEn(k) K k_o On définit également l'énergie moyenne des sous-blocs dans la deuxième partie de la trame courante comme (supposant que K est un nombre pair): 2 K-1 En' =- En(k) K k=K/2 Une attaque associée à un pré-écho est détectée si le rapport max (En(n)) 25 R(k)= 11=0,K +K '-1 dépasse un seuil prédéfini, dans un des sous-blocs considérés. En(k) D'autres critères de détection de pré-écho sont possibles sans changer la nature de l'invention. 3025923 -13- Par ailleurs, on considère que la position de l' attaque est définie comme ( pos = min L' .(arg max (En (k))), L k=0,K+K'-1 où la limitation à L assure que la mémoire MDCT n'est jamais modifiée. D'autres méthodes d'estimation plus précise de la position de l'attaque sont également possibles. 5 Le dispositif 600 comporte également un module 602 de discrimination de zone de pré-écho mettant en oeuvre une étape de détermination (E602) d'une zone de pré-écho (ZPE) précédant la position d'attaque détectée. On appelle ici zone de pré-écho la zone couvrant les échantillons avant la position estimée de l' attaque qui sont perturbés par le pré-écho engendré par l' attaque et où l' atténuation de ce pré-écho est souhaitable. Dans le mode 10 de réalisation présenté la zone de pré-écho peut être déterminée sur le signal décodé. Dans un mode de réalisation d'obtention des zones de pré-échos, les énergies En(k) sont concaténées en ordre chronologique, avec d'abord l'enveloppe temporelle du signal décodé, puis l'enveloppe du signal de la trame suivante estimée à partir de la mémoire de la transformée MDCT. En fonction de cette enveloppe temporelle concaténée et des 15 énergies moyennes En et En' de la trame précédente, la présence de pré-écho est détectée par exemple si le rapport R(k) dépasse un seuil, typiquement ce seuil est 16. Les sous-blocs dans lesquels un pré-écho a été détecté constituent ainsi une zone de pré-écho, qui en général couvre les échantillons n = 0, - - - , pos -1, soit du début de la trame courante à la position de l'attaque ( pos ). On peut aussi noter que la zone de pré-écho peut 20 très bien s'étendre sur toute la trame courante si l'attaque a été détectée dans la trame future. Le dispositif 600 comporte un module 603 de calcul apte à mettre en oeuvre une étape de calcul d'un coefficient directeur (ou indicateur de tendance de variation) des énergies des sous-blocs précédant le sous-bloc dans lequel une attaque a été détectée. On définit le modèle linéaire qui représente un ensemble de n réalisations (f, e,), 25 0 R(k) >= 32 et f=0.01 si r(k) >32. Si la variation de l'énergie par rapport à l'énergie maximale est faible, aucune 10 atténuation n'est alors nécessaire. Le facteur est alors fixé à une valeur d'atténuation inhibant l'atténuation, c'est-à-dire 1. Sinon, le facteur d' atténuation est compris entre 0 et 1. Cette initialisation peut être commune pour tous les sous-signaux. Les valeurs d'atténuation sont ensuite affinées par sous-signal pour pouvoir régler le niveau d' atténuation optimal par sous-signal en fonction des caractéristiques du signal 15 décodé. Par exemple les atténuations peuvent être limitées en fonction de l'énergie moyenne du sous-signal de la trame précédente car il n'est pas souhaitable qu'après le traitement d'atténuation de pré-écho, l'énergie du signal devienne inférieure à l'énergie moyenne par sous-bloc du signal précédant la zone de traitement (typiquement celle de la trame précédente ou celle de la deuxième moitié de la trame précédente). 20 Cette limitation peut être faite de façon similaire à celle décrite dans la demande de brevet FR 08 56248. Par exemple pour le deuxième sous-signal Xrec,ss2 (n) on calcule d'abord l'énergie dans les K sous-bloc de la trame courante comme - (k-pi)L--1 En'2(k) = Xrec '2 (n)2, k = 0, K -1 n=k1; On connait également par mémorisation l'énergie moyenne de la trame précédente Enss2 et 25 celle de la deuxième moitié de la trame précédente Ens,2' qui peuvent être calculés (à la trame précédente) comme - 1 K-1 Enss2 = -1Enss 2 (k ) K k_o et 3025923 -19- 2 K-1 Enss2 =- Enss2 (k) k=K 12 où les indices de sous-bloc de 0 à K correspondent à la trame courante. Pour le sous-bloc k à traiter on peut calculer la valeur limite du facteur limg',(k) afin d'obtenir exactement la même énergie que l'énergie moyenne par sous-bloc du segment 5 précédant le sous-bloc à traiter. Cette valeur est bien sûr limitée à un maximum de 1 puisqu'on s'intéresse ici aux valeurs d'atténuation. Plus précisément : max (Enss2, Enss 2 ') liMg ,ss 2(k) = min ,1 Enss2(k) où l'énergie moyenne du segment précédent est approximée par max (Enss2, Enss2' - La valeur lime ss2(k) ainsi obtenue sert de limite inférieure dans le calcul final du 10 facteur d'atténuation du sous-bloc : g (n)= max gp',;(n), limg,ss2 (k)), n = +1) L'-1; k =0,...,K -1 Dans une première variante de réalisation la zone de pré-écho où l'atténuation s'étend du début de la trame courante jusqu'au début du sous-bloc dans lequel l'attaque a été détecté - jusqu'à l'indice pos où pos = min L' .(arg max (En (k))), L . Les k=0,K+K'-1 15 atténuations associées aux échantillons du sous-bloc de l'attaque sont toutes mises à 1 même si l'attaque se situe vers la fin de ce sous-bloc. Dans une autre variante de réalisation la position de début de l'attaque pos est affinée dans le sous-bloc de l'attaque, par exemple en découpant le sous-bloc en sous-sous- blocs et en observant l'évolution de l'énergie de ces sous-sous-blocs. Supposons que la 20 position du début de l'attaque est détectée dans le sous-bloc k, k>0 et le début de l'attaque raffiné pos se trouve dans ce sous-bloc, les valeurs d'atténuation pour les échantillons de ce sous-bloc qui se trouvent avant l'indice pos peuvent être initialisées en fonction de la valeur d'atténuation correspondant au dernier échantillon du sous-bloc précédent : gpre,ss2 (n) = g pre,ss2 (kL,' -1),n = , p os -1 25 Toutes les atténuations à partir de l'indice pos sont mises à 1. 3025923 -20- Pour le premier sous-signal contenant les composantes basses fréquences du signal décodé, le calcul des valeurs d' atténuation en se basant sur le sous-signal Xrecssi (n) peut être similaire au calcul des valeurs d'atténuation en se basant sur le signal décodé x ', (n) . Ainsi, dans une variante de réalisation, par souci de réduction de complexité de calcul, les valeurs 5 d'atténuation peuvent être déterminées en se basant sur le signal décodé x ', (n) . Dans le cas où la détection des attaques est faite sur le signal décodé il n'est donc plus nécessaire de recalculer des énergies des sous-blocs car pour ce signal les valeurs d'énergie par sous-bloc sont déjà calculées pour détecter les attaques. Comme pour la grande majorité des signaux les basses fréquences sont beaucoup plus énergétiques que les hautes fréquences, les énergies 10 par sous-bloc du signal décodé x ', (n) et du sous signal xrec,', (n) sont très proches, cette approximation donne un résultat très satisfaisant. ,--, pre ,ssl (n) et gpre ,ss2 (n) ,--, Les facteurs d'atténuation 2 peuvent être ensuite lissés par une fonction de lissage appliquée échantillon par échantillon pour éviter des variations brusques du facteur d'atténuation aux frontières des blocs. Ceci est 15 particulièrement important pour les sous-signaux contenant des composantes basses fréquences comme le sous-signal xrec,ssi (n) mais pas nécessaire pour les sous-signaux ne contenant que des composantes hautes fréquences comme le sous signal X rec,ss2 (n) . La figure 7 illustre un exemple d'application d'un gain d'atténuation avec des fonctions de lissage représentées par les flèches L. 20 Cette figure illustre en a), un exemple de signal original, en b), le signal décodé sans atténuation de pré-écho, en c), les gains d'atténuation pour les deux sous-signaux obtenus selon l'étape de décomposition E605 et en d), le signal décodé avec atténuation de pré-écho des étapes E607 et E608 (c'est-à-dire après combinaison des deux sous-signaux atténués). 25 On peut remarquer sur cette figure que le gain d'atténuation représenté en trait pointillé et correspondant au gain calculé pour le premier sous-signal comportant des composantes basses fréquences, comporte des fonctions de lissage comme décrit ci-dessus. Le gain d'atténuation représenté en trait plein et calculé pour le deuxième sous-signal comportant des composantes hautes fréquences, ne comporte pas de gain de lissage. 30 Le signal représenté en d) montre bien que le pré-écho a été atténué de façon efficace par le traitement d'atténuation mis en oeuvre. déterminés par sous-blocs 3025923 -21- La fonction de lissage est par exemple définie de préférence par les équations suivantes: .-1 g pre ,ssl (n) g pre,ssl (n - i) n = 0, - - - , L -1 u i=0 avec la convention que sont les derniers u-1 facteurs g pre,ssl (n) n = -(u -1), - , -1 d'atténuation obtenus pour les derniers échantillons du sous-bloc précédent du sous-signal 5 X rec ,ssl (n) . Typiquement u = 5 mais une autre valeur pourrait être utilisée. En fonction du lissage utilisé, la zone de pré-écho (le nombre des échantillons atténués) peut donc être différente pour les 2 sous-signaux traités séparément, même si la détection de l'attaque est faite en commun sur la base du signal décodé. Le facteur d' atténuation lissé ne remonte pas à 1 au moment de l' attaque, ce qui 10 implique une diminution de l'amplitude de l'attaque. L'impact perceptible de cette diminution est très faible mais doit néanmoins être évité. Pour pallier à ce problème la valeur de facteur d'atténuation peut être forcée à 1 pour les u-1 échantillons précédant l'indice pos où se situe le début de l'attaque. Ceci est équivalent à avancer le marqueur pos de u-1 échantillons pour le sous signal où le lissage est appliqué. Ainsi la fonction de lissage 15 accroît progressivement le facteur pour avoir une valeur 1 au moment de l'attaque. L'amplitude de l' attaque est alors préservée. Dans ce mode de réalisation avec décomposition du signal, la vérification de l'augmentation de l'énergie de la zone de pré-écho selon l'invention est réalisée pour au moins un sous-signal ou pour chacun de ces sous-signaux. 20 Le seuil de comparaison utilisé peut être différent selon les sous-signaux et selon le nombre de sous-blocs disponibles avant l'attaque. Si dans au moins un sous-signal le coefficient directeur normalisé bh, est inférieur au seuil de ce sous-signal, on inhibe l'atténuation des pré-échos pour l'ensemble des sous-signaux. 25 En cas de pré-écho dans un signal issu d'une transformée MDCT inverse l'énergie du composant pré-écho augmente ou est au moins stable dans tous les sous-signaux. L'inhibition de traitement de pré-écho peut être faite par exemple en mettant les facteurs d'atténuations à 1 ou en ne discriminant pas la zone comme zone de pré-écho, le module de traitement d'atténuation de pré-écho n'étant alors pas sollicité comme illustré à titre 30 d'exemple dans le mode de réalisation de la figure 5 par le lien entre le bloc 604 et 602. Dans des variantes, l'atténuation sera inhibée séparément pour chaque sous-signal dès que le coefficient directeur normalisé bh, est inférieur au seuil de ce sous-signal. 3025923 -22- L'inhibition pourra être par exemple mise en oeuvre en mettant les facteurs d' atténuation à 1 ou en ne sollicitant pas le module de pré-écho pour le sous-signal considéré. Ainsi, dans le mode de réalisation particulier décrit ci-dessus avec décomposition en deux sous-signaux, si le nombre de sous-blocs avant l'attaque permet de faire cette 5 vérification, on vérifie dans les deux sous-signaux l'évolution de l'énergie des sous-blocs précédant le sous-bloc où l' attaque a été détectée, par régression linéaire. Cette vérification peut être faite selon les étapes E603 et E604, à n' importe quel moment après la division du signal décodé en sous-signaux (E605) et avant l' application des facteurs d' atténuation des pré-échos (E607). La vérification est possible si au moins deux sous-blocs précèdent le sous- 10 bloc où l'attaque a été détectée. Si l' attaque est détectée dans le premier ou deuxième sous- bloc la vérification selon l'invention n'est pas possible. Dans des variantes, on pourra ré-utiliser le(s) coefficient(s) directeur(s) éventuellement calculé(s) dans la trame précédente si l'attaque est détectée dans le premier ou deuxième sous-bloc de la trame courante. 15 Si l' attaque est détectée dans le troisième sous-bloc on dispose alors de l'énergie de deux sous-blocs dans la zone de pré-écho pour faire cette vérification. Par expérience, avec deux points, la vérification n'est pas suffisamment fiable dans le sous-signal basse-fréquence x',,'1(n). On vérifie alors uniquement le sous-signal haute-fréquence x',,'2 (n) et uniquement que l'énergie ne diminue pas. Le coefficient directeur du sous-signal haute- 20 fréquence x',,'2 (n) est comparé au seuil de valeur O. Seul son signe est important ici, il n'est pas nécessaire de faire une normalisation. Il suffit donc de calculer à l'étape E603 un coefficient directeur simple (sans normalisation) comme: btssz = Enssz (1) - Enssz (0) Si b1'2 est inférieur à 0, l'atténuation des pré-échos pour cette zone de pré-écho est inhibé pour l'ensemble des sous-signaux. 25 Si l' attaque est détectée dans le quatrième sous-bloc ou un sous-bloc d'indice supérieur à 4, on vérifie l'évolution de l'énergie des derniers 3 sous-blocs dans la zone de pré-écho précédant le sous-bloc où l'attaque a été détectée. Le coefficient directeur du sous- signal basse-fréquence x',,', (n) est comparé à 0, seul son signe est important et il n'est pas nécessaire de normaliser ce coefficient. Il suffit donc de calculer un coefficient directeur 3025923 -23- simple. Si l' attaque a été détectée dans le sous-bloc de l'indice id avec id >= 3 on détermine ce coefficient comme : b1551 = En(id - 1) - Enss2(id - 3) Si b1'1 est inférieur à 0 on inhibe l'atténuation des pré-échos pour cette zone de pré-écho, et pour l'ensemble des sous-signaux. 5 Le coefficient directeur du sous-signal haute-fréquence xrec,'2 (n) est comparé à un seuil de valeur 0.2. On calcule le coefficient directeur normalisé. Si l'attaque a été détectée dans le sous-bloc de l'indice id avec id >= 3 on détermine ce coefficient comme : btrissz = 2(Enss2(id - 1) + Enss2(id - 2) + Enss2(id - 3)) Si b1nss2 est inférieur à 0.2 on inhibe l'atténuation des pré-échos pour cette zone de pré-écho, et pour l'ensemble des sous-signaux. 10 A noter que la condition 3 (Enss2(id - 1) - Enss2(id - 2)) REVENDICATIONS1. Procédé de discrimination et d'atténuation de pré-écho dans un signal audionumérique dans lequel, pour une trame courante décomposée en sous-blocs, les sous-blocs de faible énergie précédant un sous-bloc dans lequel une transition ou attaque est détectée (E601) déterminent une zone de pré-écho (E602) dans laquelle un traitement d'atténuation de pré-écho est effectué (E607), le procédé étant caractérisé en ce qu'il comporte les étapes suivantes: - calcul (E603) d'un coefficient directeur des énergies pour au moins deux sous-blocs précédant le sous-bloc dans lequel une attaque est détectée; - comparaison (E604) du coefficient directeur à un seuil prédéfini; et - inhibition (E602) du traitement d'atténuation de pré-écho dans la zone de pré-écho dans le cas où le coefficient directeur calculé est inférieur au seuil prédéfini. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comporte en outre une étape de décomposition du signal audionumérique en au moins deux sous-signaux en fonction d'un critère fréquentiel et en ce que les étapes de calcul de comparaison sont effectuées pour au moins un des sous-signaux. 3. Procédé selon la revendication 1, caractérisé en ce qu'il comporte en outre une étape de décomposition du signal audionumérique en au moins deux sous-signaux en fonction d'un critère fréquentiel et en ce que les étapes de calcul et de comparaison sont effectuées pour chacun des sous-signaux, l'inhibition du traitement d'atténuation de pré-écho dans la zone de pré-écho de tous les sous-signaux s'effectuant quand un coefficient directeur calculé est inférieur au seuil prédéfini pour au moins un sous-signal. 4. Procédé selon la revendication 3, caractérisé en ce qu'un seuil différent est défini par sous-signal. 5. Procédé selon l'une des revendications 1 à 4, caractérisé en ce que le coefficient directeur est calculé selon une méthode d'estimation des moindres carrés. 6. Procédé selon l'une des revendications 1 à 5, caractérisé en ce que le coefficient directeur est normalisé. 3025923 -26- 7. Dispositif de discrimination et d'atténuation de pré-écho dans un signal audionumérique comportant un module de détection (601) de transition ou attaque, un module de discrimination de zone de pré-écho (602) et un module de traitement d'atténuation de 5 pré-écho (607), un traitement d'atténuation d'écho étant effectué pour une trame courante décomposée en sous-blocs, dans les sous-blocs de faible énergie précédant un sous-bloc dans lequel une transition ou attaque est détectée déterminant une zone de pré-écho, le dispositif étant caractérisé en ce qu'il comporte en outre: - un module de calcul (603) calculant un coefficient directeur des énergies pour au moins 10 deux sous-blocs précédant le sous-bloc dans lequel une attaque est détectée; - un comparateur (604) apte à effectuer une comparaison du coefficient directeur à un seuil prédéfini; et -un module de discrimination (602) apte à inhiber le traitement d'atténuation de pré-écho dans la zone de pré-écho dans le cas où le coefficient directeur calculé est inférieur au 15 seuil prédéfini. 8. Décodeur de signal audionumérique comportant un dispositif de discrimination et d'atténuation de pré-écho selon la revendication 7. 20 9. Programme informatique comportant des instructions de code pour la mise en oeuvre des étapes du procédé selon l'une des revendications 1 à 6, lorsque ces instructions sont exécutées par un processeur. 10. Support de stockage lisible par un dispositif de discrimination et de traitement 25 d'atténuation de pré-écho sur lequel est enregistré un programme informatique comprenant des instructions de code pour l'exécution des étapes du procédé de discrimination et de traitement d'atténuation de pré-écho selon l'une des revendications 1 à 6. 30