FR2992458A1 - Methodes de compression audio additionnelles a tres bas debit exploitant les redondances locales et utilisant le codage par dictionnaire adaptatif - Google Patents

Methodes de compression audio additionnelles a tres bas debit exploitant les redondances locales et utilisant le codage par dictionnaire adaptatif Download PDF

Info

Publication number
FR2992458A1
FR2992458A1 FR1201759A FR1201759A FR2992458A1 FR 2992458 A1 FR2992458 A1 FR 2992458A1 FR 1201759 A FR1201759 A FR 1201759A FR 1201759 A FR1201759 A FR 1201759A FR 2992458 A1 FR2992458 A1 FR 2992458A1
Authority
FR
France
Prior art keywords
frame
bit
compression
successive
account
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1201759A
Other languages
English (en)
Other versions
FR2992458B1 (fr
Inventor
Georges Samake
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to FR1201759A priority Critical patent/FR2992458B1/fr
Publication of FR2992458A1 publication Critical patent/FR2992458A1/fr
Application granted granted Critical
Publication of FR2992458B1 publication Critical patent/FR2992458B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/0017Lossless audio signal coding; Perfect reconstruction of coded audio signal by transmission of coding error

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Méthodes de compression audio additionnelles à très bas débit exploitant les redondances locales et utilisant le codage par dictionnaire adaptatif. La présente invention concerne l'exploitation des redondances locales des flux audio, principalement ceux contenant la voix, redondances dues aux répétitions successives et non successives des trames, pour les méthodes de compression utilisant le domaine des fréquences (comme FFT et MDCT). Des codes plus courts permettant d'atteindre de très bas débits sont proposés. Un codage par dictionnaire adaptatif légèrement modifié est utilisé comme compression additionnelle sans perte, pour compresser les magnitudes, les fréquences (positions) et les phases (si elles existent ou si elles ne sont pas ignorées). De nos jours, la méthode FFT n'est pas très utilisée pour compresser les données audio, mais récemment une étude ne prenant en compte que les points de plus grande magnitude et les bandes les plus énergétiques a donné des taux de compression très élevés avec peu de calculs. Ces méthodes sont destinées à toutes les communications vocales bidirectionnelles (via Internet ou les téléphones portables par exemple), aux diffusions audio (comme la radio sur Internet) et au stockage des données audio (comme les fichiers sur disque dur ou sur carte mémoire). Les très bas débits obtenus vont permettre de réduire les bandes passantes et les espaces de stockage nécessaires de manière significative. En outre, les appareils utilisant les ondes électro-magnétiques pour transmettre les données (comme les téléphones portables) pourront tirer profit de ces très bas débits pour réduire sensiblement leurs émissions d'ondes.

Description

- 1 - La présente invention concerne l'addition de méthodes de compression avec perte et sans perte à des méthodes de compression de flux audio utilisant le domaine des fréquences, comme la transformation de Fourier rapide (FF T, Fast Fourier Transform en Anglais) ou la transformée en cosinus discrète modifiée (MDCT, Modified Discrete Cosine Transform en Anglais). Ces méthodes additionnelles permettent d'atteindre des taux de compression très élevés donc des débits très bas. Cette étude vise particulièrement les téléphones portables et tous les appareils utilisant les rayonnements électro-magnétiques pour transmettre les données audio contenant la voix. L'utilité de la compression n'est pas discutable dans le domaine de l'audio. L'utilité de compresser outre mesure les données audio contenant la voix est de moins en moins discutable si on considère que les téléphones portables et les autres appareils similaires, actuellement très répandus, utilisent les rayonnements électromagnétiques pour transmettre les données. Moins il y a de données à émettre, plus ces appareils pourront réduire leurs rayonnements électro-magnétiques. La compression additionnelle avec perte exploite les redondances locales lors des conversation vocales (silences, répétitions successives et répétitions non successives des trames), en proposant des codes beaucoup plus courts pour représenter les trames audio. On estime par exemple que dans une conversation normale, il y a plus de 50% de silence.
La compression additionnelle sans perte utilise le codage par dictionnaire adaptatif pour compresser efficacement les magnitudes et les fréquences (positions), ou les magnitudes, les fréquences (positions) et les phases en cas d'utilisation des phases. Ces codages ne sont pas efficaces sur des trames de courte longueur. On utilisera des dictionnaires regroupant plusieurs trames tout en émettant les données compressées trame 25 par trame. Les méthodes les plus répandues actuellement utilisent le codage prédictif linéaire (LPC) dans le domaine temps pour la voix et la transformée en cosinus discrète modifiée (MDCT) dans le domaine des fréquences pour la musique. La compression par dictionnaire adaptatif est couramment utilisée dans la compression des 30 fichiers ZIP et GZIP. Elle est aussi couramment utilisée pour compresser les images GIF, TIFF et PNG. - 2 - Récemment, une étude basée sur FFT et ne prenant en compte que les points de plus grande magnitude et les bandes les plus énergétiques a donné des taux de compression très élevés avec peu de calculs (brevet Français numéro 06 07091 délivré en 2008). Dans cette étude, dans le cas général, on utilise les magnitudes, les fréquences et les phases, avec un recouvrement de 50% ou moins des trames. Dans un cas particulier très optimisé pour la voix, on utilise seulement les pics locaux, les magnitudes et les fréquences, avec des trames indépendantes qui ne se recouvrent pas. Cette étude ne tient compte ni des redondances locales, ni des trames de silence, ni de la compression sans perte. Les trames codées sont de taille fixe. Des valeurs tirées de cette étude seront utilisées dans nos exemples. Un flux audio contenant la voix (flux vocal) est très redondant. En reconnaissance vocale, on segmente les mots en phonèmes. Un phonème est une unité de base de la parole. C'est le plus petit son identifiable. On considère qu'en Français il y a 36 phonèmes (16 voyelles et 20 consonnes), tandis qu'en Anglais il y a 49 phonèmes (25 voyelles et 24 consonnes). Un mot comme ABRACADABRA peut être reçu par exemple comme : AAAABBRRAAAACCAAAADDAAAA13BRRAAAA Un travail préliminaire important consiste à enlever les répétitions dans les phrases prononcées, à l'aide par exemple de modèles de phonèmes.
Les trames des flux vocaux ne sont pas des phonèmes, mais le même phénomène existe à leur niveau. Cette étude tient compte de ce phénomène en prenant en compte les répétions de trames successives et non successives dans les flux vocaux. On estime qu'il y a plus de 50% de silence dans une conversation vocale normale. Dans notre en-tête général, nous proposerons un bit pour signaler la présence ou non d'une trame de silence et nous n'émettrons pas de trame vide (trame silence) après un en-tête général. Des méthodes de compression classiques sans perte par dictionnaire adaptatif existent. On peut citer par exemple : - LZ77 : dans cet algorithme, les motifs rencontrés sont remplacés par une référence à leur 30 première apparition. - Deflate : cet algorithme utilise LZ77 puis la compression avec les codes Huffman. -3- - LZ78 : cet algorithme utilise un dictionnaire implicite construit de la même manière par le compresseur et le décompresseur. - LZW : est une amélioration de LZ78. Le dictionnaire est initialisé avec l'ensemble des caractères de l'alphabet. Ces algorithmes sont très utiles pour les fichiers et les images mais ne peuvent pas être appliqués pour coder la redondance des trames lors de communications vocales en direct car les temps de latence ne peuvent pas être respectés. Pour prendre en compte les redondances locales (répétitions successives et non 10 successives), nous utilisons des nombres et des numéros pour représenter les trames. Pour prendre en compte les répétitions locales successives, nous présentons un méthode simple que nous appelons crédit de répétitions. L'émetteur envoie une trame avec un nombre donné de crédit de répétitions. Le récepteur répète cette trame tant que le crédit n'est pas épuisé et tant qu'il ne reçoit pas une autre trame contenant le nombre de crédit 15 valide ou le nombre de crédit restant à annuler. Le crédit de répétitions peut être codé sur un nombre quelconque de bits, par exemple 8 bits (crédit maximum alloué : 255) , 7 bits (crédit maximum alloué : 127) ou 5 bits (crédit maximum alloué : 31). Si émet des trames de 32 millisecondes sans recouvrement, il y a environ 31 trames par seconde. Un crédit de 255 représente 8 secondes et un crédit de 31 représente 1 seconde. 20 Nous prendrons 5 bits pour le crédit de répétitions dans notre en-tête général. Un en-tête doit comporter un nombre de bits de crédit à allouer et un nombre de bits identique de crédit à valider ou à annuler, par exemple : Premiers bits. Crédit à annuler pour la trame précédente. 25 Nouveau crédit alloué pour la trame courante. Si on se met d'accord à l'avance sur un nombre de crédit à allouer automatiquement, on peut ne pas émettre le nombre de crédit à allouer. Dans ce cas, on aura : Premiers bits. Crédit à annuler pour la trame précédente. 30 Pour nous fixer les idées, soit à coder la séquence de 16 trames suivantes : T1 TT2 T2 TTTT3 TTTTT1 TITIS où S représente une trame silence. - 4 - Pour des trames de 17 octets (1 octet d'en-tête et 16 octets de corps), sans le crédit de répétitions, on doit émettre : 16x 17 x 8 = 2176 bits.
En supposant un en-tête général de 8 bits, avec un crédit de répétitions sur 5 bits, 1 bit pour indiquer qu'une trame complète suit ou non l'en-tête général, 1 bit pour indiquer une trame de silence ou non, 1 autre bit pour indiquer une réinitialisation ou non (reset en Anglais), on émet successivement : Bit 1 - Bit 2 - Bit 3 - 0 -Ti (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 0 crédit à m'ululer, trame T1) Bit 1 - Bit 2 - Bit 3 - 30 - T (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 30 crédits à annuler, trame T) Bit 1 - Bit 2 - Bit 3 - 30 - T2 (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 30 crédits à annuler, trame T2) Bit 1 - Bit 2 - Bit 3 - 29 - T (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 29 crédits à annuler, trame T) Bit 1 - Bit 2 - Bit 3 - 28 - T3 (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 28 crédits à annuler, trame T3) Bit 1 - Bit 2 - Bit 3 - 30 - T (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 30 crédits à annuler, trame T) Bit 1 - Bit 2 - Bit 3 - 27 - T1 (Bit là 1, Bit 2 à 1, Bit 3 à 0, 27 crédits à annuler, trame T1) Bit 1 - Bit 2 - Bit 3 - 28 - S (Bit 1 à 0, Bit 2 à 0, Bit 3 à 0, 28 crédits à annuler, 0 trame) soit : (7 x (17 + 1) x 8) + (1 x 8) = 1016 bits Dans les zones de silence, on émet un en-tête général de 1 octet (8 bits) toutes les 32 trames, soit toutes les secondes si on émet 31 trames par seconde.
Pour prendre en compte les répétitions locales non successives, on définit un code simple sur un nombre quelconque mais fixe de bits. Au lieu d'envoyer une trame complète, on envoie un code k qui indique que la trame courante est identique à la trame située à la position k à l'arrière de la trame courante, la position de la trame courante valant O. La taille de la zone de redondance est déterminée par le nombre maximum de bits alloués au codage du code k (taille de 255 si on prend 8 bits). La prise en compte des redondances non successives nécessite un tampon mémoire proportionnel à la taille de la zone de redondance. Une taille de la zone de redondance de 255 (8 bits de l'en-tête général, 8 secondes si on émet 31 trames par seconde) nous semble être une bonne valeur générique.
Après les calculs FFT en double précision, les trames audio ne sont jamais rigoureusement nulles (silence) ou identiques. Pour parler de trames nulles ou voisines ou identiques, il est nécessaire de faire un calcul de distance entre les trames à comparer. - 5 - Plusieurs mesures sont disponibles dans la littérature : - La distance euclidienne : Pour chaque fréquence (position), on calcule le carré de la différence des magnitudes. On calcule la somme totale de ces carrés. La distance euclidienne est la racine carrée de cette somme totale. - La somme des carrés des différences : (SSD, Sum of Squared Differences en Anglais). On calcule la somme totale des carrés des différences des magnitudes pour toutes les fréquences (positions). - La somme des valeurs absolues des différences : (SAD, Sum of Absolute Differences en Anglais). On calcule la somme totale des valeurs absolues des différences des magnitudes pour toutes les fréquences (positions).
Cette dernière mesure est très rapide et est couramment utilisée dans la compression vidéo. Ces trois types de mesure tiennent beaucoup compte des magnitudes. Nous savons que les variations de magnitude jouent peu sur la qualité de la voix comparativement à des changements de positions (fréquences). Nous préconisons l'indice de similarité qui tient plus compte de la similarité des trames que des magnitudes. Cet indice peut éventuellement être utilisé en conjonction avec toute mesure de distance, notamment, la distance euclidienne, la somme des carrés des différences ou la somme des valeurs absolues des différences. L'indice de similarité peut être changé dynamiquement côté émetteur en cours de communication. - L'indice de similarité : Indice de Similarité = cosinus(Angle) = (Vecteur A x Vecteur B) / (Norme de A x Norme de B) Dans cette formule : - A désigne un vecteur contenant les magnitudes de la première trame à comparer. - B désigne un vecteur contenant les magnitudes de la seconde trame à comparer. - Norme désigne la norme euclidienne. - Angle désigne l'angle entre les vecteurs A et B. - 6 - Si Ai et Bi désignent des éléments des vecteurs A et B à la position i (fréquence i), l'indice de similarité peut s'écrire : Indice de Similarité = (somme des Ai x Bi) / (racine carrée de la somme des Ai au carré x 5 racine carrée de la somme des Bi au carré). Un indice de 0 indique une similarité minimale. Un indice de 1 indique une similarité maximale. Pour accélérer les calculs, on peut éliminer les trames qui ont une faible similarité en utilisant l'indice de Tanimoto qui suppose des attributs binaires (toutes les magnitudes 10 valent 0 ou 1) : Indide de Tanimoto = (Vecteur A x Vecteur B) / (Norme de A au carré + Nonne de B au carré - (Vecteur A x Vecteur B)) La norme de A se réduit à la somme des éléments de A. La norme de B se réduit à la somme des éléments de B. 15 Le produit des vecteurs A et B vaut la somme des Ai x Bi. L'indice de similarité, appelée aussi similarité cosinus ou mesure cosinus (cosine normalized distance en Anglais), est utilisée couramment pour la recherche de documents. Pour toutes ces mesures, plus il y a de points nuls, moins il y a de calculs. Une sélection fine des points en prendre en compte n'est pas inutile (par exemple les points de 20 plus grande magnitude et les bandes les plus énergétiques). L'indice de similarité, couplé éventuellement avec toute mesure de distance comme la distance euclidienne, la somme des carrés des différences ou la somme des valeurs absolues des différences peut être utilisé pour décider si deux trames audio sont identiques ou non. Cet indice peut être ajusté dynamiquement pour modifier le rapport qualité de 25 l'audio / débit des communications en laissant passer plus ou moins de trames identiques. Une mesure de distance peut être utilisée pour décider si une trame est nulle ou non (trame de silence). On réserve un bit dans l'en-tête général pour signaler ou non une trame de silence et on n'émet pas de trame de silence derrière l'en-tête général. Il ne faut pas qu'il y ait d'effet de bord à traiter. Pour FIT, dans le cas général 30 (magnitudes, fréquences et phases) il y a un recouvrement partiel de 50% ou moins et dans le cas particulier optimisé pour la voix (magnitudes et fréquences), l'utilisation du sinus en décompression annule les effets de bord. Pour MDCT, il y a un recouvrement de 50%. 2 9 9 2 4 5 8 - 7 - Nous réservons un bit dans notre en-tête général pour indiquer on non un point de reprise. En cas de reprise, tous les compteurs doivent être remis à zéro et on ne peut plus faire référence à une trame antérieure. Le nombre de trames à émettre avant un point de reprise peut être plus ou moins grand suivant la qualité de la transmission. Un mécanisme peut être mis en place pour qu'il y ait lieu à la demande du récepteur. En enregistrement sur un support physique (disque dur ou carte mémoire), les points de reprise peuvent être éliminés.
Nous avons déjà introduit des algorithmes de codage sans perte par dictionnaire adaptatif (LZ77, Deflate, LZ78 et LZW). Ces algorithmes sont difficilement applicables au niveau de la redondance des trames (problèmes de latence en communication) mais sont applicables pour coder chaque trame séparément. Mais compte-tenu du fait que les trames semi-compressées (non encore compressées avec une méthode de compression sans perte) contiennent relativement peu de données, les taux de compression qu'on peut espérer ne sont pas importants. Nous allons décrire une méthode efficace qui permet de concaténer plusieurs trames successives pour avoir plus de données tout en ne modifiant pas les temps de latence. Cette méthode est efficace aussi bien pour la voix optimisée que pour la musique, en communication ou en diffusion (streaming en Anglais).
Pour bien comprendre notre choix et notre méthode, nous commençons par décrire un peu plus les méthodes de compression sans perte précédemment citées. - LZ77 : cet algorithme a été proposé en 1977. Il utilise une fenêtre glissante ou coulissante (équivalent à un dictionnaire) à gauche et une fenêtre de taille plus petite à droite. Cette dernière fenêtre est appelée tampon et contient les données à compresser. Les octets sont progressivement introduits dans la fenêtre glissante par la droite de celle-ci. La fenêtre glissante, de taille fixe, ne contient pas l'ensemble des données. Le dictionnaire est constitué de toutes les chaînes de caractères présentes dans la fenêtre glissante. Dans cet algorithme, les motifs rencontrés sont remplacés par une référence à la première apparition, cette référence est typiquement une paire (position, longueur). Les séquences 30 de caractères à compresser sont codées par trois informations : la position, la longueur de la séquence et le premier mot du tampon qui diffère de la séquence de caractères compressés. - 8 - Une amélioration de LZ77 appelée LZSS propose d'utiliser un triplet (marqueur, position, longueur) quand les caractères sont compressés et un couple (marqueur, caractère non compressé) s'il n'y a pas de compression, le marqueur étant codé sur 1 bit. - Deflate : la méthode de compression Deflate utilise LZ77 puis une compression supplémentaire avec les codes Huffman. La méthode Deflate est utilisée notamment pour compresser les fichiers ZIP et GZIP, les fichiers compressés du système de fichiers NTFS et les images PNG. La librairie ZLIB permet d'utiliser cette méthode de compression. - LZ78 : cet algorithme a été proposé en 1978. Il utilise un dictionnaire implicite construit de la même manière par le compresseur et le décompresseur. Il n'y a pas de fenêtre glissante mais le dictionnaire se construit de manière progressive. Au lieu d'avoir une fenêtre de taille limitée, il construit un dictionnaire à partir de tous les symboles déjà rencontrés dans le flux d'entrée. Les séquences de caractères à compresser sont codées par deux informations : la position et le premier mot qui diffère de la séquence de caractères compressés. - LZW: cet algorithme a été proposé en 1984. Il est basé sur LZ78. Il commence par charger les premiers mots du dictionnaire (vocabulaire minimum). Le reste se construit au fur et à mesure que la compression ou la décompression avance. On n'émet plus une suite (code, caractère), mais seulement une suite de codes. LZW permet d'ajuster le codage pendant la compression et ainsi de créer un dictionnaire de taille adaptative. La méthode LZW et ses variantes sont notamment utilisées dans le programme Compress (Unix), dans la norme V.42bis (modems) et pour compresser les images TIEti et GIE. Les méthodes de compression sans perte par dictionnaire adaptatif ont besoin de temps avant de gagner de la place : c'est la phase d'apprentissage. Une compression par 25 trame n'est pas efficace et peut même augmenter le nombre d'octets après compression. Les magnitudes codées avec le logarithme ou l'échelle corrigée (voir le texte du brevet cité en introduction) sont sur 4 bits ou plus et sont très redondantes, surtout pour les points de l'arrière plan. En outre, les grandes valeurs sont rarement atteintes. Les déplacements sont rendus le plus redondant possible pour la voix optimisée ou s'il y a 30 beaucoup de points dans le cas général, en faisant un chaînage (calcul des différences de deux positions consécutives). - 9 - Les phases, si elles sont prises en compte, peuvent être considérées comme aléatoires, mais on peut y trouver quelques motifs qui se répètent. Nous avons choisi LZW dans cette étude car il n'y a pas de dictionnaire à échanger et la 5 compression commence dès le départ. Notre compression additionnelle sans perte est basée sur LZW et la variante utilisée pour la compression des images GIF, avec notamment : - La compression de taille variable. On commence avec une taille de compression de N+1, N étant le nombre initial de bits par 10 code. A chaque fois qu'on émet le plus grand code, on augmente la taille de compression de 1. Par exemple, si N vaut 8, les codes initiaux sont sur 8 bits. On commence par une taille de compression de 9. Dès qu'on arrive au code 511, on passe à une taille de compression de 10. - L'utilisation de 2 codes spéciaux : 15 - <CC> ou Clear Code en Anglaisn pour réinitialiser le dictionnaire et la taille de compression, si la taille maximale de compression est atteinte. - <EOI> ou End of Information en Anglais, pour signaler la fin de la compression. Toutes les trames émises après le départ ou après un code de réinitialisation sont prises en compte pour la construction du dictionnaire. 20 A la fin de la compression de chaque trame, on émet tous les codes qu'il faut pour qu'il n'y ait pas besoin d'une trame antérieure ou future pour la décompression de la trame. Il n'y a pas donc de prise en compte des motifs qui se trouvent uniquement entre deux trames. On considère la trame semi-compressée (n'utilisant pas encore la compression sans perte 25 supplémentaire) comme une suite d'octets (8 bits), les éléments identiques étant regroupés ensemble et chaque groupe commençant sur un nouvel octet (par exemple, toutes les magnitudes, puis toutes les fréquences puis toutes les phases). Il faut donner la priorité au codage des nombres sur 4 bits ou sur 8 bits puis sur 6 bits. Dans tous les cas le regroupement doit être effectué. 30 Le dictionnaire est initialisé avec les 256 premiers codes (0 à 255) plus deux codes pour <CC> et <EOI> (256 et 257). - 10 - Dans le compression des images GIF, l'unité n'est pas l'octet (8 bits), mais le nombre de bits par pixel de l'image. Dans le compression des images TLFF, l'unité est l'octet (8 bits), il y a regroupement des pixels. Envisager un dictionnaire séparé par élément, donc 2 ou 3 dictionnaires différents en parallèle, est plus gourmand en mémoire et en calculs et ne permet pas de prendre en compte les motifs semblables qui existent entre les différents éléments. Dans le compression des images GIF, la taille de compression maximum est de 12 bits (4096 entrées maximum dans le dictionnaire). Ce nombre doit pouvoir être ajusté avant le début des communications ou des diffusions. On n'émet pas un code spécial à la fin de chaque trame car cela diminuerait inutilement le taux de compression surtout à très bas débit. Le code <CC> est émis à chaque fois qu'on souhaite avoir un point de reprise, même si la taille maximale de compression n'est pas atteinte. L'en-tête général et l'en-tête d'une trame ne sont pas compressés. Il n'y a pas de changement côté décompression. La méthode de compression sans perte par dictionnaire adaptatif LZW peut être vue 20 comme une méthode de préchargement total de dictionnaire d'ordre 1 (le dictionnaire est initialisé avec tous les caractères possibles sans concaténation). Nous ajoutons une variante appelée préchargement partiel de dictionnaire d'ordre N, qui est l'ajout systématique de tous les codes correspondant à tous les arrangements des N caractères d'une séquence mise dans le dictionnaire. 25 Par exemple, pour un préchargement partiel d'ordre 2, si mon met la séquence AB dans la base (avec un code), on met aussi la séquence BA (avec un code). Pour un préchargement partiel d'ordre 3, si mon met la séquence ABC (avec un code) dans la base, on met aussi les séquence ACB, BAC, BCA, CAB et CBA (avec un code pour chaque séquence). 30 Pour ne pas avoir de dictionnaire à échanger, le compresseur et le décompresseur doivent se mettre d'accord sur l'ordre N de préchargement partiel et sur l'ordre exact des permutations.
Le préchargement partiel d'ordre N peut être plus efficace si on vide tous les codes à la fin de la compression d'une trame, ou si on a une suite aléatoire ou avec des séquences peu répétitives, et peut être utilisé.
Considérons le pseudo-code suivant pour la compression LZW standard : w = nul tant que (lecture d'un caractère c) faire si (wc existe dans le dictionnaire) alors w wc sinon ajouter wc au dictionnaire écrire le code de w w = c fin si fin tant que écrire le code de w Dans ce pseudo-code : - nul signifie le vide ou l'absence de caractère. - wc est la concaténation du préfixe w et du caractère c. - Le préfixe w désigne 0, 1 ou plusieurs caractères concaténés. - Le caractère c n'est pas nécessairement sur 8 bits. Il désigne simplement un nombre sur N bits. - 12 - On émet obligatoirement un ou deux codes à la fin de chaque trame. Le pseudo-code devient : w = nul tant que (lecture d'un caractère c) faire si (c est le dernier caractère de la trame) alors si (wc existe dans le dictionnaire) alors écrire le code de wc Po sinon écrire le code de w écrire le code de c fin si w = nul 15 sinon si (wc existe dans le dictionnaire) alors sinon ajouter wc au dictionnaire 20 écrire le code de w w = c fin si fin si fin tant que 25 écrire le code de w - 13 - Une réalisation pratique peut être faite en mettant en place l'en-tête global suivant de 2 octets (16 bits) : Bit 1 --- Bit 2 --- Bit 3 --- Bit 4 à Bit 8 --- Bit 9 à Bit 16 Bit 1 à 0 : il n'y a pas de trame audio suivant l'en-tête global. Bit 1 à 1: il y a une trame audio suivant l'en-tête global. Bit 2 à 0 : trame de silence et il n'y a pas de trame audio suivant l'en-tête global. Bit 2 à 1: il ne s'agit pas d'une trame de silence. Bit 3 à O: il ne s'agit pas d'une trame de réinitialisation.
Bit 3 à 1: il s'agit d'une trame de réinitialisation (il n'y aura plus de référence à des trames antérieures). Bit 4 à Bit 8 : sur un total de 5 bits, nombre de crédit de répétitions à annuler. Un crédit de répétitions de 31 est automatiquement donné. On peut annuler un nombre de crédit de répétitions de 31 au maximum.
Bit 9 à Bit 16: sur un total de 8 bits, numéro de trame similaire situé en arrière. Un total de 255 numéros peut être adressé. Suivant la valeur du premier bit, l'en-tête général est suivi ou non d'une trame semicompressée (n'utilisant pas la compression sans perte supplémentaire) ou compressée (utilisant la compression sans perte supplémentaire). Une trame qui suit un en-tête général possède un en-tête propre et un corps de taille fixe ou variable. Si les capacités de calcul sont limitées, pour des problèmes de performance ou si les débits sont suffisants, on peut ne pas mettre en oeuvre la compression sans perte. L'en-tête général est encore bon. S'il n'y a pas beaucoup de mémoire, si les capacités de calcul sont limitées ou si la compression sans perte est suffisante, on peut ne pas mettre en oeuvre la notion de trames similaires non successives. L'en-tête général se réduit à un octet. Avec une trame silence, on envoie qu'un octet (il n'y a pas besoin de numéro de trame similaire). - 14 - Si on sait qu'il y a beaucoup de silence d'un côté ou de l'autre de la transmission, moyennant quelques hypothèses, on peut utiliser 14 bits pour le crédit de répétitions : - L'en-tête général comporte toujours 2 octets. - Il n'y a pas de réinitialisation avec une trame de silence. - On ajoute le bit prévu pour la réinitialisation et les 8 bits prévus pour le numéro de trame similaire aux bits prévus pour le crédit de répétitions. - Une trame normale qui suit immédiatement une trame de silence ne doit pas servir à la réinitialisation. - Une trame similaire ne peut pas suivre immédiatement une trame de silence, autrement dit, le second octet ne doit pas être considéré comme un numéro de trame similaire (tous les 14 bits requis servant à annuler le crédit non utilisé). Dans cette réalisation, on considère un exemple découlant de l'étude utilisant FFT, les points de plus grande magnitude et les bandes les plus énergétiques : cas optimisé pour la voix, pics locaux seuls, décimation simple, pas de phase, pas de recouvrement. On choisit 8 points et 4 bandes par trame. Pour une fréquence d'échantillonnage de 8 Khz, il y a un total de 8 points dans les bandes, soit un total de 16 points. Une trame semi-compressée est composée d'un octet d'en-tête 20 et de 16 octets de corps. L'avant plan est constitué de 10 octets (6 octets pour les fréquences et 4 octets pour les magnitudes), l'arrière plan est constitué de 3 octets (positions des bandes) et de 3 autres octets (magnitudes dans les bandes). Un chaînage est réalisé pour réduire le codage des positions de l'avant plan. La taille des tampons FFT est de 256. Enfin les magnitudes sont codées à l'aide du logarithme à base 10 ou de l'échelle 25 corrigée à base 2. Avec ces valeurs on a un taux de compression de 1 /30 et un taux de bits de 4,3 Kbps (kilo bits par seconde). Remarques : - On peut avoir encore de meilleurs taux de compression en prenant moins de points et ou 30 de bandes. - 15 - - Pour une fréquence d'échantillonnage de 16 Khz, il y a un total de 16 points dans les bandes, soit un total de 24 points. La taille des tampons FIT est de 512. Une trame est constituée d'un octet d'en-tête et de 18 octets de corps. Avec ces valeurs, on a un taux de compression de 1 /53 et un taux de bits de .4,7 Kbps. Il y a plus de points à trier mais la qualité d'échantillonnage joue peu sur les débits. Soit à coder la suite des trames suivantes : T1TT2 T2 TTTT3 TTTTT1 TITIS 10 où S représente une trame silence. Il y a 16 trames en tout. Une valeur possible de la tailles des trame semi-compressées (ne faisant pas appel aux méthodes additionnelles décrites dans ce document) de l'étude citée en exemple est 17 octets (1 octet d'en-tête et 16 octets de corps). En utilisant cette valeur, le nombre de bits 15 nécessaires pour compresser ces trames est : 16* 17 * 8 = 2176 bits En utilisant les redondances locales, sans les compressions sans perte, on émet successivement : Bit 1 - Bit 2 - Bit 3 - 0 -Ti (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 0 crédit à annuler, trame T1) 20 Bit 1 - Bit 2 - Bit 3 - 30 - T (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 30 crédits à annuler, trame T) Bit 1 - Bit 2 - Bit 3 - 30 - T2 (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 30 crédits à annuler, trame T2) Bit 1 - Bit 2 - Bit 3 -29 - 3 (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 29 crédits à annuler, comme la 3ème trame située en arrière). Bit 1 - Bit 2 - Bit 3 - 28 - T3 (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 28 crédits à annuler, trame T3) 25 Bit 1 - Bit 2 - Bit 3 -30 -2 (Bit 1 à 1, Bit 2 à 1, Bit 3 à 0, 30 crédits à annuler, comme la 2ème trame située en arrière). Bit 1 - Bit 2 - Bit 3 -27-12 (Bit là 1, Bit 2 à 1, Bit 3 à 0, 27 crédits à annuler, comme la 12ème trame située en arrière). Bit 1 - Bit 2 - Bit 3 - 28 - S (Bit 1 à 0, Bit 2 à 0, Bit 3 à 0, 28 crédits à annuler, trame de 30 silence, aucune trame derrière l'en-tête général qui se réduit à un octet). Soit : (2 + 17) * 4 + 2 * 3 + l= 83 octets = 664 bits - 16 - Avec l'exemple ci-dessus, si on utilise la compression additionnelle sans perte par dictionnaire adaptatif, on divise en moyenne la taille des trames par plus de 2, on aura au maximum : (2 + 9) * 4 + 2 * 3 + 1 = 51 octets = 408 bits Avec l'exemple ci-dessus, si les trames Ti, T2 et T3 se trouvent le tampon local (les 255 dernières trames), le nombre de bits nécessaires pour compresser toutes les trames est : 2 x 7 + 1 = 15 octets = 120 bits. L'efficacité de la compression augmente de façon sensible s'il y a beaucoup de répétitions et de trames de silence. Comme on sait qu'une conversation normale contient plus de 50% 10 de silence, des débits moyens très bas sont garantis. La taille des trames étant variable, on ne peut pas donner des chiffres très précis sur les taux de compression ou les débits. On peut juste vérifier que les taux de compression moyens sont très élevés ou que les débits moyens sont très bas. Les trois paramètres importants du codec (compression / décompression) final 15 dérivé du codec cité en introduction deviennent : le nombre de points de l'avant plan, le nombre de bandes de l'arrière plan et l'indice de similarité. Le nombre de points et de bandes doivent être fixés en début de communication tandis que l'indice de similarité peut être changé dynamiquement côté émetteur en cours de communication.
20 Les compressions additionnelles proposées permettent d'atteindre de très bas débits moyens. Des débits moyens de moins de mille bits par seconde (1 Kbps) peuvent être atteints facilement. On peut envisager des débits de quelques centaines de bits par seconde à quelques dizaines de bits par seconde si la grande qualité n'est pas primordiale, en jouant sur l'indice de similarité.
25 Ces méthodes sont destinées à toutes les communications vocales bidirectionnelles (via Internet ou les téléphones portables par exemple), aux diffusions audio (comme la radio sur Internet) et au stockage des données audio (comme les fichiers sur disque dur ou sur carte mémoire). Les très bas débits obtenus vont permettre de réduire les bandes passantes et les espaces de stockage nécessaires de manière significative. En outre, les 30 appareils utilisant les ondes électro-magnétiques pour transmettre les données (comme les téléphones portables) pourront tirer profit de ces très bas débits pour réduire sensiblement leurs émissions d'ondes.

Claims (7)

  1. REVENDICATIONS1) Méthodes de compression et décompression audio additionnelles pour les méthodes utilisant le domaine des fréquences comme la transformation de Fourier rapide (if T) ou la transformée en cosinus discrète modifiée (MDCT), caractérisée en ce que pour prendre en compte les redondances locales (répétitions successives et non successives), nous utilisons des nombres et des numéros pour représenter les trames.
  2. 2) Méthode selon la revendication 1, caractérisée en ce que pour prendre en compte les répétitions locales successives, nous présentons un méthode simple que nous appelons crédit de répétitions. L'émetteur envoie une trame avec un nombre donné de crédit de répétitions. Le récepteur répète cette trame tant que le crédit n'est pas épuisé et tant qu'il ne reçoit pas une autre trame contenant le nombre de crédit valide ou le nombre de crédit restant à annuler.
  3. 3) Méthode selon la revendication 1, caractérisée en ce que pour prendre en compte les répétitions locales non successives, on définit un code simple sur un nombre quelconque mais fixe de bits. Au lieu d'envoyer une trame complète, on envoie un code k qui indique que la trame courante est identique à la trame située à la position k à l'arrière de la trame courante, la position de la trame courante valant O.
  4. 4) Méthode selon la revendication 1, caractérisée en ce que l'indice de similarité, couplé éventuellement avec toute mesure de distance comme la distance euclidienne, la somme des carrés des différences ou la somme des valeurs absolues des différences peut être utilisé pour décider si deux trames audio sont identiques ou non. Cet indice peut être ajusté dynamiquement pour modifier le rapport qualité de l'audio / débit des communications en laissant passer plus ou moins de trames identiques.
  5. 5) Méthode selon la revendication 1, caractérisée en ce qu'une mesure de distance peut être utilisée pour décider si une trame est nulle ou non (trame de silence). On réserve un bit dans l'en-tête général pour signaler ou non une trame de silence et on n'émet pas de trame de silence derrière 1 'en-tête général.- 2 -
  6. 6) Méthode selon la revendication 1, utilisant une compression additionnelle sans perte basée sur LZW et la variante utilisée pour la compression des images GlF, avec notamment la compression de taille variable et l'utilisation de 2 codes spéciaux., caractérisée en ce que toutes les trames émises après le départ ou après un code de réinitialisation sont prises en compte pour la construction du dictionnaire. A la fin de la compression de chaque trame, on émet tous les codes qu'il faut pour qu'il n'y ait pas besoin d'une trame antérieure ou future pour la décompression de la trame.
  7. 7) Méthode selon la revendication 1, caractérisée en ce qu'on considère la trame 10 semi-compressée (n'utilisant pas encore la compression sans perte supplémentaire) comme une suite d'octets (8 bits), les éléments identiques étant regroupés ensemble et chaque groupe commençant sur un nouvel octet.
