Brevet FR2795890A1 — publié le 20010105

Procédé de compression d'un signal numérique La présente invention a pour objet un procédé de compression d'un signal numérique. Le domaine de l'invention est la téléphonie mobile et les kits mains libres, ou toute autre application dans laquelle on doit diffuser acoustiquement un signal dont les pics peuvent saturer un amplificateur de puissance. Le but de l'invention est d'augmenter le confort d'utilisation du téléphone mobile, en atténuant les éclats de voix d'un interlocuteur qui provoquent des grésillements dus à une saturation d'un amplificateur de puissance. Dans l'état de la technique un téléphone mobile reçoit un signal radioélectrique de voix par un aérien. Ce signal est démodulé puis numérisé, transformé en un signal analogique de voix et enfin diffusé. Dans le cadre de l'utilisation d'une fonctionnalité mains libres le signal analogique de voix est amplifié par un amplificateur de puissance avant sa diffusion par un haut- parleur. La puissance moyenne admissible par ce haut-parleur sans distorsions est de 200 milliwatts. Au cours d'une conversation il peut se produire des éclats de voix. Ces éclats de voix entraînent une augmentation de la dynamique de sortie de l'amplificateur de puissance de 20 dB. L'amplificateur fonctionne donc en saturation pendant ces éclats de voix. Cela provoque des grésillements et autres bruits désagréables dans le haut-parleur. La solution évidente pour éviter ces désagréments est de dimensionner l'amplificateur de puissance de telle sorte qu'il puisse passer ces pics de signal. Cependant cela entraînerait à un accroissement à la fois du coût, de l'encombrement et de la consommation d'un téléphone mobile. Cela n'est pas acceptable. L'invention résout ces problèmes en conservant un amplificateur de puissance de l'ordre de 200 milliwatts, et en utilisant un procédé visant à éliminer les sauts subits d'amplitude du signal vocal dans le signal numérique de données vocales. On applique sur chaque échantillon du signal vocal numérique un facteur correctif dépendant de la valeur de l'échantillon, d'un seuil à ne pas dépasser pour ne pas saturer l'amplificateur de puissance et des échantillons voisins. On limite ainsi la distorsion et on supprime les bruits désagréables. L'invention a donc pour objet un procédé de compression d'un signal numérique dans lequel - on analyse le signal sur une fenêtre temporelle comportant N échantillons du signal, - on calcule la nouvelle valeur d'un échantillon courant à partir des résultats de cette analyse, caractérisé en ce que - on recherche des maxima locaux d'amplitudes M1, M2,... Mn du signal supérieur à un seuil d'amplitude S dans la fenêtre et on les mémorise, - on détermine un facteur, et ou un décalage, à appliquer à la valeur de l'échantillon courant en fonction de son écart temporel par rapport aux maxima trouvés, - on applique le facteur, et ou le décalage, à l'échantillon courant afin que les maxima du signal résultant n'excède pas le seuil S. L'invention sera mieux comprise à la lecture de la description qui suit et à l'examen des figures qui l'accompagnent. Celles-ci ne sont présentées qu'à titre indicatif et nullement limitatif de l'invention. Les figures montrent - Figure 1 : une représentation d'un signal original et d'un signal traité dans une fenêtre temporelle contenant un maximum ; - Figure 2 : une représentation d'un signal original et du signal traité correspondant dans une fenêtre temporelle contenant deux maxima ; - Figure 3: une représentation fonctionnelle des éléments d'un téléphone mobile utile pour la mise en ceuvre du procédé selon l'invention ; - Figure 4 : une illustration des étapes du procédé selon l'invention. La figure 1 montre un graphe 100 ayant en abscisse l'échelle des temps et en ordonnée des amplitudes d'un signal de voix. Le graphe 100 montre une courbe 101 des amplitudes du signal de voix avant le traitement par un procédé selon l'invention, et la courbe 102 des amplitudes de la courbe 101 traitée par le procédé selon l'invention. Dans la fenêtre temporelle délimitée par les instants 103 (t,) et 104 (t2) la courbe 102 possède un maximum 105 d'amplitude Mi. Ce maximum est considéré comme tel car il est supérieur à un seuil 106 d'amplitude S. On considère un échantillon 107 en cours de traitement. Cet échantillon 107 a une amplitude E inférieure à M1 et l'échantillon 107 n'est pas un maximum de la courbe 101. Une fois traitée l'échantillon 107 aura une amplitude E'. Lorsque ce sera au tour de l'échantillon 105 ayant une amplitude maximum Mi d'être traité, celui-ci sera traité de manière à ce qu'il ait une amplitude corrigée de valeur S, afin de ne pas saturer un amplificateur de puissance dont le niveau maximal du signal admissible avant saturation est S. Les échantillons 105 et 107 sont séparés par une durée 108 (di). Cela implique que l'échantillon 105 et l'échantillon 107 ne sont pas corrigés de la même valeur. En effet l'échantillon 105 correspond au maximum, c'est donc lui qui est le plus corrigé. L'échantillon 107 étant éloigné de l'échantillon 105 maximum, il sera moins corrigé. Cela signifie que Mi - S est supérieur à E - E'. La correction apportée à l'échantillon E sera d'autant plus grande que la distance dl sera petite. Si la durée dl est suffisamment grande, l'échantillon E ne sera pas corrigé, du fait de la présence du maximum 105. La figure 2 montre un graphique avec en abscisse l'échelle des temps et en ordonnée une échelle d'amplitude d'échantillon. Le graphique montre une courbe 201 des amplitudes d'un signal de voix avant le traitement par le procédé selon l'invention. Le graphique montre aussi une courbe 202 des amplitudes du même signal de voix après le traitement par le procédé selon l'invention. La courbe 201 comporte dans une fenêtre temporelle délimitée par les instants 203 (ti) et 204 (t2) deux échantillons ayant des amplitudes maximales. Un premier échantillon 205 ayant une amplitude Ml et un deuxième échantillon 206 ayant une amplitude M2. L'amplitude M2 est supérieur à l'amplitude Ml. On considère l'échantillon courant 207 situé, dans la fenêtre temporelle, entre les échantillons 205 et 206. L'échantillon 207 a une amplitude E inférieur à Ml, et l'échantillon 207 n'est pas un maximum. Pour calculer la nouvelle valeur E' de l'échantillon 207, on prend en considération la correction qu'impliquerait sur l'échantillon 207, l'échantillon 206 s'il était seul, et la correction qu'impliquerait l'échantillon 205 sur l'échantillon 207 s'il était seul. On ne retient que la plus grande des deux corrections. Dans le cas présent la plus grande correction est celle due à l'échantillon 206. En effet M2 est supérieur à Ml et la distance temporelle 208 (d2) séparant les échantillons 207 et 206 n'est pas suffisamment grande pour qu'on puisse négliger, devant l'échantillon 205, les corrections dues à l'échantillon 206 sur l'échantillon 207. Dans cet exemple de la figure 2, on constate que la valeur corrigée des échantillons 205 est inférieure à l'amplitude S du seuil. Cela signifie que la correction apportée par l'échantillon 206 sur l'échantillon 205 était supérieure à celle apportée par l'échantillon 205 sur lui-même. On évite ainsi d'avoir tous les maxima d'une même fenêtre corrigée au seuil, et donc d'avoir un signal complètement lisse ne correspondant plus du tout au signal d'origine. La figure 3 montre un aérien 301 suivi d'une chaîne de numérisation 302 délivrant un signal numérisé 303. L'aérien 301 reçoit des signaux radiofréquence depuis une station de base par exemple. Le signal numérisé 303 est constitué d'échantillons. Chaque échantillon a une valeur représentant son amplitude dans le signal. Les échantillons correspondant à une fenêtre temporelle 304 sont stockées dans une mémoire 305. La mémoire 305 est gérée comme une pile, à savoir le premier échantillon qui y est stocké est le premier à en sortir. A chaque échantillon dans la mémoire 305 correspond un numéro 306 de 1 à N où N est le nombre d'échantillons, une valeur 307 représentant l'amplitude de l'échantillon, et un nombre 308 représentant la distance temporelle de cet échantillon au maximum suivant. Le nombre 308 d'un échantillon correspond au nombre qu'il faut ajouter au numéro 306 de cet échantillon pour arriver au nombre 306 d'un échantillon étant un maximum. Cela permet de repérer les maxima dans la mémoire 305. Un échantillon est un maximum si le nombre 308 de l'échantillon qui le précède est égal à 1. Ainsi en lisant le nombre 308 du premier échantillon de la mémoire on peut arriver au premier maximum de la mémoire. Puis en lisant le nombre 308 du premier maximum de la mémoire on arrive au deuxième maximum de la mémoire 305, et ainsi de suite. Les valeurs 307 et les distances 308 sont mises à jour au fur et à mesure que les échantillons entrent et sortent de la mémoire 305. La figure 3 montre aussi un microprocesseur 306, une mémoire 307 et un convertisseur numérique analogique 308. La mémoire 305 et les éléments 306 à 308 sont reliés entre eux par un bus 309. La sortie analogique du convertisseur numérique est connecté à un amplificateur de puissance 310 dont la sortie est connectée à un haut-parleur 311. La mémoire 307 contient le programme nécessaire au microprocesseur 306 pour exécuter le procédé selon l'invention. L'échantillon dont on calcule la nouvelle valeur est situé au milieu de la fenêtre 304. En effet pour calculer cette nouvelle valeur il faut connaître les échantillons environnant l'échantillon dont on calcule la nouvelle valeur. En effet si on se place sur un bord de la fenêtre 304 pour l'échantillon courant, on ignore une partie de l'information. Une fois traité par le microprocesseur 306 l'échantillon courant est transmis au convertisseur 308 numérique analogique afin d'être diffuser acoustiquement par le haut-parleur 311 après amplification par l'amplificateur 310. II y a donc un délai At entre le début de la fenêtre temporelle et le milieu de la fenêtre temporelle correspondant à l'échantillon courant, de retard entre l'arrivée de l'information correspondant à l'échantillon sur l'aérien 301 et la diffusion de cette information par le haut- parleur 311. II convient de trouver un compromis entre ce retard, la quantité de mémoire disponible et la qualité du traitement souhaité. Dans la pratique on utilise une fenêtre temporelle qui dure 10 millisecondes. Donc le retard est de 5 millisecondes. Ce retard n'est donc pas perturbant pour l'utilisateur, et les informations ainsi stockées permettent un traitement satisfaisant. Les résultats sont encore satisfaisants si on considère une fenêtre temporelle dont la durée peut varier de 5 millisecondes à 20 millisecondes. La figure 4 montre une étape 401 préliminaire de recherche des maxima. Avec la structure de mémoire 305 décrite, la recherche des maxima peut s'effectuer au fur et à mesure que les échantillons rentrent dans la mémoire 305. On note A1 la valeur de l'échantillon qui rentre dans la mémoire, A2 la valeur du précédent échantillon qui vient de rentrer dans la mémoire, ..., AN la valeur du dernier échantillon de la mémoire. Si A1 est supérieur à A2, A2 n'est pas un maximum. Si A1 est inférieur à A2, on compare A2 à A3. Si A2 est supérieur à A3, A2 est un maximum. Si A2 est supérieur à A3, A2 n'est pas un maximum. Au moment où A1 entre dans la mémoire, on est donc en mesure de dire si A2 est un maximum ou pas. Si A2 est un maximum la distance séparant A1 du maximum suivant est égale à 1. Si A2 n'est pas un maximum, la distance séparant A1 du maximum suivant est égale à la distance séparant A2 du maximum suivant plus 1. Si la distance séparant A1 du maximum suivant est supérieure à N cela signifie qu'il n'y a pas de maximum dans la fenêtre temporelle. Pour éviter les effets de dépassement de dynamique, on limite la distance séparant un échantillon du maximum le plus proche à N+1. Si on obtient pour l'échantillon entrant une distance égale à N+2. Alors on impose à cette distance d'être égale à N+1. En effet cela suffit pour signifier qu'il n'y a pas de maximum dans la fenêtre temporelle. Avant d'établir la communication, toutes les valeurs des échantillons de la mémoire ont été mises à zéro, et la distance du premier échantillon de la mémoire au maximum suivant est égale à N+1, ce qui signifie qu'il n'y a pas de maximum dans la mémoire. Pour la détection de maximum s'il se produit le cas où A2 est égal à A3, alors on compare A3 à A4. Et ainsi de suite en se fixant une distance temporelle maximum pour un palier. Par exemple dix échantillons. Si des échantillons A2 à A9 sont égaux, alors on considère que A2 est un maximum. Cette procédure de détection de maximum n'est effectuée que si A1 et A2 sont supérieurs à S. C'est-à-dire s'il est utile d'effectuer un traitement sur les échantillons d'amplitude A1 et A2. On passe dans une phase 402 d'initialisation du facteur de correction. On initialise la valeur de ce facteur à F = 1. On passe alors dans une étape 403 dans laquelle on détermine s'il y au moins un maximum dans la fenêtre temporelle. Pour qu'il y ait un maximum dans la fenêtre temporelle il suffit que la distance séparant le premier échantillon du maximum suivant soit différente de N+1, sinon il n'y a pas de maximum dans la fenêtre temporelle. S'il n'y a pas de maximum dans la fenêtre temporelle, on passe directement à l'étape 408 de calcul de la nouvelle valeur de l'échantillon courant. Cette nouvelle valeur E' est obtenue en multipliant la valeur E de l'échantillon courant par le facteur de correction F. Dans ce cas l'échantillon n'est pas modifié puisque F = 1. II sera donc transmis tel que au convertisseur numérique analogique puis diffusé par le haut-parleur. S'il y a un maximum dans la fenêtre temporelle, on passe à une étape 404 de calcul du meilleur facteur de correction à appliquer à l'échantillon. Dans l'étape 404 on calcule la moyenne des maxima de la fenêtre temporelle. Une fois cette moyenne calculée on passe à une étape 405 de calcul du facteur de correction F. F est égal au rapport R de S sur la moyenne qui vient d'être calculée, multiplié par un facteur fonction de la distance de l'échantillon courant et de la distance de cet échantillon au maximum le plus proche. Appelons fd le facteur de correction du rapport R de la valeur S du seuil sur la moyenne M en fonction de la distance séparant l'échantillon courant du maximum le plus proche. Alors Fd est une fonction croissante de la distance. Quand la distance ente l'échantillon courant et le maximum le plus proche est nulle Fd vaut 1, ainsi la correction maximum est apportée à l'échantillon. Quand la distance et l'échantillon courant et la maximum le plus proche est grande, Fd vaut 1!R, ainsi la correction apportée est inexistante. Dans la pratique, si on considère une courbe avec en abscisse les distances, et en ordonnés le facteur Fd, alors on peut tracer une droite entre les points de coordonnées (0 ; 1), et (Dmax ; 1!R). Dans cette droite Dmax représente la distance maximum à laquelle on souhaite qu'un maximum de la fenêtre temporelle agisse. L'équation de cette droite est alors fd (x) = pour jxj (x) =1 I R, pour jxj > Dmax on obtient alors que F est le produit de fd par R et Fd est la valeur de fd pour x valant la distance temporelle de l'échantillon courant au maximum le plus proche. On passe à l'étape 408 de calcul de la nouvelle valeur de l'échantillon courant. La méthode qui vient d'être décrite corrige les échantillons par rapport à la moyenne des maxima de la fenêtre temporelle. Cela signifie que certains maxima de la fenêtre temporelle seront corrigés en dessous du seuil, alors que d'autres seront corrigés au-dessus. On conservera bien la forme générale du signal, mais il subsistera un peu de distorsions. Cependant l'intérêt de cette méthode réside dans le peu de calcul qu'elle demande. Dans une variante de l'invention on remplace les étapes 404 à 407 par les étapes 414 à 417. Dans une étape 414 on calcule le facteur de correction de l'échantillon courant par rapport au premier maximum de la fenêtre temporelle. Ce calcul s'effectue de la même manière que pour la correction par rapport à la moyenne, si ce n'est que dans le rapport R on remplace la moyenne par la valeur du maximum considéré. On obtient ainsi un facteur de correction temporaire Ft. On passe à une étape 415. Dans l'étape 415 on compare le facteur Ft au facteur F. Si le facteur Ft est supérieur à F alors on passe à une étape 416. Dans l'étape 416 on ne fait qu'affecter la valeur de Ft à F. Puis on passe à une étape 417 dans laquelle on détermine s'il reste encore des maxima dans la fenêtre temporelle. S'il reste des maxima on repasse à l'étape 414, sinon on passe à l'étape 408 de calcul d'une nouvelle valeur de l'échantillon. Le parcours des maxima est simple, en effet il suffit à partir du premier échantillon de la mémoire d'ajouter la distance de cet échantillon au maximum suivant à l'indice de l'échantillon pour parvenir au maximum suivant. Pour savoir si l'échantillon courant est un maximum, il suffit de regarder si l'échantillon qui le précède dans la mémoire à une distance à l'échantillon au maximum le plus égal à 1. Si c'est le cas, cela signifie que l'échantillon courant st un maximum est un maximum. De l'étape 408 on passe à l'étape 410 de suite. Cette étape correspond à l'entrée d'un nouvel échantillon dans la mémoire, donc à la sortie de l'échantillon N de la mémoire. Puis on recommence à l'étape 401. Dans la pratique, pour éviter des effets de bord, on considère que le premier et le dernier échantillon de la fenêtre temporelle sont des maxima, si leurs valeurs sont supérieures à la valeur S du seuil. REVENDICATIONS 1 - Procédé de compression d'un signal numérique dans lequel - on analyse (401-405) le signal sur une fenêtre (304) temporelle comportant N échantillons du signal, - on calcule (408) la nouvelle valeur d'un échantillon courant EC à partir des résultats de cette analyse, caractérisé en ce que - on recherche (401) des maxima locaux d'amplitudes M1, M2,... Mn du signal supérieur à un seuil (106) d'amplitude S dans la fenêtre et on les mémorise, - on détermine (405) un facteur, et ou un décalage, à appliquer à la valeur de l'échantillon courant en fonction de son écart temporel par rapport aux maxima trouvés, - on applique (408) le facteur, et ou le décalage, à l'échantillon courant afin que les maxima du signal résultant n'excède pas le seuil S. 2 - Procédé selon la revendication 1, caractérisé en ce que le signal à compresser est un signal de voix avant amplification par un amplificateur (310) de puissance dans des moyens (306-311) de mise en oeuvre d'une fonctionnalité main libre pour un téléphone mobile. 3 - Procédé selon l'une des revendications 1 ou 2, caractérisé en ce qu'on prévoit que l'échantillon (105, 207) courant est au milieu de la fenêtre. 4 - Procédé selon l'une des revendications 1 à 3, caractérisé en ce que pour évaluer l'écart temporel entre deux échantillons E1 (207) et E2 (206) on compte le nombre d'échantillons compris entre E1 et E2. 5 - Procédé selon l'une des revendications 1 à 4, caractérisé en ce que pour calculer la correction à appliquer à l'échantillon courant EC: - on calcule (404) la moyenne Moy des amplitudes des maxima locaux mémorisés, - on calcule un rapport R = S/Moy - on calcule pour chaque maximum Mi mémorisé un facteur Fd qui est fonction de R et d'un écart temporel di séparant EC de Mi dans la fenêtre, - on choisit un Fmax le plus grand parmi les Fd, - on calcule une nouvelle valeur E' de l'échantillon courant EC, fonction de Fmax et de E, valeur initiale de l'échantillon EC, soit E' = Fmax x E. 6 - Procédé selon l'une des revendications 1 à 4, caractérisé en ce que pour calculer la correction à appliquer à l'échantillon courant EC: - on calcule pour chaque amplitude Mi de maximum local mémorisé un rapport Ri = SIMi, - on calcule (414) pour chaque rapport Ri un facteur Fi qui est fonction de Ri et d'un écart temporel di séparant EC de Mi dans la fenêtre, soit Fi = fi(di)xRi, - on choisit (415-417) un Fmax le plus grand parmi le Fi, - on calcule une nouvelle valeur E'de l'échantillon courant EC, fonction de Fmax et de E, valeur initiale de l'échantillon courant EC, soit E' = Fmax x E. 7 - Procédé selon l'une des revendications 5 ou 6, caractérisé en ce que la fonction fi(x) est croissante pour x > 0. 8 - Procédé selon l'une des revendications 5 à 7, caractérisé en ce qu'on utilise: f (x) = pour jxj pour Ixl > Dmax où Dmax est un écart temporel maximal auquel un maximum local produit un effet. _ 9 - Procédé selon l'une des revendications 1 à 8, caractérisé en ce que la fenêtre temporelle dure environ 10 millisecondes. 10 - Procédé selon l'une des revendications 1 à 9, caractérisé en ce qu'on stocke les échantillons de la fenêtre temporelle dans une mémoire (307).