Détermination d'un budget de codage d'une trame de transition LPD/FD
La présente invention concerne le domaine du codage/décodage des signaux numériques.
L'invention s'applique avantageusement au codage/décodage de sons pouvant contenir de la parole et de la musique mélangés ou en alternance.
Pour coder efficacement les sons de parole à bas débit, les techniques de type CELP (« Code Excited Linear Prédiction ») sont préconisées. Pour coder efficacement les sons musicaux, on préconise plutôt les techniques de codage par transformée.
Les codeurs de type CELP sont des codeurs prédictifs. Ils ont pour but de modéliser la production de la parole à partir de divers éléments : une prédiction linéaire à court-terme pour modéliser le conduit vocal, une prédiction à long-terme pour modéliser la vibration des cordes vocales en période voisée, et une excitation dérivée d'un dictionnaire fixe (bruit blanc, excitation algébrique) pour représenter Γ "innovation" qui n'a pas pu être modélisée.
Les codeurs par transformée tels que MPEG AAC, AAC-LD, AAC-ELD ou ITU-T G.722.1 Annexe C, par exemple, utilisent des transformées à échantillonnage critique afin de compacter le signal dans le domaine transformé. On appelle « transformée à échantillonnage critique », une transformée pour laquelle le nombre de coefficients dans le domaine transformé est égal au nombre d'échantillons temporels dans chaque trame analysée.
Une solution pour coder efficacement un signal de contenu mixte parole/musique consiste à sélectionner au cours du temps la meilleure technique entre au moins deux modes de codage, l'un de type CELP, l'autre de type transformée.
C'est le cas par exemple des codées 3GPP AMR-WB+ et MPEG USAC (pour "Unified Speech Audio Coding" en anglais). Les applications visées par AMR-WB+ et USAC ne sont pas conversationnelles, mais correspondent à des services de diffusion et stockage, sans contraintes fortes sur le retard algorithmique.
La version initiale du codée USAC, appelée RMO (Référence Model 0), est décrite dans l'article de M. Neuendorf et al., A Novel Scheme for Low Bitrate Unified Speech and Audio Coding - MPEG RMO, 7-10 May 2009, 126th AES Convention. Ce codée RMO alterne entre plusieurs modes de codage:
• Pour les signaux de type parole: modes LPD (pour "Linear Prédictive Domain" en anglais) comprenant deux modes différents dérivés du codage AMR-WB+:
- Un mode ACELP
- Un mode TCX (Transform Coded eXcitation) appelé wLPT (pour "weighted Linear Prédictive Transform" en anglais) utilisant une transformée de type MDCT (contrairement au codée AMR-WB+ qui utilise une transformée de Fourier rapide, FFT, pour « Fast Fourier Transform » en anglais).
• Pour les signaux de type musique: mode FD (pour "Frequency Domain" en anglais) utilisant un codage par transformée MDCT (pour "Modified Discrète Cosine Transform" en anglais) de type MPEG AAC (pour "Advanced Audio Coding" en anglais) sur 1024 échantillons.
Dans le codée USAC, les transitions entre modes LPD et FD sont cruciales pour assurer une qualité suffisante sans défaut de commutation, sachant que chaque mode (ACELP, TCX, FD) a une "signature" spécifique (en termes d'artefacts) et que les modes FD et LPD sont de nature différentes - le mode FD repose sur un codage par transformée dans le domaine du signal, tandis que les modes LPD utilisent un codage linéaire prédictif dans le domaine perceptuellement pondéré avec des mémoires de filtre à gérer correctement. La gestion des commutations intermodes dans le codée USAC RMO est détaillée dans l'article de J. Lecomte et al., "Efficient cross-fade Windowsor transitions between LPC-based and non-LPC based audio coding", 7-10 May 2009, 126th AES Convention. Comme expliqué dans cet article, la difficulté principale réside dans les transitions entre modes LPD vers FD et vice versa. On ne retient ici que le cas des transitions d' ACELP vers FD.
Pour bien en comprendre le fonctionnement, on rappelle ici le principe du codage par transformée MDCT au travers d'un exemple typique de réalisation.
Au codeur la transformation MDCT se divise typiquement entre trois étapes, le signal étant découpé en trames de M échantillons avant codage MDCT:
• Pondération du signal par une fenêtre appelé ici "fenêtre MDCT" de longueur 2M
• Repliement temporel (ou " time-domain aliasing" en anglais) pour former un bloc de longueur M
• Transformation DCT (pour "Discrète Cosine Transform" en anglais) de longueur
M
La fenêtre MDCT est divisée en 4 portions adjacentes de longueurs égales M/2, appelées ici "quarts".
Le signal est multiplié par la fenêtre d'analyse puis les repliements sont effectués : le premier quart (fenêtré) est replié (c'est-à-dire inversé dans le temps et mis en recouvrement) sur le deuxième quart et le quatrième quart est replié sur le troisième.
Plus précisément, le repliement temporel d'un quart sur un autre est effectué de la façon suivante : le premier échantillon du premier quart est additionné (ou soustrait) au dernier échantillon du deuxième quart, le deuxième échantillon du premier quart est additionné (ou soustrait) au avant-dernier échantillon du deuxième quart, et ainsi de suite jusqu'au dernier échantillon du premier quart qui est additionné (ou soustrait) au premier échantillon du deuxième quart.
On obtient donc, à partir de 4 quarts, 2 quarts repliés où chaque échantillon est le résultat d'une combinaison linéaire de 2 échantillons du signal à coder. Cette combinaison linéaire induit un repliement temporel.
Les 2 quarts repliés sont ensuite codés conjointement après transformation DCT (de type IV). Pour la trame suivante on se décale d'une moitié de fenêtre (soit 50% de recouvrement), les troisième et quatrième quarts de la trame précédente deviennent alors le premier et deuxième quart de la trame courante. Après repliement, on envoie une deuxième combinaison linéaire des mêmes paires d'échantillons comme dans la trame précédente, mais avec des poids différents.
Au décodeur, après transformation DCT inverse on obtient donc la version décodée de ces signaux repliés. Deux trames consécutives contiennent le résultat de 2 repliements différents des mêmes quarts, c'est à dire pour chaque paire d'échantillons on a le résultat de 2 combinaisons linéaires avec des poids différents mais connus : un système d'équation peut donc être résolu pour obtenir la version décodée du signal d'entrée, le repliement temporel peut être ainsi supprimé en utilisant 2 trames décodées consécutives.
La résolution des systèmes d'équations mentionnées est en général faite implicitement par dépliement, multiplication par une fenêtre de synthèse judicieusement choisie puis addition- recouvrement des parties communes. Cette addition-recouvrement assure en même temps la transition douce (sans discontinuité due aux erreurs de quantification) entre 2 trames décodées consécutives, en effet cette opération se comporte comme un fondu enchaîné. Quand la fenêtre pour le premier quart ou le quatrième quart est à zéro pour chaque échantillon, on parle d'une transformation MDCT sans repliement temporel dans cette partie de la fenêtre. Dans ce cas la transition douce n'est pas assurée par la transformation MDCT, elle doit être faite par d'autres moyens comme par exemple un fondu enchaîné extérieur.
Il est à noter que des variantes de mise en œuvre de la transformation MDCT existent, en particulier sur la définition de la transformée DCT, sur la façon de replier temporellement le bloc à transformer (par exemple, on peut inverser les signes appliqués aux quarts repliés à gauche et droite, ou replier les deuxième et troisième quart sur respectivement les premiers et quatrième quarts), etc. Ces variantes ne changent pas le principe de l'analyse-synthèse MDCT avec la réduction du bloc d'échantillons par fenêtrage, repliement temporel puis transformation et enfin fenêtrage, repliement et addition-recouvrement.
Dans le cas du codeur USAC RMO décrit dans l'article de Lecomte et al., la transition entre une trame codée par un codage ACELP et une trame codée par un codage FD, s'effectue de la façon suivante:
Une fenêtre de transition pour le mode FD est utilisée avec un recouvrement à gauche de 128 échantillons.
Le repliement temporel sur cette zone de recouvrement est annulé en introduisant un repliement temporel "artificiel" à droite de la trame ACELP reconstruite. La fenêtre MDCT servant
à la transition a une taille de 2304 échantillons et la transformation DCT opère sur 1152 échantillons alors que normalement les trames du mode FD sont codées avec une fenêtre de taille de 2048 échantillons et une transformation DCT de 1024 échantillons. Ainsi la transformation MDCT du mode FD normal n'est pas directement utilisable pour la fenêtre de transition, le codeur doit intégrer également une version modifiée de cette transformation ce qui complexifie la mise en œuvre de la transition pour le mode FD.
Cette technique de codage de l'état de l'art a un retard algorithmique de l'ordre de 100 à 200 ms. Ce retard est incompatible avec des applications conversationnelles pour lesquelles le retard de codage est en général de l'ordre de 20 à 25 ms pour les codeurs de parole pour les applications mobiles (ex: GSM EFR, 3GPP AMR et AMR-WB) et de l'ordre de 40 ms pour les codeurs par transformée conversationnels pour la vidéoconférence (par exemple UIT-T G.722.1 Annexe C et G.719). De plus, le fait de ponctuellement augmenter la taille de transformation DCT (2304 contre 2048) engendre un pic de complexité au moment de la transition.
Pour pallier à ces inconvénients, la demande de brevet internationale WO2012/085451, dont le contenu est incorporé par référence à la présente demande, propose une nouvelle méthode pour coder une trame de transition. La trame de transition est définie comme la trame courante codée par transformée qui succède à une trame précédente codée par un codage prédictif. Selon la nouvelle méthode précitée, une partie de la trame de transition, par exemple une sous trame de 5 ms, dans le cas d'un codage CELP à 12.8 kHz, et deux trames CELP supplémentaires de 4ms chacune, dans le cas d'un codage CELP à 16 kHz, sont codées par un codage prédictif restreint par rapport au codage prédictif de la trame précédente.
Le codage prédictif restreint consiste à utiliser les paramètres stables de la trame précédente codée par un codage prédictif, comme par exemple les coefficients du filtre de prédiction linéaire et de ne coder que quelques paramètres minimaux pour la sous-trame supplémentaire dans la trame de transition.
Comme la trame précédente n'a pas été codée avec un codage par transformée, l'annulation du repliement temporel dans la première partie de la trame est impossible. La demande de brevet WO2012/085451 précitée propose en outre de modifier la première moitié de la fenêtre MDCT de manière à ne pas avoir de repliement temporel dans le premier quart normalement replié. Il est aussi proposé d'intégrer une partie de addition-recouvrement (aussi appelé « fondu enchaîné » ou encore « overlap-add » en anglais) entre la trame CELP décodée et la trame MDCT décodée en modifiant les coefficients de la fenêtre d'analyse/synthèse. En référence à la figure 4e de la demande précitée, les traits mixtes (lignes alternant des points et traits) correspondent aux lignes de repliement de codage MDCT (figure du haut) et aux lignes de dépliement de décodage MDCT (figure du bas). Sur la figure du haut, les lignes en gras séparent les trames de nouveaux échantillons à l'entrée du codeur. Le codage d'une nouvelle trame MDCT peut être commencé quand une trame ainsi définie de nouveaux échantillons d'entrée est entièrement disponible. Il est
important de remarquer que ces lignes en gras au codeur ne correspondent pas à la trame courante mais aux blocs successifs de nouveaux échantillons arrivant pour chaque trame : la trame courante est en fait retardée de 8,75 ms qui correspondent à une anticipation, dénommée « lookahead » en anglais. Sur la figure du bas, les lignes en gras séparent les trames décodées à la sortie du décodeur.
Au codeur, la fenêtre de transition est nulle jusqu'au point de repliement. Ainsi les coefficients de la partie gauche de la fenêtre repliée seront identiques à ceux de la fenêtre non repliée. La partie entre le point de repliement et la fin de la sous-trame CELP de transition (TR) correspond à une demi-fenêtre sinusoïdale. Au décodeur, après dépliement, la même fenêtre est appliquée au signal. Sur le segment entre le point de repliement et le début de la trame MDCT, les coefficients de la fenêtre correspondent à une fenêtre de forme sin2. Pour assurer addition- recouvrement entre la sous trame CELP décodée et le signal issu de la MDCT, il suffit d'appliquer une fenêtre de type cos2 à la partie de la sous-trame CELP en recouvrement et de sommer cette dernière avec la trame MDCT. La méthode est à reconstruction parfaite.
Toutefois, la demande WO2012/085451 prévoit l'allocation d'un budget de bits pour le codage de la sous-trame CELP qui correspondrait au budget nécessaire au codage CELP d'une trame classique, ramené à une seule sous-trame. Le budget restant pour le codage de la trame de transition par transformée est alors insuffisant et peut amener à une baisse de qualité à bas débit.
La présente invention vient améliorer cette situation.
A cet effet, un premier aspect de l'invention concerne un procédé de détermination d'une répartition de bits de codage d'une trame de transition. Ce procédé est mis en œuvre dans un codeur/décodeur pour le codage/décodage d'un signal numérique. La trame de transition est précédée d'une trame précédente codée par prédiction et le codage de cette trame de transition comprend un codage par transformée et un codage prédictif d'une unique sous-trame de la trame de transition. Le procédé comporte les étapes suivantes :
- affectation d'un débit binaire pour le codage prédictif de la sous-trame de transition, le débit binaire étant égal au minimum entre le débit binaire du codage par transformée de la trame de transition et une première valeur prédéterminée de débit binaire ;
- détermination d'un premier nombre de bits alloués pour le codage prédictif de la sous-trame de transition pour le débit binaire ; et
- calcul d'un deuxième nombre de bits alloués pour le codage par transformée de la trame de transition à partir du premier nombre de bits et d'un nombre de bits disponibles pour le codage de le trame de transition.
Le débit binaire du codage prédictif est donc bridé par une valeur maximum. Le nombre de bits alloués au codage prédictif dépend de ce débit binaire. Dans la mesure où plus le débit binaire est faible, plus le nombre de bits alloué au codage est faible, on garantit un budget restant minimum pour le codage de la trame de transition par transformée.
De plus, le nombre de bits alloués au codage prédictif de la sous-trame est optimisé par rapport au débit binaire du codage par transformée. En effet, si le débit binaire du codage par transformée de la trame de transition est inférieur à la première valeur prédéterminé, le débit binaire pour le codage prédictif et le débit binaire pour le codage par transformée est identique. La cohérence des signaux ainsi généré est donc améliorée ce qui simplifie les étapes ultérieures de codage (codage canal) et le traitement des trames reçues au décodeur.
Dans un autre mode de réalisation, le codeur/décodeur comprend un premier cœur fonctionnant, pour le codage/décodage prédictif d'une trame de signal, à une première fréquence, et un deuxième cœur fonctionnant, pour le codage/décodage prédictif d'une trame de signal, à une deuxième fréquence. La première valeur prédéterminée de débit binaire dépend du cœur sélectionné parmi les premier et deuxième cœurs pour le codage/décodage de la trame précédente codée par prédiction.
La fréquence de fonctionnement du cœur du codeur/décodeur a une influence sur le nombre de bits requis pour représenter correctement le signal numérique d'entrée. Par exemple, pour certaines fréquences de fonctionnement, il faut prévoir des bits supplémentaires pour coder des bandes fréquences non directement traitées par le cœur.
Dans un mode de réalisation, lorsque le premier cœur a été sélectionné pour le codage/décodage de la trame précédente codée par prédiction, le débit binaire affecté est en outre égal au maximum entre le débit binaire de la trame de transition codée par transformée et au moins une deuxième valeur prédéterminée de débit binaire, la deuxième valeur étant inférieure à la première valeur. Ainsi, un débit binaire minimum est garanti afin d'éviter des écarts de débits trop importants entre les différentes trames codées.
Dans un autre mode de réalisation, le signal numérique est décomposé en au moins une bande basse de fréquences et une bande haute de fréquence. Dans cette situation, le premier nombre de bits calculé est affecté au codage prédictif de la sous-trame de transition pour la bande basse de fréquences. Un troisième nombre de bits prédéterminé est alors alloué à un codage de la sous-trame de transition pour la bande haute de fréquences. De plus, le deuxième nombre de bits alloués pour le codage par transformée de la trame de transition est alors déterminé en outre à partir troisième nombre de bits prédéterminé. Ainsi, il est possible de coder efficacement la totalité du spectre fréquentiel du signal d'entrée sans sacrifier la qualité du signal restitué au décodage.
Dans un mode de réalisation, le nombre de bits disponibles pour le codage de la trame de transition est fixe. Ceci réduit la complexité des étapes de codage.
Dans un autre mode de réalisation, le deuxième nombre de bits est égal au nombre fixe de bits de codage de la trame de transition moins le premier nombre de bits moins le troisième nombre de bits. La détermination finale de la répartition des bits dans la trame de transition est ainsi limitée à une soustraction de valeurs entières ce qui simplifie le codage.
En variante, le deuxième nombre de bits est égal au nombre fixe de bits de codage de la trame de transition moins le premier nombre de bits moins le troisième nombre de bits moins un premier bit moins un deuxième bit. Le premier bit indique si un filtrage passe-bas est effectué lors de la détermination des paramètres du codage prédictif de la sous-trame de transition, les paramètres étant relatifs au délai tonal. Le deuxième bit indique la fréquence utilisée par le cœur du codeur/décodeur pour le codage/décodage prédictif de la sous-trame de transition. Une telle indication permet un codage plus flexible.
Un deuxième aspect de l'invention concerne un procédé de codage d'un signal numérique dans un codeur apte à coder des trames de signal selon un codage prédictif ou selon un codage par transformée, comportant les étapes suivantes :
* codage d'une trame précédente d'échantillons du signal numérique selon un codage prédictif ;
* codage d'une trame courante d'échantillons du signal numérique en une trame de transition, le codage de la trame de transition comprenant un codage par transformée et un codage prédictif d'une unique sous-trame de la trame de transition, le codage de la trame courante comportant les sous-étapes suivantes :
- détermination de la répartition des bits par le procédé selon le premier aspect de l'invention ;
- codage par transformée de la trame de transition sur le deuxième nombre de bits alloués ;
- codage prédictif de la sous-trame de transition sur le premier nombre de bits alloués. La détermination de la répartition des bits compris dans la trame de transition est ainsi déterminée avant le codage. Comme cela est décrit ci-après, cette détermination de la répartition des bits est reproductible au décodeur ce qui évite une transmission explicite d'informations sur cette répartition.
De plus, ce codage garantit une répartition équilibré entre le codage prédictif et le codage par transformée au sein de la trame de transition.
Dans un mode de réalisation, le codage prédictif comprend la génération de paramètres de codage prédictif déterminés pour le débit binaire affecté lors de la répartition des bits dans la trame de transition. L'utilisation de tels paramètres prédictifs permet d'optimiser au mieux le ratio entre le débit binaire affecté au codage prédictif et le débit restant affecté au codage par transformée, et donc d'optimiser la qualité du signal reconstruit. En effet, à qualité constante, le nombre de bits attribués à tel ou tel paramètre prédictif peut varier dans des proportions non linéaires par rapport au débit binaire affecté au codage prédictif.
Dans un autre mode de réalisation, le codage prédictif comprend la génération de paramètres de codage prédictif restreints par rapport au codage prédictif de la trame précédente en réutilisant au moins un paramètre du codage prédictif de la trame précédente. Ainsi, au décodage,
des informations complémentaires sont extraites de la trame précédente pour compléter le décodage de la sous-trame de transition à décoder. Ceci réduit le nombre de bits qui doivent être réservés pour le codage prédictif de la sous-trame de transition.
La combinaison d'une réutilisation de paramètres d'une trame précédente avec l'affectation du débit binaire du codage par transformée de la trame de transition permet d'assurer une transition cohérente à moindre coût.
Un troisième aspect de l'invention concerne un procédé de décodage d'un signal numérique codé par un codage prédictif et par un codage par transformée, comportant les étapes de:
* décodage prédictif d'une trame précédente d'échantillons du signal numérique codée selon un codage prédictif ;
* décodage d'une trame de transition codant une trame courante d'échantillons du signal numérique, le codage de la trame de transition comprenant un codage par transformée et un codage prédictif d'une unique sous-trame de la trame de transition, comportant les sous-étapes de :
- détermination de la répartition des bits par le procédé selon le premier aspect de l'invention ;
- décodage prédictif de la sous-trame de transition sur le premier nombre de bits alloués ;
- décodage par transformée de la trame de transition sur le deuxième nombre de bits alloués.
Comme mentionné ci-avant, le procédé de détermination de la répartition des bits dans la trame de transition est directement reproductible au niveau du décodeur. En effet, la répartition des bits est déterminée uniquement à partir du débit binaire de la partie de la trame de transition codée par transformée. Aucun bit supplémentaire n'est donc nécessaire pour mettre en œuvre cette étape de détermination de la répartition des bits et une économie de bande passante est donc réalisée.
Un quatrième aspect de l'invention vise en outre un programme informatique comportant des instructions pour la mise en œuvre du procédé selon les aspects de l'invention décrits ci-avant, lorsque ces instructions sont exécutées par un processeur.
Un cinquième aspect de l'invention concerne un dispositif de détermination d'une répartition de bits de codage d'une trame de transition, ce dispositif étant mis en œuvre dans un codeur/décodeur pour le codage/décodage d'un signal numérique, la trame de transition étant précédée d'une trame précédente codée par prédiction, le codage de la trame de transition comprenant un codage par transformée et un codage prédictif d'une unique sous-trame de la trame de transition, le nombre de bits de codage de la trame de transition étant fixe, le dispositif comportant un processeur agencé pour effectuer les opérations suivantes :
- affectation d'un débit binaire pour le codage prédictif de la sous-trame de transition, ledit débit binaire étant égal au minimum entre le débit binaire du codage par transformée de la trame de transition et une première valeur prédéterminée de débit binaire, au ;
- détermination d'un premier nombre de bits alloués pour le codage prédictif de la sous-trame de transition pour le débit binaire;
- calcul d'un deuxième nombre de bits alloués pour le codage par transformée de la trame de transition à partir du nombre de bits requis pour le codage des paramètres de codage et le nombre fixe de bits de codage de la trame de transition.
Un sixième aspect de l'invention vise en outre un codeur apte à coder des trames d'un signal numérique selon un codage prédictif ou selon un codage par transformée, comportant :
* un dispositif selon le cinquième aspect de l'invention ;
* un codeur prédictif comportant un processeur agencé pour effectuer les opérations suivantes :
- codage d'une trame précédente d'échantillons du signal numérique selon un codage prédictif ;
- codage prédictif d'une unique sous-trame comprise dans une trame de transition codant une trame courante d'échantillons du signal numérique, le codage de la trame de transition comprenant un codage par transformée et un codage prédictif de la sous-trame, le processeur étant agencé pour effectuer l'opération de codage prédictif de la sous-trame de transition sur le premier nombre de bits alloués ;
* un codeur par transformée comportant un processeur agencé pour effectuer un codage par transformée de la trame de transition sur le deuxième nombre de bits alloués.
Un septième aspect de l'invention vise en outre un décodeur d'un signal numérique codé par un codage prédictif et par un codage par transformée, comportant :
* un dispositif selon le cinquième aspect de l'invention ;
* un décodeur prédictif comportant un processeur agencé pour effectuer les opérations suivantes :
- décodage prédictif d'une trame précédente d'échantillons du signal numérique codée selon un codage prédictif ;
- décodage prédictif d'une unique sous-trame comprise dans une trame de transition codant une trame courante d'échantillons du signal numérique, le codage de la trame de transition comprenant un codage par transformée et un codage prédictif de la sous-trame, le processeur étant agencé pour effectuer l'opération de décodage prédictif de la sous-trame de transition sur le premier nombre de bits alloués ;
* un décodeur par transformée comportant un processeur agencé pour effectuer un décodage par transformée de la trame de transition sur le deuxième nombre de bits alloués.
D'autres caractéristiques et avantages de l'invention apparaîtront à l'examen de la description détaillée ci-après, et des dessins annexés sur lesquels:
la figure 1 illustre un codeur audio selon un mode de réalisation de l'invention ; la figure 2 est un diagramme illustrant les étapes d'un procédé de codage, mis en œuvre par le codeur audio de la figure 1, selon un mode de réalisation de l'invention ;
la figure 3 présente une transition entre trames CELP et MDCT selon un mode de réalisation de l'invention ;
la figure 4 est un diagramme illustrant les étapes d'un procédé de détermination d'une répartition de bits de codage d'une trame de transition, selon un mode de réalisation de l'invention ;
la figure 5 illustre un décodeur audio selon un mode de réalisation de l'invention ; la figure 6 est un diagramme illustrant les étapes d'un procédé de décodage, mis en œuvre par le décodeur audio de la figure 5, selon un mode de réalisation de l'invention ;
la figure 7 illustre un dispositif de détermination de la répartition de bits dans une trame de transition selon un mode de réalisation de l'invention.
La figure 1 illustre un codeur audio 100 selon un mode de réalisation de l'invention.
La figure 2 est un diagramme illustrant les étapes d'un procédé de codage, mis en œuvre par le codeur audio 100 de la figure 1, selon un mode de réalisation de l'invention.
Le codeur 100 comprend une unité de réception 101 pour recevoir, à une étape 201, un signal d'entrée échantillonné à une fréquence donnée fs (par exemple 8, 16, 32 ou 48 kHz) et décomposé en sous-trames, par exemple de 20 ms.
Sur réception d'une trame courante, une unité de pré-traitement 102 est apte à sélectionner, à une étape 202, le mode de codage qui est le plus adéquat pour le codage de la trame courante, parmi au moins un mode LPD et un mode FD. Dans la description qui suit, il est considéré, à titre illustratif, qu'un codage MDCT est utilisé pour le mode FD et qu'un codage CELP est utilisé pour le mode LPD. Aucune restriction n'est attachée aux techniques de codage respectivement employées pour les modes LPD et FD. Ainsi, des modes supplémentaires aux modes CELP et MDCT peuvent être par exemple utilisés, le codage CELP peut être remplacé par un autre type de codage prédictif, la transformée MDCT peut être remplacée par un autre type de transformée.
On suppose ici que le type de trame est transmis explicitement par l'intermédiaire du bloc 206, avec par exemple un codage de longueur fixe indiquant le mode choisi parmi une liste prédéfinie. Dans des variantes de l'invention, ce codage du mode choisi dans chaque trame pourra être de longueur variable. On prévoit également que le type de codage CELP (12,8 ou 16 kHz) pourra être transmis explicitement par le biais d'un bit afin de faciliter le décodage de la trame de transition.
Une étape 203 vérifie que le codage CELP a été sélectionné à l'étape 202. Dans le cas où le mode LPD est sélectionné, la trame de signal est transmise à un codeur CELP 103 pour le codage d'une trame CELP à une étape 204. Le codeur CELP peut utiliser deux « cœurs » fonctionnant à deux fréquences d'échantillonnage internes respectives, par exemple fixées à 12,8 kHz et 16 kHz, qui requièrent d'utiliser un échantillonnage du signal d'entrée (à la fréquence fs) à la fréquence interne de 12,8 ou 16 kHz. Un tel ré -échantillonnage peut être mis en œuvre dans une unité de ré -échantillonnage dans le bloc de pré-traitement 102 ou dans le codeur CELP 103. La trame est ensuite codée par prédiction par le codeur CELP 103 en déduisant des paramètres CELP qui dépendent en général d'une classification du signal. Ces paramètres CELP incluent typiquement des coefficients LPC, un vecteur de gains adaptatif et fixe, un vecteur de dictionnaire adaptatif, un vecteur de dictionnaire fixe. Cette liste peut également être modifiée en fonction d'une classe de signal dans la trame, comme dans le codage UIT-T G.718. Les paramètres ainsi calculés peuvent ensuite être quantifiés, multiplexés et transmis à une étape 206 au décodeur par une unité de transmission 108. Des paramètres de codage CELP, tels que les coefficients LPC, le vecteur de gains adaptatif et fixe, le vecteur de dictionnaire adaptatif, le vecteur de dictionnaire fixe ainsi que des états du décodeur CELP peuvent en outre être mémorisés, à une étape 205, dans une mémoire 107 dans le cas où la trame suivant la trame courante serait une trame de transition MDCT.
Comme expliqué ci-après, une extension de bande pourra également être effectuée avec un codage associée de la bande haute lorsque la trame courante est de type CELP.
Dans le cas où le codage MDCT a été sélectionné par l'unité 102 à l'étape 203, il est vérifié à une étape 207 que la trame précédant la trame courante a été codée par transformée MDCT. Dans le cas où la trame précédant la trame courante a été codée par transformée MDCT, la trame courante est transmise au codeur MDCT 105 directement, pour un codage par transformée MDCT de la trame courante à une étape 208. Le codeur MDCT peut coder une trame couvrant 28,75 ms de signal non ré-échantillonné, incluant 20 ms de trame et 8,75 ms de lookahead par exemple. Aucune restriction n'est attachée à la taille de la fenêtre MDCT. En outre, un retard correspondant au retard du codeur CELP dû au ré -échantillonnage du signal d'entrée, est appliqué à la trame codée par le codeur MDCT, de manière à ce que les trames MDCT et CELP soient synchronisées. Un tel retard au codeur peut être de 0,9375 ms selon le type de ré -échantillonnage avant codage CELP. La trame codée par transformée MDCT est transmise au décodeur à l'étape 206.
Dans le cas où le codage MDCT est sélectionné par l'unité 102, et dans le cas où la trame précédant la trame courante a été codée par prédiction, la trame courante est une trame de transition et est transmise à une unité de transition 104. Comme décrit dans ce qui suit, la trame de transition MDCT comprend une sous-trame CELP supplémentaire.
L'unité de transition 104 est apte à mettre en œuvre les étapes suivantes : anticiper, à une étape 209, le budget de bits nécessaires au codage de la sous-trame CELP
de transition de manière à définir le budget disponible pour le codage MDCT de la trame courante. Comme détaillé dans ce qui suit, le budget peut dépendre du débit de la trame courante. En outre, le budget peut être évalué en fonction du cœur CELP utilisé. Afin de conserver un budget de bits suffisant pour ne pas dégrader la qualité du codage MDCT, l'invention peut prévoir de borner le débit de codage de la sous-trame CELP. Elle comprend à cet effet un dispositif de détermination de la répartition de bits dans une trame de transition, tel que le dispositif 700 de la figure 7 ;
modifier, à une étape 210, la fenêtre MDCT utilisée au codeur conformément à la figure 3 décrite ci-après ;
mettre à zéro la mémoire de la transformation MDCT puisque la trame précédente était une trame CELP, à une étape 211 - de façon équivalente la mémoire MDCT pourra être ignorée dans le décodage MDCT.
Dans un mode de réalisation, au moins une de ces étapes est effectuée par l'unité de codage de trame de transition 106 décrite ci-après.
La trame MDCT de transition est codée par le codeur MDCT 105, à une étape 212, telle que décrit dans ce qui suit, et sur la base du budget de bits alloués à l'étape 209. La sous-trame CELP supplémentaire est également codée par le codeur CELP 103, à une étape 213, comme décrit dans ce qui suit en référence à la figure 3, et en fonction du budget de bits alloués à l'étape 209. Le codage CELP peut être effectué avant ou après codage MDCT.
La figure 3 présente la transition entre trames CELP et MDCT au codeur, avant codage, et au décodeur, avant décodage.
Une trame à coder 301 est reçue au codeur 100 et est codée par le codeur CELP 103. Une trame courante 302 est ensuite reçue en entrée du codeur 100 pour être codée par transformée MDCT. Il s'agit donc d'une trame de transition. La trame suivante 303 reçue en entrée du codeur est également codée par transformée MDCT. Selon l'invention, la trame suivante 303 pourrait être codée par codage CELP et aucune restriction n'est attachée au codage employée pour la trame suivante 303.
Une fenêtre MDCT asymétrique 304 peut être utilisée pour le codage de la trame courante. Cette fenêtre 304 présente un front montant 307 de 14,375 ms, un palier avec un gain à 1 de 11,25 ms, un front descendant 309 de 8,75 ms correspondant au lookahead, et une partie nulle 310 de 5,265 ms. L'ajout de la partie nulle 310 permet de diminuer le lookahead et ainsi le retard correspondant. Dans un mode de réalisation, la forme de cette fenêtre d'analyse MDCT pour le codage MDCT est modifiée par exemple pour diminuer encore le lookahead ou pour utiliser une fenêtre symétrique dont des exemples sont donnés dans la demande de brevet WO2012/085451.
Le trait en pointillés 312 représente le milieu de la fenêtre MDCT 304. De part et d'autre du trait 312, les quarts de 10 ms de la fenêtre MDCT 212 sont repliés comme décrit en
partie introductive. La ligne continue 311 indique la zone de repliement entre les premier et deuxième quarts de la fenêtre MDCT 304.
La fenêtre MDCT de la trame suivante 303 est référencée 306 et présente une zone d'addition recouvrement avec la fenêtre MDCT 304 correspondant au front descendant 309 de la fenêtre MDCT 304.
Une fenêtre MDCT 305 représente théoriquement la fenêtre qui serait appliquée à la trame précédente si elle avait été codée par transformée MDCT. Toutefois, la trame précédente 301 étant codée par le codeur CELP 103, il est nécessaire, afin de permettre le dépliement au décodeur de la première partie de la trame codée par transformée MDCT, que la fenêtre soit nulle dans le premier quart (étant donné que la seconde partie de la trame MDCT précédente n'est pas disponible).
A cet effet, la fenêtre MDCT 304 est modifiée en une fenêtre MDCT 313 dont le premier quart est à zéro, permettant ainsi le repliement temporel dans la première partie de la trame MDCT au décodeur.
Au niveau du décodeur, les fenêtres d'analyse 304, 305, 306 et 313 correspondent respectivement à des fenêtres de synthèse 324, 325, 326 et 327. Cette fenêtre de synthèse est donc inversée temporellement par rapport à la fenêtre d'analyse correspondante. Dans des variantes de l'invention, les fenêtres d'analyse et de synthèse peuvent être identiques, de type sinusoïdale ou autre.
Une première trame 320 de nouveaux échantillons codée par codage CELP est reçue au décodeur. Elle correspond à la version codée de la trame CELP 301. On rappelle ici que la trame décodée est décalée de 8.75 ms par rapport à la trame 320.
La version codée de la trame de transition 302, est ensuite reçue (références 321 et 322 formant une trame complète). Entre la fin de la trame CELP 320 et le début du front montant de la fenêtre de synthèse 327 (correspondant à la ligne de repliement), un trou ou GAP est créé. Dans l'exemple particulier représenté ici, un quart de fenêtre MDCT étant de 10 ms et la partie nulle de la fenêtre de synthèse MDCT 324 qui recouvre la trame CELP 320 étant de 5,625 ms (correspondant à la partie 310 de la fenêtre d'analyse MDCT 204), le trou est de 4,375 ms. En outre, afin d'assurer une longueur d'addition recouvrement satisfaisante avec le début de la partie non nulle de la fenêtre MDCT 327, le retard entre la trame CELP 320 et le début de la fenêtre MDCT 327 est prolongé de la longueur requise. Dans l'exemple qui suit, nous considérons, à titre illustratif, une longueur d'addition recouvrement satisfaisante de 1,875 ms, le retard précité (correspondant à une longueur de signal manquant) étant ainsi porté à 6,25 ms, tel que représenté par la référence 321 sur la figure 2.
On notera que les trames de signaux représentées à la figure 3 peuvent contenir des signaux à des fréquences d'échantillonnage différentes qui sont de 12,8 ou 16 kHz en cas de codage/décodage CELP et de fs en cas de codage/décodage MDCT ; cependant au décodeur, après
ré -échantillonnage de la synthèse CELP et décalage temporel de la synthèse MDCT les trames restent synchronisées et la représentation de la figure 3 reste exacte.
Comme évoqué précédemment la demande WO2012/085451 propose de coder une sous- trame CELP supplémentaire de 5ms au début de la trame de transition MDCT, dans le cas d'un codage CELP à 12.8 kHz, et deux trames CELP supplémentaires de 4ms chacune au début de la trame de transition MDCT, dans le cas d'un codage CELP à 16 kHz.
Dans le cas à 12,8 kHz, le retard de 6,25 ms n'est pas comblé et l'addition recouvrement est impactée : on dispose uniquement au décodeur de 0,625 ms d'addition recouvrement, ce qui est insuffisant.
Dans le cas à 16 kHz, deux sous-trames CELP supplémentaires sont codées au début de la trame de transition, ce qui ne laisse que très peu de budget pour coder la trame MDCT de transition et peut amener à une baisse de qualité significative à bas débit.
Afin de surmonter ces inconvénients, la présente invention peut prévoir de coder une unique sous-trame CELP supplémentaire à 12,8 ou 16 kHz par le codeur CELP 103. Des échantillons supplémentaires sont générés au décodeur, comme détaillé dans ce qui suit, afin de générer le signal manquant sur la longueur de 6,25 ms précitée.
Afin de coder la sous-trame CELP de transition, l'unité 106 peut réutiliser au moins un paramètre CELP de la trame CELP précédente. Par exemple, l'unité 106 peut réutiliser les coefficients de prédiction linéaire A(z) de la sous -trame CELP précédente ainsi que l'énergie de l'innovation de la trame précédente (stockés dans la mémoire 107 tel que précédemment décrit) afin de coder uniquement le vecteur de dictionnaire adaptatif, le gain adaptatif, le gain fixe et le vecteur du dictionnaire fixe de la sous trame CELP de transition. Ainsi, la sous-trame supplémentaire CELP peut être codée avec le même cœur (12,8 kHz ou 16 kHz) que la trame CELP précédente.
Une unité de codage de trame de transition 106 assure le codage d'une trame de transition selon l'invention. L'invention peut prévoir en outre l'insertion par l'unité 106 dans le flux binaire d'un bit supplémentaire indiquant que la trame codée 322 est une trame de transition, cependant dans le cas général cette indication de trame de transition pourra également être transmise dans l'indication globale de mode de codage de la trame courante, sans prendre de bits supplémentaire.
L'invention peut en outre prévoir que cette unité 106 code la bande haute du signal aux étapes 204 et 214 (procédé dit « d'extension de bande »), lorsque celle-ci est requise, avec un budget fixe puisque la fréquence d'échantillonnage du signal de synthèse au décodeur n'est pas forcément identique à la fréquence du cœur CELP.
A cet effet, l'unité de codage de trame de transition 106 peut mettre en œuvre les étapes suivantes :
- filtrage de la trame précédente CELP et de la sous-trame CELP de la trame de transition par un filtre passe -haut afin de ne conserver que la partie haute du spectre (au-dessus de la
fréquence qui correspond au cœur CELP utilisé, soit au dessus de 6,4 ou 8 kHz). Un tel filtrage peut être mis en œuvre par un filtre à réponse impulsionnelle finie, FIR, du codeur CELP 103 ;
- recherche de corrélation entre la partie filtrée de la sous-trame CELP de transition originale et la trame CELP précédente filtrée afin d'estimer un paramètre de retard puis un gain (différence d'amplitude entre le signal correspondant à la sous-trame filtrée et le signal prédit par application du retard) ;
- codage du paramètre de retard et du gain précités en utilisant par exemple une quantification scalaire (par exemple, le retard peut être codé sur 6 bits et le gain sur 6 bits).
L'étape 209 précitée est illustrée plus en détails en référence à la figure 4 qui est un diagramme illustrant les étapes d'un procédé de détermination d'une répartition de bits de codage de transition selon un mode de réalisation de l'invention. Le procédé précité est mis en œuvre de la même manière au codeur et au décodeur, mais est présenté, à titre illustratif uniquement, côté codeur.
A une étape 400, le débit total (en bit/s), noté core_brate, qui peut être alloué au codage de la trame courante est fixé comme étant égal au débit de sortie du codeur MDCT. La durée de la trame étant considérée dans cet exemple comme étant de 20 ms, le nombre de trames par seconde est 50 et le budget total en bits est égal à core_brate / 50. Le budget total peut être fixe, dans le cas d'un codeur à débit fixe, ou variable, dans le cas d'un codeur à débit variable lorsqu'une adaptation du débit de codage est mise en œuvre. Dans la suite, on utilise une variable num_bits, initialisée à la valeur core_brate /50.
A une étape 401, l'unité de transition 104 détermine le cœur CELP, parmi au moins deux cœurs CELP, qui a été utilisé pour le codage de la trame CELP précédente. Dans l'exemple qui suit, on considère deux cœurs CELP fonctionnant à des fréquences respectives de 12,8 kHz et 16 kHz. En variante, un seul cœur CELP est mis en œuvre au codage et/ou au décodage.
Dans le cas où le cœur CELP utilisé pour la trame CELP précédente est à une fréquence de 12,8 kHz, le procédé comprend une étape 402 d'affectation d'un débit binaire, noté cbrate, pour le codage CELP de la sous-trame de transition, le débit binaire étant égal au minimum entre le débit binaire du codage MDCT de la trame de transition et une première valeur prédéterminée de débit binaire. La première valeur prédéterminée peut être fixée à 24,4 kbit/s par exemple, ce qui permet d' assurer un budget de bits satisfaisant pour le codage par transformée.
Ainsi, cbrate = min(core_bitrate, 24400). Cette limitation revient à brider le fonctionnement du codage CELP restreint limité à la sous-trame supplémentaire avec des paramètres CELP codés comme s'ils étaient codés par un codage CELP à au plus 24,40 kbit/s.
A une étape 403 facultative, le débit binaire affecté est comparé à un débit binaire CELP à 11,60 kbit/s. Si le débit binaire affecté est supérieur, un bit peut être réservé pour coder une indication binaire de filtrage passe-bas du dictionnaire adaptatif (comme par exemple dans le
codage AMR-WB aux débits supérieurs ou égaux à 12,65 kbit/s). La variable num_bits est mise à jour :
num_bits := num_bits - 1
A une étape 404, un premier nombre de bits, noté budgl, est alloué pour le codage prédictif de la sous-trame CELP supplémentaire. Le premier nombre de bits budgl représente le nombre de bits représentant les paramètres CELP utilisés pour le codage de la sous-trame CELP. Comme précédemment détaillé, le codage de la sous-trame CELP peut être restreint en ce qu'un nombre restreint de paramètres CELP est utilisé, certains paramètres utilisés pour le codage de la trame CELP précédente étant réutilisés avantageusement.
Par exemple, seule l'excitation peut être modélisée pour le codage de la sous-trame CELP supplémentaire, et des bits sont ainsi réservés uniquement pour le vecteur du dictionnaire fixe, pour le vecteur du dictionnaire adaptatif et pour le vecteur de gains. Le nombre de bits attribués à chacun de ces paramètres est déduit du débit binaire affecté au codage de la sous-trame CELP supplémentaire à l'étape 402. Par exemple, le Tableau 1/G722.2 - Répartition des bits de l'algorithme de codage AMR-WB pour trame de 20ms, issu de la version de juillet 2003 de la norme G.722.2 de l'ITU-T, donne des exemples d'allocations de bits par paramètre CELP en fonction du débit binaire affecté.
Dans l'exemple précédent, où le codage de la sous-trame est restreint, budgl correspond à la somme des bits attribués respectivement au dictionnaire adaptatif, au dictionnaire fixe et au vecteur de gains. Par exemple, pour un débit binaire affecté de 19,85 kbit/s, en se référant au Tableaul/G722 précité, 9 bits sont alloués au dictionnaire adaptatif (délai tonal), 72 bits sont alloués au dictionnaire fixe (code algébrique), et 7 bits sont alloués au vecteur de gains (gain de répertoire). Dans ce cas, budgl est égal à 88 bits.
La variable num_bits peut ainsi être mise à jour :
num_bits := num_bits - budgl
L'invention peut également prévoir de prendre en compte des classes de trames dans l'allocation de bits aux paramètres CELP. Par exemple, la norme G.718 de l'ITU-T, dans sa version de juin 2008, sections 6.8 et 8.1, donne les budgets à allouer à chaque paramètre CELP en fonction de classes, ou modes tels que le mode non-voisé (UC), le mode voisé (VC), le mode de transition (TC) et le mode générique (GC), et en fonction du débit binaire alloué (layerl ou layer2, correspondant à des débits respectifs de 8kbit/s et de 8+4 kbit/s). Le codeur G.718 est un codeur hiérarchique, mais il est possible de combiner les principes de codage CELP utilisant une classification de G.718 avec l'allocation multidébits d' AMR-WB.
S'il a été déterminé à l'étape 401 que le cœur CELP utilisé pour la trame CELP précédente est à une fréquence de 16 kHz, le procédé comprend une étape 405 d'affectation d'un débit binaire, noté cbrate, pour le codage CELP de la sous-trame de transition, le débit binaire étant égal au minimum entre le débit binaire du codage MDCT de la trame de transition et une première
valeur prédéterminée de débit binaire. Dans le cas du cœur à 16 kHz, la première valeur prédéterminée peut être fixée à 22,6 kbit/s par exemple, ce qui permet d'assurer un budget de bits satisfaisant pour le codage par transformée. Ainsi, la première valeur prédéterminée dépend du cœur CELP utilisé pour le codage de la trame CELP précédente. En outre, pour le codage cœur à 16 kHz, des valeurs seuils peuvent être appliquées lors de l'affectation d'un débit binaire au codage CELP. Ainsi, le débit binaire affecté est en outre égal au maximum entre le débit binaire de la trame de transition codée par transformée et au moins une deuxième valeur prédéterminée de débit binaire, la deuxième valeur étant inférieure à la première valeur. La deuxième valeur prédéterminée de débit binaire peut par exemple être égal à 14,8 kbit/s. Ainsi, si le débit binaire de la trame de transition codée par transformée est inférieur à 14,8 kbit/s, le débit binaire affecté au codage CELP de la sous-trame de transition peut être de 14,8 kbit/s.
Dans un mode de réalisation complémentaire, si le débit binaire de la trame de transition codée par transformée est inférieur à 8 kbit/s, le débit affecté peut être égal à 8 kbit/s.
Ainsi, selon ce mode de réalisation complémentaire, l'algorithme suivant est obtenu :
Si core_bitrate < 8000
cbrate = 8000
Sinon si core_bitrate < 14800
cbrate = 14800
Sinon
cbrate = min(core_bitrate ) 22600)
Fin si
A une étape 407 facultative, le débit binaire affecté est comparé à un débit binaire CELP à 11,60 kbit/s. Si le débit binaire affecté est supérieur, un bit peut être réservé pour coder une indication binaire de filtrage passe-bas du dictionnaire adaptatif. La variable num_bits est mise à jour :
num_bits := num_bits - 1
A une étape 408, de la même manière qu'à l'étape 404, un premier nombre de bits budgl est alloué pour le codage prédictif de la sous-trame CELP supplémentaire, et budgl dépend du débit binaire affecté au codage CELP de la sous-trame de transition.
A une étape 410 commune aux codages à différentes fréquences de cœur, un deuxième nombre de bits alloués pour le codage par transformée de la trame de transition, noté budg2, est calculé à partir du premier nombre de bits budgl et du nombre de bits total de la trame de transition. Au vu des calculs ci-dessus, budg2 est égal à la variable num_bits. En général, le mode de la trame courante de transition est supposé ici imputé au budget de codage MDCT, cette information n'est donc pas explicitement prise en compte ici.
Les étapes précédentes peuvent avoir été mises en œuvre pour le codage d'une bande basse de fréquences de la sous-trame de transition, dans le cas où le signal audio est décomposé en au moins une bande basse de fréquences et une bande haute de fréquences. A une étape 409
facultative précédant l'étape 410, également commune aux codages à différentes fréquences de cœur, le procédé peut comprendre l'allocation d'un troisième nombre de bits prédéterminé, noté budg3 au codage de la bande haute de fréquences de la sous-trame de transition. Dans ce cas, le deuxième nombre de bits budg2 est calculé à la fois à partir du premier nombre de bits budgl et du troisième nombre de bits budg3.
Comme précédemment expliqué, le codage de la bande haute de fréquences (ou extension de bande) de la sous-trame de transition peut être fondé sur une corrélation entre la trame précédente du signal audio et la sous-trame de transition. Par exemple, le codage de la bande haute de fréquences peut être décomposé en deux étapes.
Dans une première étape, la trame précédente et la trame courante du signal audio sont filtrées par un filtre passe-haut pour ne garder que la partie haute du spectre. La partie haute du spectre peut correspondre aux fréquences supérieures à celle du cœur CELP utilisé. Par exemple, si le cœur CELP utilisé est le cœur CELP à 12,8 kHz, la bande haute correspond au signal audio pour lequel les fréquences inférieures à 12,8 kHz ont été filtrées. Un tel filtrage peut être mis en œuvre au moyen d'un filtre FIR.
Dans une deuxième étape, une recherche de corrélation entre les parties filtrées de la trame précédente et de la trame courante est effectuée. Une telle recherche de corrélation permet d'estimer un paramètre de retard puis un gain. Le gain correspond au rapport d'amplitude entre la partie filtrée de la trame courante et le signal prédit par application du retard.
Par exemple, 6 bits peuvent être alloués pour le gain et 6 bits pour le retard. Le troisième nombre de bits budg3 est alors égal à 12.
La variable num_bits peut alors être mise à jour :
num_bits := num_bits - budg3.
Le deuxième nombre de bits budg2 est alors égal à la variable num_bits mise à jour.
La figure 5 illustre un décodeur audio 500 selon un mode de réalisation de l'invention et la figure 6 est un diagramme illustrant les étapes d'un procédé de décodage selon un mode de réalisation de l'invention, mis en œuvre dans le décodeur audio 500 de la figure 5.
Le décodeur 500 comprend une unité de réception 501 pour recevoir, à une étape 601, le signal numérique codé (ou flux binaire) issu du codeur 100 de la figure 1. Le flux binaire est soumis à une unité de classification 502 apte à déterminer, à une étape 602 si la trame courante est une trame CELP, une trame MDCT ou une trame de transition. A cet effet, l'unité de classification 502 est apte à déduire du flux binaire une information indiquant si la trame courante est une trame de transition ou non, et une information indiquant le cœur CELP à utiliser pour le décodage d'une trame CELP ou d'une sous-trame CELP de transition.
A une étape 603, il est vérifié que la trame courante est une trame de transition.
Si la trame courante n'est pas une trame de transition, il est vérifié à une étape 604 que la trame courante est une trame CELP. Si tel est le cas, la trame est transmise à un décodeur CELP 504 apte à décoder une trame CELP à une étape 605, à la fréquence de cœur indiquée par l'unité de classification 502. Suite au décodage d'une trame CELP, le décodeur CELP 504 peut stocker, à une étape 606, dans une mémoire 506 des paramètres tels que les coefficients du filtre de prédiction linéaire A(z) et des états internes tels que l'énergie prédictive au cas où la trame suivante serait une trame de transition.
En sortie du décodeur CELP 504, le signal peut être ré-échantillonné, à une étape 607, à la fréquence de sortie du décodeur 500 par une unité de ré-échantillonnage 505. Dans un mode de réalisation de l'invention, l'unité de ré -échantillonnage comprend un filtre FIR et le rééchantillonnage introduit un retard de (par exemple) 1,25 ms. Dans un mode de réalisation, des post-traitements pourront être appliqués au décodage CELP avant ou après ré-échantillonnage.
Comme mentionné ci-avant, dans un mode de réalisation, une extension de bande peut également être effectuée, par une unité de gestion de l'extension de bande 5051 à des étapes 6071 et 6151, avec un décodage associée de la bande haute lorsque la trame courante est de type CELP. La bande haute est alors combinée au codage CELP avec éventuellement un retard supplémentaire appliquée à la synthèse CELP en bande basse.
Le signal décodé par le décodeur CELP et ré-échantillonné, éventuellement post-traité avant ou après ré-échantillonnage, est transmis à une interface de sortie 510 du décodeur à une étape 608.
Le décodeur 500 comprend en outre un décodeur MDCT 507. Dans le cas où il a été déterminé à l'étape 604 que la trame courante est une trame MDCT, le décodeur MDCT 507 est apte à décoder la trame MDCT de manière classique à une étape 609. En outre, un retard correspondant au retard nécessaire pour l'application du ré -échantillonnage du signal issu du décodeur CELP 504 est appliqué à la sortie du décodeur par une unité de retard 508, de manière à synchroniser la synthèse MDCT avec la synthèse CELP, à une étape 610. Le signal décodé par MDCT et retardé est transmis à l'interface de sortie 510 du décodeur à l'étape 608.
Dans le cas où la trame courante est déterminée comme étant une trame de transition à l'issue de l'étape 603, un dispositif de détermination de la répartition de bits 503 est apte à déterminer, à une étape 611, le premier nombre de bits budgl alloués au codage CELP de la sous- trame de transition et le deuxième nombre de bits budg3 alloués au codage par transformée de la trame de transition. Le dispositif 503 peut correspondre au dispositif 700 décrit en détails en référence à la figure 7.
Le décodeur MDCT 507 utilise le troisième nombre de bits budg3 calculé par l'unité de détermination 503 pour ajuster le débit nécessaire au décodage de la trame de transition. Le décodeur MDCT 507 met en outre à zéro la mémoire de la transformation MDCT et décode la
trame de transition à une étape 612. Le signal issu du décodeur MDCT est ensuite retardé par l'unité de retard 508 à une étape 613.
En parallèle, le décodeur CELP 504 décode la sous-trame CELP de transition en fonction du premier nombre de bits budgl, à une étape 614. Le décodeur CELP 504 décode à cet effet les paramètres CELP qui peuvent dépendre de la classe de la trame courante, et qui comprennent par exemples les valeurs de pitch du dictionnaire adaptatif, de dictionnaire fixe et de gains de la sous- trame CELP et utilise les coefficients du filtre de prédiction linéaire. En outre, le décodeur CELP 504 met à jour les états de décodage CELP. Ces états peuvent comprendre typiquement l'énergie prédictive de l'innovation issue de la trame CELP précédente pour générer la sous-trame de signal sur 4ms ou 5ms selon que le cœur CELP à 12,8 kHz ou à 16 kHz est utilisé (dans le cas d'un codage restreint de la sous-trame CELP de transition).
Comme évoqué précédemment, la demande WO2012/085451 prévoit le codage supplémentaire d'une sous-trame à 5ms pour le cœur CELP à 12,8 kHz et de deux sous-trames supplémentaires à 4ms pour le cœur CELP à 16 kHz.
Comme expliqué en référence à la figure 3, dans le cas à 12,8 kHz, le retard de 6,25 ms n'est pas comblé et l'addition recouvrement est impactée : on dispose uniquement au décodeur de 0,625 ms d'addition recouvrement, ce qui est insuffisant.
Dans le cas à 16 kHz, deux sous-trames CELP supplémentaires sont codées au début de la trame de transition, ce qui ne laisse que très peu de budget pour coder la trame MDCT de transition et peut amener à une baisse de qualité par rapport à un codage MDCT « à plein débit » dans la trame courante.
Ainsi, la solution de la demande internationale WO2012/085451 n'est pas satisfaisante.
Un aspect indépendant de l'invention prévoit, à partir d'une unique sous-trame CELP supplémentaire de transition, la génération partielle d'une seconde sous-trame en réutilisant des paramètres de codage utilisés pour le codage de la sous-trame CELP de transition. Le retard est ainsi comblé, en assurant une addition-recouvrement suffisante, et sans impacter le débit du codage MDCT de la trame de transition.
A cet effet, l'invention vise également un procédé de décodage P d'un signal numérique codé, dans un décodeur 500 apte à décoder des trames de signal selon un décodage prédictif ou selon un décodage par transformée, comportant les étapes suivantes :
- réception, à l'étape 501, d'un premier ensemble de paramètres de codage prédictif codant une première trame du signal numérique ;
- décodage prédictif, à l'étape 605, de la première trame sur la base du premier ensemble de paramètres de codage prédictif ;
- réception, à l'étape 501 pour une nouvelle trame, d'un deuxième ensemble de paramètres de codage prédictif d'une première sous-trame de transition d'une trame de transition codée par transformée :
- décodage, à l'étape 614, de la première sous-trame de transition sur la base du deuxième ensemble de paramètres de codage prédictif ;
- génération, à l'étape 614, d'échantillons d'une deuxième sous-trame de transition, à partir d'au moins un paramètre de codage prédictif du deuxième ensemble.
L'invention vise en outre le décodeur 500 pour la mise en œuvre du procédé de décodage P, ainsi qu'un programme informatique comportant des instructions pour la mise en œuvre du procédé de décodage P, lorsque ces instructions sont exécutées par un processeur.
Les paramètres CELP réutilisés pour la génération de la deuxième sous-trame peuvent être le vecteur de gains, le vecteur du dictionnaire adaptatif et le vecteur du dictionnaire fixe.
Selon un mode de réalisation du procédé de décodage P, une valeur minimale de recouvrement peut être prédéfinie pour le décodage par transformée et le nombre d'échantillons générés de la deuxième sous-trame est déterminé en fonction de la valeur minimale de recouvrement. Cette dernière sous-trame peut être générée sans information supplémentaire en prolongeant la synthèse CELP en répétant la prédiction de pitch avec le même retard de pitch et le même gain de dictionnaire adaptatif que dans la première sous-trame, et en effectuant une filtrage LPC de synthèse avec les mêmes coefficients LPC et une dé -emphase ou désaccentuation.
La deuxième sous-trame CELP peut ensuite être tronquée de manière à ne conserver que 1,25 ms de signal dans le cas du cœur CELP à 12,8 kHz, et 2,25 ms de signal dans le cas du cœur CELP à 16 kHz. La première sous-trame CELP est ainsi complétée de manière à avoir 6,25 ms de signal supplémentaire permettant de combler le trou et d'assurer une addition-recouvrement satisfaisante (valeur minimale de recouvrement, par exemple de 1,875 ms) avec la trame de transition MDCT. Dans un mode de réalisation, la sous-trame CELP supplémentaire a une longueur étendue à 6,25 ms pour les cœurs CELP à 12,8 et 16 kHz, ce qui implique de modifier le codage CELP « normal » pour disposer d'une telle longueur de sous-trame étendue, en particulier pour le dictionnaire fixe.
En complément du mode de réalisation précédent du procédé de décodage P, le procédé P peut comprendre en outre une étape 615 de ré -échantillonnage mise en œuvre par un filtre à réponse impulsionnelle finie. Comme précédemment expliqué, le filtre FIR peut être intégré dans l'unité de ré-échantillonnage 505. Le ré-échantillonnage utilise la mémoire du filtre FIR de la trame CELP précédente et le traitement induit un retard supplémentaire de 1,25 ms dans cet exemple.
Le procédé P peut comporter en outre une étape d'ajout d'un signal additionnel obtenu à partir d'échantillons stockés dans la mémoire du filtre à réponse impulsionnelle finie, pour combler le retard introduit par l'étape de ré-échantillonnage. Ainsi, 1,25 ms de signal, en plus des 6,25 ms de signal additionnel précédemment généré, sont générés par le décodeur 500, ces échantillons permettant avantageusement de combler le retard introduit par le ré -échantillonnage des 6,25 ms de signal additionnel.
A cet effet, la mémoire du filtre FIR de l'unité de ré-échantillonnage 505 peut être sauvegardée à chaque trame après décodage CELP. Le nombre d'échantillons dans cette mémoire correspond à 1,25 ms à la fréquence du cœur CELP considérée (12,8 ou 16 kHz).
Selon un mode de réalisation complémentaire du procédé P, le ré-échantillonnage des échantillons stockés est effectué par une méthode d'interpolation introduisant un deuxième retard inférieur au premier retard du filtre à réponse impulsionnelle finie, pouvant être considéré comme nul. Ainsi, les 1 ,25 ms de signal générés à partir de la mémoire du filtre FIR, sont ré -échantillonnés selon une méthode impliquant un retard moindre. Par exemple, un ré-échantillonnage des 1,25 ms de signal généré par la mémoire du filtre FIR peut être mis en œuvre par interpolation cubique, qui implique un retard de deux échantillons uniquement, retard moindre comparé au retard du filtre FIR. Ainsi, deux échantillons de signal supplémentaires sont requis pour ré -échantillonner les 1 ,25 ms de signal précités : ces deux échantillons supplémentaires peuvent être obtenus en répétant la dernière valeur de la mémoire de ré-échantillonnage du filtre FIR.
Le décodeur peut en outre décoder la partie haute fréquence des 6,25 ms de signal CELP obtenue à partir des première et deuxième sous-trames de transition. A cet effet, le décodeur CELP 504 peut utiliser le gain adaptatif et le vecteur du dictionnaire fixe de la dernière sous-trame de la trame CELP précédente.
Le décodeur 500 comprend en outre une unité d'addition-recouvrement 509 apte à assurer addition-recouvrement, à une étape 616, entre les sous-trames de transition CELP décodées et rééchantillonnées, les échantillons ré -échantillonnés par l'interpolation cubique, et le signal décodé de la trame de transition issu du décodeur MDCT 507.
A cet effet, l'unité 509 applique la fenêtre modifiée 327 de synthèse de la figure 3. Ainsi, avant le point de repliement MDCT pour les deux premiers quarts, les échantillons fenêtrés sont mis à zéro. Après le point de repliement précité, les échantillons fenêtrés sont divisés par la fenêtre non modifiée 324 de la figure 3, et multipliés par une fenêtre de type sinus de manière à ce que, combinée avec la fenêtre appliquée à l'encodeur, la fenêtre totale soit en sin2. Dans la partie concernée par addition-recouvrement, les échantillons issus du CELP et du ré-échantillonnage à 0 délai (par exemple par interpolation cubique) sont pondérés par une fenêtre en cos2
La trame de transition ainsi obtenue est transmise à l'interface de sortie 510 du décodeur à l'étape 608.
La figure 7 représente un exemple de dispositif 700 de détermination de la répartition des bits d'une trame de transition.
Le dispositif comprend une mémoire vive 704 et un processeur 703 pour stocker des instructions permettant la mise en œuvre du procédé de détermination de la répartition des bits d'une trame de transition décrit ci-avant. Le dispositif comporte aussi une mémoire de masse 705
pour le stockage de données destinées à être conservées après l'application du procédé. Le dispositif 700 comporte en outre une interface d'entrée 701 et une interface de sortie 706 respectivement destinées à recevoir les trames du signal numérique et à émettre le détail du budget alloué à ces différentes trames.
Le dispositif 700 peut en outre comporter un processeur de signal numérique (DSP) 702. Ce DSP 702 reçoit les trames de signal numérique pour mettre en forme, démoduler et amplifier, de façon connue en soi ces trames.
La présente invention ne se limite pas aux formes de réalisation décrites ci-avant à titre d'exemples ; elle s'étend à d'autres variantes.
Ainsi, on a décrit ci-avant un mode de réalisation dans lequel les dispositifs de compression ou de décompression sont des entités à part entière. Bien sûr, ces dispositifs peuvent être embarqués dans tout type de dispositif plus important comme par exemple une caméra numérique, un appareil photo, un téléphone portable, un ordinateur, un projecteur de cinéma, etc.
De plus, on a décrit un mode de réalisation proposant une architecture particulière des dispositifs de compression, de décompression et de comparaison. Ces architectures ne sont données qu'à titre illustratif. Ainsi, un agencement des composants et une répartition différente des taches affectées à chacune de ces composantes est également envisageable. Par exemple, les tâches effectuées le processeur de signal numérique (DSP) peuvent également être effectuées par un processeur classique.