FR1201759A 2012-06-21 2012-06-21 Methodes de compression audio additionnelles a tres bas debit exploitant les redondances locales et utilisant le codage par dictionnaire adaptatif Active FR2992458B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1201759A FR2992458B1 (fr) 2012-06-21 2012-06-21 Methodes de compression audio additionnelles a tres bas debit exploitant les redondances locales et utilisant le codage par dictionnaire adaptatif

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1201759 2012-06-21
FR1201759A FR2992458B1 (fr) 2012-06-21 2012-06-21 Methodes de compression audio additionnelles a tres bas debit exploitant les redondances locales et utilisant le codage par dictionnaire adaptatif

Publications (2)

Publication Number Publication Date
FR2992458A1 true FR2992458A1 (fr) 2013-12-27
FR2992458B1 FR2992458B1 (fr) 2018-03-02

Family

ID=47664318

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1201759A Active FR2992458B1 (fr) 2012-06-21 2012-06-21 Methodes de compression audio additionnelles a tres bas debit exploitant les redondances locales et utilisant le codage par dictionnaire adaptatif

Country Status (1)

Country Link
FR (1) FR2992458B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3093600A1 (fr) 2019-03-10 2020-09-11 Georges Samake Procédés d'utilisation des phases pour réduire les largeurs de bande ou pour transporter des données avec des codecs multimédia n'utilisant que les magnitudes ou amplitudes

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ADIL BENYASSINE ET AL: "ITU-T RECOMMENDATION G.729 ANNEX B: A SILENCE COMPRESSION SCHEME FOR USE WITH G.729 OPTIMIZED FOR V.70 DIGITAL SIMULTANEOUS VOICE AND DATA APPLICATIONS", IEEE COMMUNICATIONS MAGAZINE, IEEE SERVICE CENTER, PISCATAWAY, US, 1 September 1997 (1997-09-01), pages 64 - 73, XP002109011, ISSN: 0163-6804 *
MATIAS Y ET AL: "Delayed-dictionary compression for packet networks", INFOCOM 2005. 24TH ANNUAL JOINT CONFERENCE OF THE IEEE COMPUTER AND CO MMUNICATIONS SOCIETIES. PROCEEDINGS IEEE MIAMI, FL, USA 13-17 MARCH 2005, PISCATAWAY, NJ, USA,IEEE, PISCATAWAY, NJ, USA, vol. 2, 13 March 2005 (2005-03-13), pages 1443 - 1454, XP010829241, ISBN: 978-0-7803-8968-7, DOI: 10.1109/INFCOM.2005.1498371 *
SCHMIDT DOLBY LABORATORIES F DE BONT PHILIPS ELECTRONICS S DOEHLA FRAUNHOFER IIS J KIM LG ELECTRONICS INC M: "RTP Payload Format for MPEG-4 Audio/Visual Streams; rfc6416.txt", RTP PAYLOAD FORMAT FOR MPEG-4 AUDIO/VISUAL STREAMS; RFC6416.TXT, INTERNET ENGINEERING TASK FORCE, IETF; STANDARD, INTERNET SOCIETY (ISOC) 4, RUE DES FALAISES CH- 1205 GENEVA, SWITZERLAND, 18 October 2011 (2011-10-18), pages 1 - 35, XP015081317 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3093600A1 (fr) 2019-03-10 2020-09-11 Georges Samake Procédés d'utilisation des phases pour réduire les largeurs de bande ou pour transporter des données avec des codecs multimédia n'utilisant que les magnitudes ou amplitudes

