Brevet FR2814875A1 — publié le 20020405

La présente invention concerne les systèmes de télécommunications et, plus particulièrement, un calculateur et un procédé de calcul de niveau de bruit servant à détecter le bruit dans un annulateur d'écho de ligne téléphonique. On connaît, dans le domaine de la conception des annulateurs d'écho de ligne qui utilisent des filtres adaptatifs, le moyen qui consiste à incorporer un processeur non linéaire (NLP, d'après "non-linear processor") servant à supprimer des signaux d'écho résiduels (qui sont par exemple dus à la non-linéarité, à des distorsions ou à du bruit de signal ajouté). Pour éviter que la commutation de bruit ne soit entendue à l'extrémité éloignée, il est important de calculer le niveau de bruit du signal appliqué au NLP pour pouvoir distinguer entre bruit et écho résiduel. Il est aussi utile de calculer le niveau de bruit pour déterminer si le signal de référence appliqué au filtre adaptatif est un bruit ou un segment dépourvu de bruit. Si du bruit est détecté, on peut alors supprimer la mise à jour des coefficients de filtrage. Selon l'invention, il est proposé un procédé de calcul et un calculateur de bruit permettant de contrôler le niveau de bruit du signal d'erreur appliqué au NLP et le niveau de bruit du signal de référence appliqué au filtre adaptatif, afin d'atteindre les buts exposés cidessous. Au contraire des détecteurs de bruit de la technique antérieure qui suivent non seulement les segments de bruit, mais aussi le niveau du signal et qui concluent que le niveau de bruit est directement proportionnel à l'énergie de signal accumulée la plus basse, le procédé de calcul et le calculateur de niveau de bruit selon l'invention utilisent la variance de l'énergie du signal pour déterminer le niveau de bruit de fond. Par conséquent, le procédé de calcul et le calculateur de niveau de bruit selon l'invention localisent réellement les périodes de bruit et adaptent les changements de la variance de l'énergie de bruit pendant ces périodes. Selon l'invention, il est proposé un procédé de calcul du niveau de bruit dans un signal comprenant les opérations suivantes: accumuler deux fenêtres d'échantillons dudit signal; calculer l'énergie dudit signal à l'intérieur de chacune desdites fenêtres d'échantillons; calculer la différence existant dans ladite énergie dudit signal à l'intérieur de chacune desdites fenêtres d'échantillons; mettre à jour un paramètre de variance sur la base de ladite différence; dans le cas o ledit paramètre de variance est inférieur à un multiple prédéterminé de l'énergie dudit signal à l'intérieur de la plus récente desdites fenêtres d'échantillons, alors, indiquer la présence de bruit et positionner un paramètre de niveau de bruit en fonction de l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons, et, dans le cas o ledit paramètre de variance est inférieur ou égal audit multiple prédéterminé de l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons, alors, indiquer l'absence de bruit dans ladite fenêtre d'échantillons la plus récente; et dans le cas o ledit paramètre de niveau de bruit dépasse l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons, alors, positionner ledit paramètre de niveau de bruit afin qu'il soit égal à l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons. Selon un mode de réalisation particulier, le procédé comprend en outre les opérations consistant à écarter deux fenêtres successives desdites fenêtres d'échantillons au début et pour chaque première fenêtre suivante desdites deux fenêtres d'échantillons successives qui dépasse une énergie maximale prédéterminée. Selon un autre mode de réalisation particulier, ladite opération de mise à jour dudit paramètre de variance comprend les opérations suivantes: comparer ledit paramètre de variance à ladite différence existant dans ladite énergie dudit signal à l'intérieur de chacune desdites fenêtres d'échantillons et positionner ledit paramètre de variance sur la moyenne pondérée de la différence et d'une valeur précédente du paramètre de variance; et dans le cas o ledit paramètre de variance est supérieur à ladite différence, alors, ajuster ledit paramètre de variance avec un rapport d'amortissement prédéterminé et, dans le cas o ledit paramètre de variance est inférieur ou égal à ladite différence, alors, ajuster ledit paramètre de variance avec un rapport d'attaque prédéterminé. Selon un autre mode de réalisation particulier, ladite opération de positionnement du paramètre de niveau de bruit en fonction de l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons comprend en outre l'opération consistant à positionner ledit paramètre de niveau de bruit sur la moyenne pondérée de l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons et d'une valeur précédente dudit paramètre de niveau de bruit. La description suivante, conçue à titre d'illustration de l'invention, vise à donner une meilleure compréhension de ses caractéristiques et avantages; elle s'appuie sur les dessins annexés, parmi lesquels: la figure 1 est un schéma fonctionnel d'un annulateur d'écho de ligne employant le procédé de calcul et le calculateur de niveau de bruit de l'invention; et les figures 2A et 2B représentent un organigramme qui montre les étapes de la mise en oeuvre du procédé de calcul et du calculateur de niveau de bruit selon le mode de réalisation préféré. Sur la figure 1, est représenté un annulateur d'écho de ligne (LEC, d'après "Line Echo Canceller") qui sert à annuler les signaux d'écho venant d'un trajet d'écho de ligne (entre Sin_line et Rin_line). Un algorithme de filtrage adaptatif (typiquement l'algorithme LMS adaptatif bien connu) est mis en ceuvre dans le bloc logique de commande 9 de façon à effectuer la fonction d'annulation d'écho. Le signal de sortie du filtre adaptatif est soustrait, à l'intérieur du bloc d 'addition 3, du signal de ligne d'entrée (Sin_line) de façon à créer un signal d'erreur (ein). Comme discuté ci-dessus, un NLP, à savoir un processeur non linéaire, est prévu pour retirer les signaux d'écho résiduels dus à la non-linéarité, les distorsions, le bruit de signal ajouté, etc. Il est prévu un détecteur de double parole, c'est-à-dire de superposition de signaux vocaux, 11 pour invalider le NLP 5 pendant une situation de double parole (c'est-à-dire lorsque le correspondant placé à l'extrémité proche commence de parler, auquel cas le signal est constitué d'une parole venant de l'extrémité proche à laquelle s'ajoute un écho venant de l'extrémité éloignée). Selon l'invention, un calculateur 13 de niveau de bruit est prévu pour contrôler de manière continue le niveau de bruit en ce qui concerne le signal d'erreur ein ainsi que le signal de référence Rin_line. Le niveau de bruit du signal d'erreur est utilisé par le composant NLP 5 pour déterminer si l'échantillon est fait de bruit ou d'écho résiduel. Si un bruit est détecté, il est transmis tel quel, mais si un écho résiduel est détecté, le NLP 5 produit un échantillon de bruit. Le niveau de bruit du signal de référence est utilisé par l'algorithme de filtrage adaptatif contenu dans le bloc de commande 9 pour déterminer si le signal est une parole ou un bruit. S'il s'agit d'un bruit, les coefficients de l'annulateur d'écho ne sont pas mis à jour. On passe maintenant à la figure 2, qui présente un algorithme préféré de mise en oeuvre du procédé de calcul et du calculateur de niveau de bruit selon l'invention. Les équations de la figure 2 sont écrites en vue de performances optimales dans un compilateur C. Deux signaux d'entrée sont nécessaires pour cette mise en oeuvre, à savoir un signal d'entrée, xin, et un paramètre de décision quant à la tonalité, décision_tonalité. L'état interne du calculateur de niveau de bruit et ses variables locales sont contenus dans un espace de travail local (à savoir la structure de niveau de bruit présentée ci-dessous). La même fonction est utilisée pour calculer le niveau de bruit du signal de référence, Rin_line, et le signal d'erreur, ein du LEC de la figure 1. L'échantillon d'entrée, soit xin, servant à chaque mise en oeuvre du calculateur de bruit est choisi de façon à être ein ou Rin_line. La structure de niveau de bruit et les variables locales nécessaires pour chacune de ces mises en oeuvre sont les suivantes, comme utilisé sur la figure 2. Structure(*NiveauBruit): (*NiveauBruit).comptage: il s'agit d'un compteur relatif à la fenêtre de l'échantillon (*NiveauBruit).niveau: ceci représente le niveau de bruit (*NiveauBruit).accum[O] accumulation courante de signal d'entrée (*NiveauBruit).accum[1] accumulation précédente de signal d'entrée (*NiveauBruit).variance: variance de l'accumulation (*NiveauBruit).drapeau_non_mise_àjour: drapeau de fenêtre non valable, le niveau de bruit n'est pas mis à jour xin échantillon d'entrée diff: différence entre les accumulations précédente et courante décision_tonalité: le drapeau vaut 1 si le signal est une tonalité nniveau_comptage: nombre d'accumulations avant que le niveau de bruit soit mis à jour. L'algorithme de l'invention s'appuie sur l'hypothèse selon laquelle la variance d'énergie d'un segment de bruit est très inférieure à la variance d'énergie d'un segment de signal vocal. Après détermination du fait qu'aucune tonalité n'est présente (étape A), les échantillons compris à l'intérieur d'une fenêtre de 256 échantillons (32 ms) sont accumulés (c'est-à-dire que l'énergie du signal comprise à l'intérieur de la fenêtre est calculée). ((*NiveauBruit).accum[O] = (*NiveauBruit). accum[O]+abs(xin) à l'étape B). Lorsque la fenêtre est terminée ((NiveauBruit).comptage>taille_fenêtre ?, à l'étape D), le niveau de bruit est mis à jour et le résultat est sauvegardé en mémoire. Il est important que l'accumulation d'échantillons ne dépasse pas un niveau maximal (limite (*NiveauBruit).accum[O] à limite_max, à l'étape C) afin d'assurer que les calculs de variance et de niveau de bruit ne seront pas corrompus. Dans le cas o l'accumulation n'est pas valable (Oui (l'accumulation est non valable), à l'étape D), le niveau de bruit n'est pas évalué pour les deux fenêtres suivantes (du fait que le drapeau est positionné à (*NiveauBruit).drapeaunon_mise_àjour = 2, à l'étape C, puis est décrémenté deux fois (*NiveauBruit).drapeau_non_mise- à_jour = 1, à l'étape D). Deux fenêtres sont considérées comme non valables au début ainsi que lorsque la limite maximale a été atteinte. Elles ne sont pas utilisées, de façon que l'historique des accumulations soit respectivement rempli ou effacé. Lorsque deux accumulations valables d'échantillons sont disponibles, on calcule la différence, que l'on utilise ensuite pour mettre à jour la variance de ces accumulations ainsi qu'une moyenne pondérée de la différence et des valeurs précédentes du paramètre variance (c'est-à- dire que (*NiveauBruit).variance+=(diff-(*NiveauBruit). variance)>>3 ajuste le paramètre de variance sur le paramètre de variance existant (précédent) plus un multiple (+8) de la différence (diff) moins le paramètre de variance précédent, et (*NiveauBruit).variance = diff ajuste le paramètre de variance sur le paramètre de variance précédent. Ainsi, dans le mode de réalisation de la figure 2, la variance est calculée/mise à jour avec un rapport d'attaque de 1 et un rapport d'amortissement de 8 (c'est-à-dire >>3 à l'étape E). Ces rapports d'attaque et d'amortissement sont choisis empiriquement de façon que le niveau de bruit ne soit pas mis à jour pendant des périodes courtes d'énergie basse (c'est-à-dire liées à des fricatives dans un segment de signal vocal). En variante, on peut choisir d'autres rapports d'attaque et d'amortissement qui conviennent à des applications différentes. Par conséquent, le rapport d'attaque est agressif et le rapport d'amortissement est plus lent que le rapport d'attaque. Lorsque la variance diminue jusqu'au niveau d'accumulation divisé par un facteur d'échelle prédéterminé ((*NiveauBruit).variance >3? à l'étape E), l'accumulation courante est considérée comme faisant partie d'un segment de bruit. Ce facteur (très supérieur à 3, = 8 à l'étape E) est choisi après comparaison du rapport entre différents niveaux de bruit et des variances correspondantes des accumulations. Lorsqu'il a été déterminé que l'accumulation est du bruit (étape F), le niveau de bruit est calculé/mis à jour avec un rapport d'amortissement de 8 (c'est-à-dire très supérieur à 3 à l'étape F). On peut choisir un rapport d'amortissement autre que 8 dans le cas d'applications différentes. Si le niveau de bruit est supérieur à l'accumulation, on repositionne le niveau de bruit sur la valeur d'accumulation courante (étape G). Ceci est fait pour assurer que le calculateur de niveau de bruit tend vers le niveau de bruit le plus faible possible. Enfin, certaines variables sont réinitialisées en vue de la fenêtre d'accumulation suivante (étape H). Il faut noter que, pour le signal ein, le niveau de bruit est multiplié par un facteur de 0,013 (soit 3,3/256, sachant que 256 est la taille de la fenêtre) avant d'être comparé à un échantillon réel. Pour le signal Rin_line, le niveau de bruit est multiplié par un facteur de 0,2 (soit 50/256), qui se trouve sur le côté haut du seuil de bruit. Des variantes et des modifications selon l'invention sont possibles. Par exemple, on peut faire appel à des calculs d'énergie réels au lieu de prendre la vapeur absolue des échantillons à l'étape B, on peut utiliser des tailles de fenêtre différentes, et on peut spécifier des rapports d'attaque et d'amortissement différents pour la mise à jour de la variance (étape E). De plus, il est envisagé de pouvoir également utiliser l'algorithme selon l'invention pour détecter des signaux vocaux (c'est-à- dire l'absence de bruit) et de pouvoir appliquer l'opération à un générateur de bruit de confort servant à la suppression du silence. Bien entendu, I'homme de l'art sera en mesure d'imaginer, à partir du procédé et du dispositif dont la description vient d'être donnée à titre simplement illustratif et nullement limitatif, diverses autres variantes et modifications ne sortant pas du cadre de l'invention. REVENDICATIONS 1. Procédé de calcul du niveau de bruit dans un signal, caractérisé en ce qu'il comprend les opérations suivantes accumuler deux fenêtres d'échantillons dudit signal; calculer l'énergie dudit signal à l'intérieur de chacune desdites fenêtres d'échantillons (étape A); calculer (étape E) la différence existant dans ladite énergie dudit signal à l'intérieur de chacune desdites fenêtres d'échantillons; mettre à jour un paramètre de variance sur la base de ladite différence; dans le cas o ledit paramètre de variance est inférieur à un multiple prédéterminé de l'énergie dudit signal à l'intérieur de la plus récente desdites fenêtres d'échantillons, alors, indiquer la présence de bruit et positionner un paramètre de niveau de bruit en fonction de l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons, et, dans le cas o ledit paramètre de variance est inférieur ou égal audit multiple prédéterminé de l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons, alors, indiquer l'absence de bruit dans ladite fenêtre d'échantillons la plus récente; et dans le cas o ledit paramètre de niveau de bruit dépasse l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons, alors, positionner ledit paramètre de niveau de bruit afin qu'il soit égal à l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre les opérations consistant à écarter deux fenêtres successives desdites fenêtres d'échantillons au début et pour chaque première fenêtre suivante desdites deux fenêtres d'échantillons successives qui dépasse une énergie maximale prédéterminée. 3. Procédé selon la revendication 1, caractérisé en ce que ladite opération de mise à jour dudit paramètre de variance comprend les opérations suivantes: comparer ledit paramètre de variance à ladite différence existant dans ladite énergie dudit signal à l'intérieur de chacune desdites fenêtres d'échantillons et positionner ledit paramètre de variance sur la moyenne pondérée de la différence et d'une valeur précédente du paramètre de variance; et dans le cas o ledit paramètre de variance est supérieur à ladite différence, alors, ajuster ledit paramètre de variance avec un rapport d'amortissement prédéterminé et, dans le cas o ledit paramètre de variance est inférieur ou égal à ladite différence, alors, ajuster ledit paramètre de variance avec un rapport d'attaque prédéterminé. 4. Procédé selon la revendication 1, caractérisé en ce que ladite opération de positionnement du paramètre de niveau de bruit en fonction de l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons comprend en outre l'opération consistant à positionner ledit paramètre de niveau de bruit sur la moyenne pondérée de l'énergie dudit signal à l'intérieur de ladite plus récente desdites fenêtres d'échantillons et d'une valeur précédente dudit paramètre de niveau de bruit.