Also Published As

Publication number Publication date
FR2992458B1 (fr) 2018-03-02

Similar Documents

Publication Publication Date Title
US8473301B2 (en) Method and apparatus for audio decoding
RU2326450C2 (ru) Способ и устройство для векторного квантования с надежным предсказанием параметров линейного предсказания в кодировании речи с переменной битовой скоростью
WO2005083889A1 (fr) Quantification vectorielle en dimension et resolution variables
US8983831B2 (en) Encoder, decoder, and method therefor
EP1692689B1 (fr) Procede de codage multiple optimise
JP4779098B2 (ja) 可変サイズベクトルエントロピ符号化を実行するための方法および装置
US11722148B2 (en) Systems and methods of data compression
EP2769378B1 (fr) Codage hierarchique perfectionne
WO2009100768A1 (fr) Indexation et désindexation d’un vecteur à complexité réduite
CN104737227A (zh) 语音音响编码装置、语音音响解码装置、语音音响编码方法和语音音响解码方法
EP1692687A1 (fr) Transcodage entre indices de dictionnaires multi-impulsionnels utilises en codage en compression de signaux numeriques
EP2080194A2 (fr) Attenuation du survoisement, notamment pour la generation d&#39;une excitation aupres d&#39;un decodeur, en absence d&#39;information
EP2652735B1 (fr) Codage perfectionne d&#39;un etage d&#39;amelioration dans un codeur hierarchique
FR2992458A1 (fr) Methodes de compression audio additionnelles a tres bas debit exploitant les redondances locales et utilisant le codage par dictionnaire adaptatif
EP2203915B1 (fr) Dissimulation d&#39;erreur de transmission dans un signal numerique avec repartition de la complexite
EP1525663B1 (fr) Compression de donnees numeriques robuste au bruit de transmission
JP2006003580A (ja) オーディオ信号符号化装置及びオーディオ信号符号化方法
WO2011086900A1 (fr) Dispositif de codage et procédé de codage
US10613797B2 (en) Storage infrastructure that employs a low complexity encoder
WO2010001020A2 (fr) Codage/decodage par plans de bits, perfectionne
WO2011144863A1 (fr) Codage avec mise en forme du bruit dans un codeur hierarchique
Akilan et al. Research on the effectiveness of noise reduction when encoding a lossless speech signal
Amro Speech Compression Exploiting Hamming Correction Code Compressor
CN118136030A (zh) 音频处理方法、装置、存储介质和电子设备
FR2842670A1 (fr) Perfectionnement a la compression de donnees numeriques

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11

PLFP Fee payment

Year of fee payment: 12

PLFP Fee payment

Year of fee payment: 13