Procédé d'adaptation pour une interopérabilité entre modèles de corrélation à court terme de signaux numériques
L'invention concerne le codage/décodage de signaux numériques, notamment dans des applications de transmission ou de stockage des signaux multimédias tels que les signaux audio (parole et/ou sons).
Elle vise en particulier une détermination efficace des paramètres d'un second modèle de prédiction à court terme ou LPC (pour "Linear Prédictive Coding") à partir des paramètres d'un premier modèle LPC.
Dans le domaine de la compression, les codeurs utilisent les propriétés du signal telles que sa structure harmonique, exploitée par. des filtres de prédiction à long terme, ainsi que sa stationnante locale, exploitée par des filtres de prédiction à court terme. Typiquement, le signal de parole peut être considéré comme un signal stationnaire par exemple sur des intervalles de temps de 10 à 20 ms. On peut donc analyser ce signal par blocs d'échantillons appelés trames, après un fenêtrage approprié. Les corrélations à court terme peuvent être modélisées par des filtres linéaires variant dans le temps dont les coefficients sont obtenus à l'aide d'une analyse par prédiction linéaire sur des trames, de faible durée (de 10 à 20 ms dans l'exemple précité).
Le codage par prédiction linéaire est l'une des techniques de codage numérique les plus utilisées. Il consiste à effectuer une analyse LPC du signal à coder pour déterminer un filtre LPC, puis à quantifier ce filtre, d'une part, et à modéliser et coder le signal d'excitation, d'autre part. Cette analyse LPC est effectuée en minimisant l'erreur de prédiction sur le signal à modéliser ou une version modifiée de ce signal. Le modèle autorégressif de prédiction linéaire d'ordre P consiste à déterminer un échantillon de signal à un instant n par une combinaison linéaire des P échantillons passés (principe de la prédiction). Le
filtre de prédiction à court terme, noté A(z) , modélise l'enveloppe spectrale du signal :
P
Λ0) = ∑-α, x2~'
La différence entre le signal à l'instant n, noté S{n) , et sa valeur prédite S(n) constitue l'erreur de prédiction :
P e(n) = S(n)-S(n) = ,S(w) + ]>]α, S(n-i)
Le calcul des coefficients de prédiction s'effectue en minimisant l'énergie E de l'erreur de prédiction donnée par :
La résolution de ce système est bien connue, notamment par l'algorithme de Levinson-Durbin ou l'algorithme de Schur.
Les coefficients at du filtre doivent être transmis au récepteur. Cependant, ces coefficients n'ayant pas de bonnes propriétés de quantification, des transformations sont préférentiellement utilisées. Parmi les plus courantes, on peut citer :
- les coefficients PARCORs (pour "PARtial CORrelation" consistant en des coefficients de réflexion ou coefficients de corrélation partielle),
- les Rapports d'Aires Logarithmiques LAR (pour "Log Area Ratio") des coefficients PARCORs,
- les lignes spectrales par paires LSP (pour "Une Spectral Pairs").
Les coefficients LSP sont maintenant les plus utilisés pour la représentation du filtre LPC car ils se prêtent bien à la quantification vectorielle. D'autres représentations équivalentes des coefficients LSP existent :
- les coefficients LSF (pour "Une Spectral Frequencies"), - les coefficients ISP (pour "Immittance Spectral Pairs"),
- ou encore les coefficients ISF ("Immittance Spectral Frequencies").
La prédiction linéaire exploite la quasi-stationnarité locale du signal. Cependant, cette hypothèse de stationnante locale n'est pas toujours vérifiée. En particulier, si la mise à jour des coefficients LPC n'est pas effectuée suffisamment souvent, la qualité de l'analyse LPC se dégrade. Augmenter la fréquence de calcul des paramètres LPC améliore évidemment la qualité de l'analyse LPC en permettant de mieux suivre les variations spectrales du signal. Toutefois, cette situation entraîne un accroissement du nombre de filtres à transmettre et donc une augmentation du débit.
En outre, un calcul trop fréquent des paramètres LPC pose aussi un problème de complexité car la détermination des paramètres LPC est coûteuse en complexité de calculs. En général, elle nécessite :
- le fenêtrage du signal, - le calcul de la fonction d'auto-corrélation du signal sur (P+1) valeurs (P étant l'ordre de prédiction),
- la détermination à partir des autocorrélations des coefficients α, , par exemple par l'algorithme de Levison-Durbin,
- leur transformation en un jeu des paramètres ayant de meilleures propriétés de quantification et d'interpolation,
- la quantification et l'interpolation de ces paramètres transformés,
- suivie de la transformation inverse.
Par exemple, dans le codeur normalisé UIT-T G.729 à 8 kbit/s, une analyse LPC d'ordre 10 est effectuée toutes les 10 ms (par bloc de 80 échantillons) et le module d'extraction des paramètres LPC constitue près de 15 % de la complexité du codeur G.729 à 8 kbit/s. Si une seule analyse est effectuée par bloc de 10 ms, le codeur G.729 utilise une interpolation des paramètres LPC transformés pour obtenir des paramètres LPC toutes les 5 ms.
Dans le codeur normalisé UIT-T G.723.1 , quatre analyses LPC d'ordre 10 sont effectuées par trame de 30 ms, soit une analyse LPC toutes les 7,5 ms (par blocs appelés sous-trames de 60 échantillons), ce qui représente 10 % de la complexité du codeur. Néanmoins, pour réduire le débit, seuls les paramètres de la dernière sous-trame sont quantifiés. Pour les trois premières sous- trames, on utilise une interpolation des paramètres quantifiés transmis.
La complexité de l'analyse LPC est critique lorsque plusieurs codages doivent être effectués par une même unité de traitement telle qu'une passerelle chargée de gérer de nombreuses communications en parallèle ou un serveur distribuant de nombreux contenus multimédias. Le problème de la complexité est encore accru par la multiplicité des formats de compression des signaux qui circulent sur les réseaux. On comprendra donc qu'un premier problème se pose par rapport à un compromis débit/qualité/complexité pour l'analyse LPC.
Pour offrir mobilité et continuité, les services de communication multimédias modernes et innovants doivent pouvoir fonctionner dans une grande variété de conditions. Le dynamisme du secteur de la communication multimédia et l'hétérogénéité des réseaux, accès et terminaux ont engendré une prolifération de formats de compression dont la présence dans les chaînes de communication nécessite plusieurs codages soit en cascade (transcodage), soit en parallèle (codage multi-format ou codage multi-mode).
Le transcodage est nécessaire lorsque, dans une chaîne de transmission, une trame de signal compressée émise par un codeur ne peut plus poursuivre son
chemin sous ce format. Le transcodage permet de convertir cette trame sous un autre format compatible avec la suite de la chaîne de transmission. La solution la plus élémentaire (et la plus courante à l'heure actuelle) est la mise bout à bout d'un décodeur et d'un codeur. La trame compressée arrive sous un premier format. Elle est ensuite décompressée. Le signal décompressé est alors compressé à nouveau sous un second format accepté par la suite de la chaîne de comrrïϋnicltioήT "Cette" ifiisë" ^êrï cascâdëTcl'Dn "décodeur et d'un codeur est appelée un tandem. Une telle solution est très coûteuse en complexité (essentiellement à cause du recodage) et elle dégrade la qualité car le second codage se fait sur un signal décodé qui est une version dégradée du signal d'origine. Par ailleurs, une trame peut rencontrer plusieurs tandems avant d'arriver à destination, entraînant un coût en calcul et une perte de qualité importants. De plus, les retards liés à chaque opération de tandem s'accumulent et peuvent nuire à l'interactivité des communications. La complexité pose aussi problème dans le cadre d'un système de compression multi-format où un même contenu est compressé sous plusieurs formats. C'est typiquement le cas des serveurs de contenus qui diffusent un même contenu sous plusieurs formats adaptés aux conditions d'accès, de réseaux et terminaux des différents clients. Cette opération de multi-codage devient extrêmement complexe à mesure qu'augmente le nombre de formats désirés, de sorte que les ressources du système paraissent rapidement limitées.
Un autre cas de codage multiple en parallèle est la compression multi-mode à décision a posteriori qui se décrit comme suit. A chaque segment de signal à coder, plusieurs modes de compression sont effectués et celui qui optimise un critère donné ou obtient le meilleur compromis débit/distorsion est sélectionné. Là encore, la complexité de chacun des modes de compression en limite le nombre et/ou conduit à élaborer une sélection a priori d'un nombre très restreint de modes.
Ainsi, un second problème se pose par rapport à la multiplicité des formats de compression possibles.
Quelques tentatives de l'art antérieur pour résoudre ces problèmes sont exposées ci-après.
Actuellement, la plupart de ces opérations de codage multiple ne prennent pas en compte les interactions entre les formats, d'une part, et entre le format et son contenu, d'autre part. Cependant, quelques techniques récentes de transcodage dit "intelligent' ne se contentent plus de décoder puis recoder, mais exploitent aussi les similitudes entre formats de codages et permettent ainsi de réduire la complexité et le retard algorithmique tout en limitant la dégradation apportée. De même, il a été proposé d'exploiter les similitudes entre formats de codage afin de réduire la complexité des opérations de codage multiple en parallèle. Pour un même paramètre de format de codage, les différences entre codeurs résident dans la modélisation, la méthode et/ou la fréquence de calcul ou bien encore la quantification. L'optimisation du codage multiple en parallèle de deux modélisations LPC a peu été étudiée.
Typiquement, si un paramètre est calculé et quantifié de la même façon par deux formats de codage notés respectivement A et B, le transcodage du paramètre se fait au niveau binaire par recopie de son champ binaire du train binaire du format A dans le train binaire du format B. Si le paramètre est calculé de la même manière mais quantifié différemment, il faut habituellement le re-quantifier avec la méthode utilisée par le format de codage B. De même, si les formats A et B ne calculent pas ce paramètre à la même fréquence (par exemple si leurs longueurs de trames ou sous-trame sont différentes), il faut interpoler ce paramètre. Il est possible d'effectuer cette étape uniquement sur le paramètre précité, sans avoir à remonter jusqu'au signal complet. Le
transcodage est alors réalisé uniquement au niveau du paramètre. D'ailleurs, les coefficients LSP sont généralement transcodés à ce niveau "paramètre".
Dans les méthodes de l'art antérieur, pour obtenir les paramètres LPC d'un second format de codage à partir des paramètres d'un premier format de codage, il est courant d'interpoler les paramètres LPC de trames (ou sous-trames) consécutives du premier format correspondant à la trame courante (ou sous-trame) du second format. Par exemple, une première méthode consiste à calculer les coefficients modélisant le filtre LPC du second format pour une trame, en interpolant les coefficients des filtres LPC du second format correspondant sensiblement à cette trame :
PB (m) = <*PA (» -!) + βPλ (n) où pB(m) est le vecteur de coefficients du second modèle pour sa trame (m), pA(ή) est le vecteur de coefficients du premier modèle pour sa trame n, et α et β sont des facteurs d'interpolation. En général, β est égal à (1-α) .
Par exemple, dans le cas du transcodage entre les codeurs TÏA-IS127 EVRC et 3GPP NB-AMR, tel que décrit dans :
"A novel Transcoding Algorithm for AMR and EVRC speech codées via direct parameter Transformation", Seongho Seo et al., dans Proc. ICASSP 2003, pp. 177-180, vol. Il, les coefficients LSP à la trame m du codeur EVRC (pEVRC(m) ) sont calculés en interpolant linéairement les coefficients LSP quantifiés des trames m et (m-1) du codeur AMR (pAMR(m) et _PΛMRO« -1) > le facteur d'interpolation (α = 0.84) étant empiriquement choisi :
P EVRC O) = 0MPAMR (m) + °- ! 6PAMR (m ~ 1)
Réciproquement, les coefficients LSP à la trame m du codeur AMR sont calculés en interpolant linéairement les coefficients LSP quantifiés des trames m et (m-1) du codeur EVRC (avec α=0,96) :
P AMR (m) = 0.96pEyRC (m) + 0.04pEmc (m - 1)
II a été ici proposé d'optimiser aussi la détermination des facteurs d'interpolation par une étude statistique pour prendre en compte les différences des caractéristiques des deux analyses LPC (type d'analyse, longueur et positionnement de la fenêtre d'analyse, extension de la largeur de bande appliquée aux coefficients d'autocorrélation, etc). Ce cas le plus simple est souvent utilisé lorsque les deux formats de codage effectuent l'analyse LPC à la même fréquence. Dans l'exemple ci-dessus, les deux codeurs effectuent une analyse LPC une fois par trame de 20 ms. Lorsque les deux formats de codage n'effectuent pas l'analyse LPC à la même fréquence, il est courant de considérer des blocs plus grands dont la durée est un multiple commun aux durées respectives de mise à jour des paramètres LPC des deux formats. Le choix des deux trames du premier format servant à l'interpolation, ainsi que les facteurs d'interpolation, dépendent alors du rang d'une trame du second format dans ce groupe de trames.
Ainsi, dans le cas du transcodage du codeur UIT-T G.723.1 (trame 30 ms) vers le codeur EVRC (trame 20 ms), deux trames du G.723.1 correspondent à trois trames de l'EVRC. Ce transcodage est décrit notamment dans :
"An efficient transcoding algorithm for G723.1 and EVRC speech coders", Kyung Tae Kim et al., dans Proc. IEEE VTS 2001 , pp.1561-1564.
Les choix des deux trames G.723.1 qui servent à l'interpolation, ainsi que les facteurs d'interpolation, dépendent du rang d'une trame EVRC dans ce groupe de trois trames :
PEvacQm) = 0.5417pGJ23Λ(2m -l) + 0Λ583pGJ13Λ(2rn +ï)
pEVRC(3m + l) = 0.8750Jpαmi(2w) + 0.1250pσi723ii(2w + l)
pEVRC (3m + 2) = 0.20S3pG m ι (2m) + 0.7917P0-723., (2m + 1)
Ainsi, dans ces techniques de transcodage des paramètres LPC de l'art antérieur, le jeu des facteurs d'interpolation est fixé en fonction de la position temporelle de la trame du second format dans son groupe de trames. Même les méthodes plus complexes de transcodage qui font intervenir plus de deux filtres du premier format ou encore des filtres passés du second format, utilisent un jeu fixe de facteurs d'interpolation.
Cette interpolation "fixe" conduit à une mauvaise estimation du filtre du second format en particulier dans les zones non stationnaires. Pour y remédier, la présente invention propose d'utiliser une interpolation adaptative (ou "dynamique").
Un objet de l'invention est la sélection dynamique d'un jeu de facteurs d'interpolation dans un contexte de codage multiple.
Un autre objet de l'invention est de limiter le nombre de jeux de facteurs d'interpolation, préférentiellement en tenant compte d'un compromis qualité/complexité souhaité et, pour une complexité donnée, d'optimiser la qualité ou, inversement, de minimiser la complexité pour une qualité donnée.
A cet effet, l'invention propose tout d'abord un procédé de codage selon un second format, à partir d'informations obtenues par la mise en œuvre d'au moins une étape de codage selon un premier format. Les premier et second formats mettent en œuvre, notamment pour le codage d'un signal de parole, des modèles de prédiction à court terme LPC sur des blocs d'échantillons de
signal numérique, en utilisant des filtres représentés par des coefficients LPC respectifs. En particulier, dans ce procédé, on détermine les coefficients LPC du second format à partir d'une interpolation sur des valeurs représentatives des coefficients LPC du premier format au moins, entre au moins un premier bloc donné et un second bloc, précédent le premier bloc.
Selon une définition actuellement préférée de l'invention, l'interpolation précitée est menée dynamiquement, en choisissant pour chaque bloc courant au moins un facteur d'interpolation parmi une présélection de facteurs, selon un critère prédéterminé.
On entend par le terme "présélection" un ensemble préconstitué de facteurs d'interpolation qui, de façon aucunement limitative, peut inclure des jeux de facteurs α et β tels que définis ci-avant (couples α et β, ou encore des triplets α, β et Y si il est décidé de mener l'interpolation sur trois blocs d'échantillons respectivement n, n-1 et n-2), ou encore des facteurs α seuls, en particulier lorsqu'un facteur correspondant β peut se déduire d'un facteur α par une relation simple (par exemple du type β=1-α).
Ainsi, au lieu d'utiliser un jeu fixe de facteurs d'interpolation au sens de l'art antérieur, l'invention propose de déterminer un ensemble de plusieurs jeux de facteurs d'interpolation et à utiliser, pour chaque bloc d'analyse LPC, un jeu de facteurs d'interpolation sélectionné dans cet ensemble préconstitué.
Cette sélection dans l'ensemble préconstitué s'effectue de façon dynamique en fonction du critère prédéterminé précité. Ce critère prédéterminé peut avantageusement être relatif à la détection d'une rupture de stationnante du signal numérique entre le bloc donné et le bloc précédent.
La présélection peut se construire initialement selon un choix heuristique ou encore à partir d'une étude statistique préalable, comme on le verra dans la description détaillée ci-après.
D'ailleurs, 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 représente schématiquement un exemple de module de transcodage pour la mise en œuvre de l'invention, - la figure 2 illustre schématiquement le principe d'interpolation en vue d'estimer les valeurs représentatives des coefficients LPC du second format pour une succession de blocs m-1, m, m+1 du signal codé au second format SC2, à partir d'une interpolation menée sur les valeurs représentatives des coefficients LPC du premier format estimées pour des blocs successifs n-2, n-1 , n du premier signal codé SC1 ,
- les figures 3A et 3B illustrent schématiquement des systèmes de codage en parallèle et de transcodage, respectivement, faisant intervenir un module de transcodage au sens de l'invention,
- la figure 4 est un organigramme illustrant l'algorithme général d'un produit programme d'ordinateur au sens de l'invention, pour choisir dynamiquement les facteurs d'interpolation parmi la présélection,
- la figure 5 illustre les étapes de construction de la présélection dans une réalisation avantageuse de l'invention,
- les figures 6A et 6B illustrent les histogrammes de la valeur optimale du facteur d'interpolation α respectivement pour les deux premières trames des groupes de 3 trames du codeur normalisé G.729, en tant que second codeur,
- la figure 7A illustre la correspondance entre une trame du codeur normalisé G.723.1 (30 ms), en tant que premier codeur, et 3 trames du codeur normalisé G.729 (10 ms), en tant que second codeur,
- la figure 7B illustre la correspondance entre les sous-trames du codeur G.729 (5 ms) et du codeur G.723.1 (7,5 ms),
- les figures 8A, 8B et 8C illustrent les distributions des distorsions spectrales obtenues par une interpolation statique (courbe "Static" en trait plein) au sens de l'art antérieur et par interpolation dynamique fine au sens de l'invention (courbe "Fine" en traits pointillés), respectivement pour trois trames successives courantes du codeur normalisé G.729, en tant que second codeur,
- les figures 9A et 9B illustrent les distributions des distorsions spectrales obtenues par les interpolations dynamiques fine (courbe "Fine" en traits pointillés) et grossière (courbe "Coarse" en trait plein) respectivement pour deux trames successives courantes du codeur G.729, et
- la figure 10 est un organigramme d'un exemple d'algorithme de sélection de facteurs d'interpolation α, de façon dynamique.
Avant d'aborder les détails de réalisation, on indique que l'invention, de manière générale, vise aussi un module de transcodage dont un exemple est représenté sur la figure 1. Le module de transcodage MOD peut par exemple s'agencer entre :
- un premier codeur COD1 d'un signal d'entrée S, selon un premier format, et destiné par exemple à délivrer un premier signal codé SC1 , et - un second codeur COD2 du même signal d'entrée S, selon un second format, et destiné par exemple à délivrer un second signal codé SC2.
En configuration de transcodage, le premier codeur COD1 a commencé à coder le signal d'entrée S, complètement ou partiellement, mais, en tout état de cause, suffisamment pour avoir déterminé déjà les coefficients LPC selon le
premier format. Le module MOD de transcodage au sens de l'invention récupère au moins les coefficients LPC obtenus par le codage selon le premier format, ou des valeurs représentatives de ces coefficients, par exemple les vecteurs (LSP)i et, à partir de ces valeurs, estime par interpolation les coefficients (LPC)2 (ou des valeurs représentatives (LSP)2) qui vont servir au second codeur COD2 pour construire le second signal codé SC2 au second format. Cette mesure permet alors, de façon avantageuse, de déterminer une seule fois les coefficients LPC (au premier format) et, par un calcul d'interpolation très simple, de les adapter au second format de codage. On parle donc de "transcodage".
Ainsi, le module MOD de transcodage au sens de l'invention, de manière générale, est adapté dans le but de coder un signal S selon un second format, à partir d'informations (incluant notamment des coefficients LPC obtenus du premier codage ou des valeurs représentatives de ces coefficients, par exemple les vecteurs (LSP)O obtenues par la mise en œuvre d'au moins une étape de codage (l'étape qui permet de récupérer les informations incluant les valeurs représentatives des coefficients (LPC)i) du même signal d'entrée S selon le premier format.
Bien entendu, ces premier et second formats mettent en œuvre, notamment pour le codage d'un signal de parole S, des modèles de prédiction à court terme LPC sur des blocs d'échantillons de signal numérique (comme on le verra plus loin en référence à la figure 2), en utilisant des filtres représentés par des coefficients LPC respectifs.
Le module comporte ainsi : - une entrée 5 (figure 1) pour recevoir des informations (LPC)i représentatives des coefficients LPC obtenus par le premier format, et incluant, par exemple, les valeurs (LSP)i,
- et une unité de traitement (modules 1 , 2, 3, 4 de la figure 1) pour déterminer les coefficients LPC du second format (référencés (LPC)2, ou
plus particulièrement les valeurs (LSP)2 de la figure 1 si le module d'interpolation 1 traite des valeurs de vecteurs LSP) à partir d'une interpolation (menée par le module 1 de la figure 1) sur des valeurs (LSP)i représentatives des coefficients LPC obtenus du premier format entre au moins un premier bloc donné (référencé n sur la figure 2) et un second bloc
(référencé n-1 sur la figure 2), précédent le premier bloc n.
On explique maintenant en référence à la figure 2 le principe général d'une telle interpolation. Le signal codé au premier format SC1 comporte une succession de blocs d'échantillons n, n-1 , n-2, etc. Des valeurs (LSP)i[nI, (LSP)i[n"1], etc, représentatives des coefficients LPC au premier format, ont été obtenues. Le module de transcodage applique une interpolation sur ces valeurs, par exemple du type (LSP)2 [m] =αj (LSP)i[n-1] + βι (LSP)i[n], à partir de facteurs d'interpolation ai et βi choisis comme décrit plus loin, pour obtenir une valeur (LSP)2tm3 représentative d'un coefficient LPC au second format pour un bloc courant m du signal SC2 codé au second format et correspondant au bloc n. Le signal SC2 codé au second format comporte aussi une succession de blocs d'échantillons (aussi appelés "trames") référencés m-1 , m, m+1 sur la figure 2.
Selon l'invention, l'unité de traitement du module de transcodage effectue cette interpolation de façon dynamique, en choisissant pour chaque bloc courant n au moins un facteur d'interpolation cij parmi une présélection (module 3) de facteurs (α-i, α2, ... , αk), selon un critère prédéterminé. Le critère prédéterminé peut typiquement être un critère de continuité dans le temps du signal S (ou "stationnante" du signal), ou tout autre critère de stabilité du signal par rapport à un ou plusieurs paramètres liés au signal S (gain, énergie, paramètres à long terme LTP, période de l'harmonique fondamental (ou "pitch")), et préférentiellement calculés par COD1. En variante, il est possible de prévoir un critère de proximité du signal.
Dans l'exemple représenté sur la figure 1 , l'entrée 5 du module de transcodage reçoit de tels paramètres notés (LPC)i qui renseignent un module 2 de détection de rupture de stationnante dans le signal S. Par ailleurs, le module de transcodage MOD comporte une mémoire 3, par exemple adressable, et qui stocke une présélection de facteurs d'interpolation, notée (α-i, 0:2, ... , c*) dans l'exemple représenté. Cette notation signifie que, dans l'exemple décrit :
- on va mener une interpolation sur la base deux blocs consécutifs n et n-1 et utiliser donc deux facteurs d'interpolation a; et βj à chaque bloc courant m à traiter du signal SC2, et - les deux facteurs αj et βj se déduisent simplement l'un de l'autre par une relation du type ct| = 1- βj, avec αι et βj compris tous les deux entre O et 1.
Mais bien entendu, comme indiqué ci-avant, cette réalisation admet de nombreuses variantes, notamment en terme de nombre de blocs successifs qui vont être utilisés pour l'interpolation. Ici, un module de calcul 4. va déterminer le facteur βj en fonction du facteur d'interpolation a-, choisi, par la relation simple Qj = 1-βj donnée ci-avant. Le module 1 construit ensuite par interpolation sur les valeurs de vecteur (LSP)i (aux blocs n et n-1), à partir de ces deux facteurs αj et βj, les vecteurs (LSP)2 représentatifs des coefficients LPC propres au second format (référencés (LPC)2) pour constituer le second signal codé SC2.
Le module de transcodage MOD est utile tant pour les codages multiples en cascade (dits "transcodages"), qu'en parallèle (dits "multi-codages" et codages "multimodes"). La situation du module MOD illustrée sur la figure 1 est une configuration en parallèle. Il en est de même pour la figure 3A, où un même signal d'entrée S alimente les deux codeurs COD1 et COD2 en parallèle, tandis que le module de transcodage MOD relié au second codeur COD2 reçoit du codeur COD1 les informations (LPC)i utiles pour la mise en œuvre de l'invention, notamment les valeurs représentatives des coefficients LPC
obtenus par le premier format de codage. Les deux codeurs délivrent séparément les deux signaux codés SC1 et SC2. La situation de transcodage de la figure 3B est sensiblement différente en ce sens que le signal d'entrée S est reçu par le premier codeur COD1 uniquement, lequel délivre au module de transcodage MOD les informations (LPC)I utiles pour la mise en œuvre de l'invention. Toutefois, on prévoit ici un module DECOD pour décoder au moins partiellement le signal SC1 issu du premier codeur COD1 et qui alimente le second codeur COD2. L'utilisation du module de transcodage MOD est particulièrement avantageuse ici en ce sens qu'il n'est pas nécessaire de décoder complètement le signal SC1 issu du premier codeur et qu'il n'est pas nécessaire non plus d'appliquer à nouveau toutes les étapes de recodage au second format.
On parle alors de systèmes de "transcodage intelligent' ou de systèmes de "codage multiple intelligent' (notamment pour les batteries de codeurs agencés en parallèle).
La présente invention vise aussi de tels systèmes, comportant :
- un codeur COD1 selon un premier format et un codeur COD2 selon un second format, mettant en œuvre des modèles de prédiction à court terme LPC sur des blocs d'échantillons de signal numérique, en utilisant des filtres représentés par des coefficients LPC respectifs,
- et un module de transcodage MOD au sens de l'invention, du type décrit ci- avant.
Dans de tels systèmes, il apparaît avantageux d'intégrer ce module de transcodage MOD directement dans le codeur COD2 selon le second format (figures 3A et 3B).
L'invention vise aussi un produit programme d'ordinateur, destiné à être stocké dans une mémoire d'un module de transcodage du type décrit ci-avant. En référence à la figure 4 retraçant son algorithme général, le programme
d'ordinateur, lorsqu'il est exécuté sur le module, comporte alors des instructions pour :
- déterminer (étapes 43) des valeurs représentatives (LSP)2 des coefficients LPC du second format à partir d'une interpolation sur des valeurs représentatives (LSP)i des coefficients LPC obtenus du premier format entre au moins le bloc donné n et le bloc n-1 précédent le bloc donné n,
- et, en particulier, effectuer dynamiquement cette interpolation, en choisissant (étape 42) pour chaque bloc courant au moins un facteur d'interpolation ctj parmi une présélection de facteurs, selon un critère prédéterminé (test 41).
Dans la réalisation représentée à titre d'exemple sur la figure 4, ce critère peut être associé à la stationnarité du signal et le test 41 détecte une éventuelle rupture de stationnarité du signal, sur la base des information (LPC)i que lui communique par exemple le premier codeur COD1. Si une rupture de stationnarité est effectivement détectée (flèche N en sortie du test 41), le choix du facteur α est changé et le module choisit dans la présélection le meilleur facteur αι et réalise l'interpolation à partir de ce facteur αj. Sinon (flèche O en sortie du test 41), la valeur du facteur α, fixée à l'étape d'initialisation 40 qui intervient avant le test 41 , est conservée.
On va décrire ci-après des exemples quant à la manière de choisir le meilleur facteur ci\ et quant à la construction initiale de la présélection.
Exemples de construction de la présélection (αt, 02, ..., αι<)
On décrit ci-après la détermination de l'ensemble des facteurs d'interpolation qui constitue la présélection sur laquelle s'effectue dynamiquement le choix des facteurs d'interpolation au sens de l'invention.
Dans un choix de réalisation, l'interpolation au sens de l'invention peut faire intervenir un premier facteur β relatif à un premier bloc donné (n) et un second
facteur α relatif à second bloc (n-1) précédant le premier bloc. Dans une variante restant dans le cadre de la présente invention, il est possible d'avoir recours encore à un troisième facteur Y relatif à un bloc (n-2) précédant encore le deuxième bloc. Dans la réalisation où l'on a recours simplement à deux facteurs α et β, ces premier et second facteurs se déduisent avantageusement l'un de l'autre par une relation du type α=1-β, ces deux facteurs étant préférentiellement compris entre "O" et "1".
Dans une première forme de réalisation, la présélection précitée peut être fixée initialement pour comporter la valeur "0", la valeur "1" et au moins une troisième valeur comprise entre "0" et "1", par exemple "0,5".
Ainsi, dans cette réalisation, l'ensemble des facteurs d'interpolation ainsi que la taille de cet ensemble peuvent être déterminés heuristiquement. Un exemple élémentaire de choix heuristique est un ensemble de taille 3, composé des valeurs de a {0; 0,5; 1} (en prenant la relation précitée β ≈l-a).
Dans une seconde forme de réalisation, plus sophistiquée, la présélection des facteurs d'interpolation est fixée initialement suite à une étude statistique préalable, réalisée hors ligne.
En référence à la figure 5, préférentiellement, pour mener cette étude statistique: a) on constitue :
- des ensembles respectifs de valeurs représentatives de coefficients LPC obtenus par le premier format (ensemble 51) sur une pluralité de blocs M, et de valeurs représentatives de coefficients LPC obtenus par le second format (ensemble 53) sur une pluralité de blocs N,
- et un premier ensemble (50) de facteurs d'interpolation (α 1( Qj 2
« K) choisi pour inclure la présélection au sens de l'invention - à cet effet, le nombre d'éléments K pour constituer ce premier ensemble (50) est choisi suffisamment grand, b) pour chaque bloc n, on détermine parmi le premier ensemble 50 un meilleur facteur d'interpolation a(ri) selon un critère choisi, notamment une distance
(étape 54) entre les valeurs interpolées (ensemble calculé à l'étape 52 et noté {[E(LSP)2 j]i} avec j compris entre 1 et M-1 et i compris entre 1 et N) et les valeurs représentatives (ensemble 53) des coefficients LPC obtenus par le second format. On obtient ainsi un second ensemble 55 de facteurs d'interpolation a(n), de taille réduite par exemple en éliminant les éléments a(n) peu ou pas sollicités et en retenant les éléments les plus redondants de cet ensemble. En complément ou en variante, on peut aussi limiter la taille de cet ensemble en regroupant les éléments les plus proches entre eux autour d'une moyenne.
La réduction de la taille de l'ensemble des facteurs d'interpolation a(n) peut s'appuyer sur l'étude d'un histogramme du type illustré sur l'une des figures 6A ou 6B. Ce type d'histogramme représente:
- en abscisses, les K facteurs (a \, a 2, --• , » κ) choisis de façon arbitraire initialement, par exemple entre 0 et 1 et espacés d'un pas fixe de 0,01 ,
- et en ordonnées, le nombre d'occurrences associé à chaque facteur
« i, a 2 « K et pour lesquelles ce facteur a été déterminé comme meilleur facteur d'interpolation a(n) à l'étape b) précitée.
On peut alors réduire la taille de l'ensemble des facteurs d'interpolation a(n) en sélectionnant les facteurs a -\, cc 2, ... , « K qui comptent le plus d'occurrences sur l'histogramme (flèches des figures 6A et 6B).
Par ailleurs, on rappelle que ce que l'on entend ici par "valeurs représentatives de coefficients LPC ((LSP)i, (LSP)2)" sont par exemple des valeurs de vecteurs LSP (pour "Une Spectral Pairs" définies ci-avant), de façon aucunement limitative. Pour réduire encore la taille du second ensemble obtenu, on peut avantageusement réitérer l'étape b) ci-avant avec le second ensemble, puis avec d'autres sous-ensembles successifs, jusqu'à obtenir la présélection précitée.
On donne ci-après, à titre d'exemple, un détail de la seconde forme de réalisation précitée, basée sur une étude statistique préalable. Par souci de simplicité, les principes de l'invention sont illustrés dans le cas où les deux formats effectuent leur analyse LPC à la même fréquence. Néanmoins, l'invention s'applique aussi au cas de formats de codage n'effectuant pas leur analyse LPC à la même fréquence, comme on le verra dans un exemple de réalisation donné plus loin. On choisit a priori la taille de l'ensemble des valeurs de α et on détermine cet ensemble par l'étude statistique, comme suit.
Deux ensembles de coefficients LPC, par exemple sous forme de vecteurs
LSP (pour "Line Spectral Pairs"), obtenus par le premier format de codage A
N sur un grand nombre (N) de trames sont d'abord constitués. Dans le cas d'un codage multiple, les deux jeux constitués correspondent aux LSP non quantifiés des deux codeurs. Dans le cas d'un transcodage, les deux jeux correspondent aux LSP non quantifiés du format B et aux LSP déquantifiés du format A. On choisit aussi un premier ensemble de IQ facteurs {α,}
/=, , - Cet ensemble peut
être constitué de I0 valeurs ordonnées régulièrement dans l'intervalle [αl 5α/o ] ,
avec a, = aλ +γ — '-r(ak -ax) (par exemple, 101 valeurs ordonnées par pas
de 0,01 dans l'intervalle [0,1]).
Pour chaque bloc d'indice n, on détermine parmi ce premier ensemble le meilleur facteur noté a{ή) selon un certain critère. Préférentiellement, «(») est tel que le vecteur interpolé pB(n)= a(n)pA(n-l)+{\.-a(n))pA(n) à partir des vecteurs du premier format A soit le plus proche possible du vecteur pB(ή) obtenu par le second format. Il existe plusieurs critères de distance entre deux jeux de paramètres LPC utilisés classiquement en codage LPC tels l'erreur quadratique (pondérée ou non) entre deux vecteurs de LSPs ou la mesure de distorsion spectrale calculée à partir des coefficients a, .
En se référant par exemple aux histogrammes représentés sur les figures 6A et 6B, l'examen de l'histogramme des a(ri) "optimaux" permet de restreindre la taille de l'ensemble en fonction de nombre de pics de cet histogramme. Ce choix peut évidemment tenir compte des contraintes de complexité. Une fois, ce nombre I1 choisi (en pratique li«lo,) on détermine le meilleur ensemble composé de I1 valeurs α . Diverses méthodes peuvent être utilisées. On peut, par exemple, s'inspirer des méthodes de classification en choisissant comme valeurs de α les abscisses des I1 pics de l'histogramme, constituer les classes en déterminant pour chaque bloc, la valeur α(ή) optimale parmi les I1 valeurs initiales, puis pour chaque classe, recalculer la valeur de α optimale et itérer le procédé au sens de l'étape b) formulée en termes généraux ci-avant. Préférentiellement, si la taille de l'ensemble est faible, on utilise une méthode plus "exhaustive", en calculant parmi les /j-uplet [0,I]'1 le meilleur /y-uplet [ccv...αlχ ^ ordonné (^1 <... < α/ ), en imposant un écart minimum (par exemple 0,01) entre deux valeurs consécutives /f-uplet. On peut aussi limiter l'exploration aux valeurs de voisinage des abscisses des pics de l'histogramme.
Sélection dynamique du jeu de facteurs d'interpolation
On décrit maintenant la sélection dynamique d'un jeu de facteurs d'interpolation approprié, parmi la présélection obtenue comme décrit ci-avant. En effet, une fois l'ensemble des facteurs d'interpolation déterminé, constituant la présélection présentée ci-avant, il faut alors définir la manière de sélectionner un jeu de facteurs d'interpolation dans cet ensemble, ce qui revient à déterminer pour chaque bloc d'indice n, sa classe.
De manière générale, le choix d'un facteur d'interpolation α parmi la présélection de facteurs, pour chaque bloc courant au moins, s'effectue préférentiellerήent a priori.
En effet, en quantification, une manière triviale d'opérer consiste à tester tous les jeux de facteurs d'interpolation pour sélectionner a posteriori celui qui conduit aux coefficients interpolés les plus proches des coefficients cibles (c'est-à-dire les coefficients, par exemple de type LSF, à quantifier). Dans le contexte du codage multiple, cette sélection a posteriori, qui nécessite la détermination des paramètres cibles du second format, n'est pas applicable sans perdre une grande partie de l'intérêt des méthodes dites "intelligentes" de codage multiple, à savoir la réduction de complexité apportée par la suppression des modules d'analyse et d'extraction de certains paramètres.
Dans le contexte d'un codage multiple, il apparaît alors particulièrement avantageux de sélectionner le jeu de facteurs, a priori. Cette classification a priori est effectuée selon un certain critère, préférentiellement un critère de stationnante locale. Ainsi, selon une caractéristique préférentielle, le choix a priori d'un facteur d'interpolation met en œuvre une classification a priori basée sur un critère de stationnante locale détectée sur le signal numérique.
Par exemple, la présence d'une rupture de stationnante du signal est d'abord détectée et en cas de détection positive, on détermine alors auxquels paramètres des deux filtres il faut donner plus de poids. Les variations de certains paramètres choisis du premier format seront avantageusement utilisées pour évaluer le critère de stationnante. Par exemple, on peut utiliser notamment les coefficients LPC obtenus par le premier format de codage. Un autre exemple de paramètres sera donné dans un exemple de réalisation plus loin.
Compromis qualité/complexité
Avantageusement, la complexité du procédé est ajustable en fonction du compromis qualité/complexité désiré (ou de la complexité visée ou de la qualité souhaitée). Selon le compromis qualité/complexité, la détermination du jeu de facteurs d'interpolation sera plus ou moins performante (c'est-à-dire plus ou moins apte à sélectionner le jeu optimal de facteurs). Dans une variante, pour tenir compte des performances de l'algorithme de sélection des jeux de facteurs, les valeurs de facteurs d'interpolation peuvent être recalculées en fonction des classes constituées par l'algorithme de sélection. On comprendra donc que les procédures déterminant l'ensemble des facteurs d'interpolation et la classification associée peuvent être itérées. On remarquera aussi qu'il est judicieux d'adapter la taille de l'ensemble des jeux de facteurs d'interpolation à Ia qualité de la procédure de classification: il est en effet peu judicieux d'utiliser une interpolation dynamique fine (avec beaucoup de facteurs d'interpolation) si, pour des raisons de complexité, une procédure rudimentaire de classification doit lui être associée.
On retiendra donc que le nombre d'éléments dans la présélection est choisi en fonction d'un compromis qualité/complexité prédéterminé, selon une caractéristique préférentielle de l'invention. Typiquement, plus le nombre de
paramètres servant à la détection de la rupture de stationnante est grand, et plus le nombre d'éléments dans la présélection est grand aussi.
Exemple de réalisation
Le mode de réalisation présenté ci-après vise le transcodage entre deux formats de codage différents UIT-T G.729 et UIT-T G.723.1. Une description de ces deux codeurs normalisés est d'abord donnée ainsi que leurs modélisations LPC.
Codeurs UIT-T G.729 à 8 kbit/s et UIT-T G.723.1 à 6.3 kbit/s
Ces deux codeurs appartiennent à la famille bien connue des codeurs CELP, codeurs à analyse par synthèse.
Dans de tels codeurs à analyse par synthèse, le modèle de synthèse du signal reconstruit est utilisé au codeur pour extraire les paramètres modélisant les signaux à coder. Ces signaux peuvent être échantillonnés à la fréquence de
8 kHz (bande téléphonique 300-3400 Hz) ou une fréquence plus élevée, par exemple à 16 kHz pour le codage en bande élargie (bande passante de 50Hz à 7 kHz). Selon l'application et la qualité désirée, le taux de compression varie de 1 à 16: ces codeurs fonctionnent à des débits de 2 à 16 kbit/s en bande téléphonique, et à des débits de 6 à 32 kbit/s en bande élargie.
Dans le dispositif de codage numérique de type CELP, codeur à analyse par synthèse le plus utilisé actuellement, le signal de parole est échantillonné et converti en une suite de blocs de L échantillons. Chaque bloc est synthétisé en filtrant une forme d'onde extraite d'un répertoire (appelé aussi dictionnaire), multipliée par un gain, à travers deux filtres variant dans le temps. Le dictionnaire d'excitation est un ensemble fini de formes d'ondes de L échantillons. Le premier filtre est le filtre de prédiction à long terme. Une
analyse "LTP" (pour "Long Term Prédiction") permet d'évaluer les paramètres de ce prédicteur à long terme qui exploite la périodicité des sons voisés. Le second filtre, qui intéresse l'invention, est le filtre de prédiction à court terme. Les méthodes d'analyse "LPC" (pour "Linear Prédiction Coding") permettent d'obtenir ces paramètres de prédiction à court terme, représentatifs de la fonction de transfert du conduit vocal et caractéristiques de l'enveloppe du spectre" du "signal. Le procédé utilisé pour déterminer la séquence d'innovation est la méthode d'analyse par synthèse: au codeur, un grand nombre de séquences d'innovation du dictionnaire d'excitation sont filtrées par les deux filtres LTP et LPC, et la forme d'onde sélectionnée est celle produisant le signal synthétique le plus proche du signal original selon un critère de pondération perceptuelle, connu en général sous le nom de critère CELP. Le décodage est quant à lui beaucoup moins complexe que l'encodage. Le flux binaire généré par le codeur permet au décodeur après démultiplexage d'obtenir l'index de quantification de chaque paramètre. Le décodage des paramètres et l'application du modèle de synthèse permettent de reconstruire le signal.
Le codeur UIT-T G.729 travaille sur un signal de parole limité en bande à 3,4 kHz et échantillonné à 8 kHz découpé en trames de 10 ms (80 échantillons). Chaque trame est divisée en deux sous-trames (numérotées 0 et 1) de 40 échantillons (5 ms). Une analyse LPC d'ordre 10 est effectuée toutes les 10 ms (une fois par trame) au moyen de la méthode d'autocorrélation avec une fenêtre asymétrique de 30 ms et une analyse "look-ahead" de 5ms. Les 11 premiers coefficients d'autocorrélation du signal de parole fenêtre sont d'abords calculés pour en déduire les coefficients LPC par l'algorithme dit "de Levinson". Ces coefficients sont ensuite transformés dans le domaine des paires de raies spectrales (LSP) en vue de leur quantification et de leur interpolation. La quantification des valeurs LSP est effectuée au moyen d'une
quantification vectorielle prédictive commutée d'ordre 4 sur 18 bits. Les coefficients du filtre de prédiction linéaire, quantifiés et non quantifiés, sont utilisés pour la deuxième sous-trame, alors que pour la première sous-trame, les coefficients LPC (quantifiés et non quantifiés) sont obtenus par interpolation linéaire des valeurs LSP correspondants dans les sous-trames adjacentes (secondes sous-trames de la trame courante et de la trame passée des' figures 7A~et 7B) Cette interpolation" est appliquée aux coefficients de paires LSP dans le domaine cosinus.
Les coefficients du filtre pondération perceptuelle sont déduits du filtre de prédiction linéaire avant quantification. Les coefficients LSP, quantifiés et non quantifiés, des filtres interpolés sont reconvertis en coefficients LPC afin de construire les filtres de synthèse et de pondération perceptuelle pour chaque sous-trame.
Quant au codeur UIT-T G.723.1 , on indique que ce dernier travaille sur un signal de parole limité en bande à 3,4 kHz et échantillonné à 8 kHz découpé en trames de 30 ms (240 échantillons). Chaque trame comporte 4 sous-trames de 7,5 ms (60 échantillons) regroupées 2 par 2 dans des super sous-trames de 15 ms (120 échantillons). Pour chaque sous-trame, une analyse LPC d'ordre 10 est effectuée au moyen de la méthode d'autocorrélation avec une fenêtre de Hamming de 180 échantillons centrée sur chaque sous-trame (pour la dernière sous-trame, on utilise donc une analyse look-ahead de 7,5 ms). Pour chaque sous-trame, onze coefficients d'autocorrélation sont d'abord calculés puis par l'algorithme de Levinson, on calcule les coefficients LPC. Ces coefficients LPC non quantifiés servent à construire le filtre de pondération perceptuelle pour chaque sous-trame. Le filtre LPC de la dernière sous-trame est quantifié au moyen d'un quantificateur vectoriel prédictif. Les coefficients LPC sont d'abord convertis en coefficients LSP. La quantification des LSP est effectuée au moyen d'une quantification vectorielle prédictive d'ordre 1 sur 24 bits.
Les coefficients LSP de la dernière sous-trame ainsi quantifiés sont décodés puis interpolés avec les coefficients LSP décodés de la dernière sous-trame de la trame précédente pour obtenir les coefficients des trois premières sous- trames. Ces coefficients LSP sont reconvertis en coefficients LPC afin de construire les filtres de synthèse pour les 4 sous-trames.
Détermination des paramètres LPC lors d'un transcodage du codeur UIT-T G.723.1 à 6.3 kbit/s vers le codeur UIT-T G.729 à 8 kbit/s
Ici, le transcodage se fait au niveau "paramètre". Les coefficients LSP du second format de codage sont déterminés par interpolation dynamique des coefficients LSP du premier format de codage déquantifiés. Les coefficients interpolés sont alors quantifiés par la méthode du second format.
Comme cela est présenté sur la figure 7A, si l'on prend classiquement une origine temporelle commune, une trame de G.723.1 correspond à trois trames de G.729. La figure 7B représente une trame de G723.1 et 3 trames de G.729 et leurs sous-trames respectives. Il apparaît donc que les sous-trames du G.729 (5 ms) ne coïncident pas avec celles du G.723.1 (7,5 ms).
Les deux formats n'effectuant pas leur analyse LPC à la même fréquence, l'ensemble des facteurs d'interpolation va dépendre du rang d'une trame G.729 dans son groupe de 3 trames. Ces ensembles ainsi que leur taille sont déterminés par une étude statistique. On constitue un corpus de deux ensembles de vecteurs LSP, obtenus par le codeur G.723.1 {pG 723 i(«)}n≈1 N et le codeur G.729 {pGJ29(m)} m=χ 3N (N=9000), où pGJ23Λ(n) est le vecteur LSP déquantifié de la trame n du codeur G.723.1 (longueur de trame 30 ms) tandis pG 729(m) est le vecteur LSP à quantifier de la trame m du codeur G.729
(longueur de trame 10 ms).
Dans un premier temps, on choisit un ensemble de 101 facteurs {«,} , constitué de 101 valeurs ordonnées dans l'intervalle [0,1] régulièrement espacées de 0,01. Pour chaque trame d'indice (3n+i) on détermine dans cet ensemble, le meilleur facteur, noté a(3n + i) , tel que la distorsion spectrale entre le filtre correspondant à pG m (3n + i) et le filtre interpolé (correspondant à
ά(3n + i)p
G 723 ~ {(n
':::rl)τ(l-ά(3ri+i)) p
' G 123 Λ(n)) soit minimale, soit :
L'élément repris dans cette notation pG,119^>n+î),a) correspond sensiblement aux éléments ([E(LSP)2^) de la figure 5, en précisant simplement ici que les meilleurs facteurs a(n) vont être estimés par sous-trames, les sous-trames étant ici les blocs d'échantillons considérés.
Les figures 8A, 8B et 8C comparent les distributions des distorsions spectrales obtenues par une interpolation statique et l'interpolation dynamique fine au sens de l'invention. Elles illustrent bien l'amélioration des performances apportées par l'interpolation dynamique. Le facteur d'interpolation statique dépend du rang d'une trame G.729 (i=0,1 ,2) dans un groupe de trois trames. Pour un indice i donné, ce coefficient fixe peut être optimisé pour minimiser la distorsion spectrale entre le filtre interpolé et le filtre-cible. Sur le corpus, l'interpolation fixe est donnée par :
= OJ7p
GJ23Λ(n-l)+ O,23p
GJ23Λ{n)
Pa.129 (3« + 1) = 0'36^c723.! (« - 1)+ 0,64P0723., («)
pG,119(3n + 2) = QfilPa.mÀn - 1)+ 0,98^723., (w)
Les figures 6A et 6B montrent l'histogramme de la distribution de la valeur de a(3n + i) pour i=0 et 1 (les deux premières trames de chaque groupe de trois trames). L'examen de l'histogramme des a(3n + i) "optimaux" pour une interpolation adaptative fine montre deux pics aux extrémités de l'intervalle [0,1] et un autre maximum (moins marqué) au voisinage de la valeur du facteur d'interpolation statique (les flèches indiquent les maxima). Une taille de 3 est donc choisie pour l'ensemble des facteurs d'interpolation. Puis, on détermine le meilleur ensemble composé de trois valeurs α par une recherche parmi les triplets ordonnés autour des voisinages des abscisses des 3 pics des histogrammes. Pour les premières trames (respectivement secondes) du groupe de 3 trames, l'ensemble des facteurs d'interpolation est: {0,24; 0,68; 0,98} (respectivement 0,01 ; 0,39; 0,82}). Les figures 9A et 9B montrent que les performances de cette interpolation adaptative, même plus grossière, sont proches de celles obtenues par l'interpolation adaptive fine et bien meilleures que celles de l'interpolation statique.
La sélection du jeu de facteurs d'interpolation se fait alors comme suit.
En dehors de la zone privilégiée autour de la valeur du facteur d'interpolation statique, la distribution des facteurs α(3n+i) "optimaux" pour une interpolation adaptative fine comporte deux pics aux extrémités de l'intervalle [0,1]. Dans la plupart des cas, ces deux valeurs extrêmes correspondent à des zones non stationnaires présentant une rupture de stationnante telle qu'une attaque ou une extinction. La procédure de sélection du jeu de facteurs d'interpolation parmi les trois possibles consiste donc en une première étape de détection d'une rupture de stationnante locale à l'aide d'un critère de stationnante. Puis, en cas de détection positive, on détermine si la trame G.729 est avant ou après la rupture.
La figure 10 donne l'organigramme simplifié de l'algorithme de sélection du facteur d'interpolation. On évalue le critère de stationnante à l'étape 80 et le test 81 distingue si le signal est stationnaire ou non. S'il est stationnaire (flèche O issue du test 81), la valeur attribuée à α(m) est celle intermédiaire a∑ (étape 82). Sinon (signal non stationnaire - flèche N en sortie du test 81), on cherche à déterminer :
- si la rupture intervient avant la trame (3m+i) du codeur G.729 (flèche O en sortie du test 83), auquel cas on affecte un facteur α-i' en début d'histogramme (étape 84) ; - si la rupture intervient après la trame (3m+i) du codeur G.729 (flèche N en sortie du test 83), auquel cas on affecte un facteur α3' en fin d'histogramme (étape 85).
Ainsi, on retiendra, en termes plus généraux et indépendamment du fait de considérer des trames ou plutôt des sous-trames, que : - on détecte un instant (ou une zone) de rupture de stationnante au test 81 - en fait, cet instant de rupture va typiquement être détecté entre un bloc donné (n) et un bloc précédent (n-1) au premier format de codage,
- au test 83, on compare la position temporelle d'un bloc courant (m) du second format de codage, que l'on doit traiter, avec cet instant de rupture détecté,
- et, dans l'interpolation, on affecte plus de poids aux coefficients LPC du premier format qui sont associés au bloc donné (n) (ce qui correspond à l'étape 85) si le bloc (m) du second format se situe après l'instant de rupture (trup), ou aux coefficients LPC du premier format qui sont associés au bloc précédent (n-1) (ce qui correspond à l'étape 84) si le bloc (m) du second format se situe avant l'instant de rupture (trup).
Plus finement, ce poids peut prendre en compte les proximités temporelles relatives des blocs (n) et (n-1) par rapport au bloc (m) et l'instant de rupture.
Les variations d'au moins un paramètre du codeur G.723.1 sont avantageusement utilisées pour évaluer la stationnante locale. Plusieurs types de paramètres peuvent être utilisés: tels que les vecteurs LSPs (ou une autre représentation LPC), les périodes de pitch, les gains de l'excitation fixe, etc. On peut aussi utiliser d'autres paramètres calculés sur le signal de synthèse du G.723.1 (tels que l'énergie de ce signal par sous-trame). Si les variations peuvent être évaluées par une simple erreur quadratique (éventuellement pondérée), il est aussi possible d'utiliser des mesures plus sophistiquées par exemple pour estimer l'évolution de la trajectoire du pitch en tenant compte des multiples ou sous-multiples. On peut aussi faire intervenir des paramètres extraits des trames précédant la trame courante de G.729. Le choix du nombre de critères et de leurs types dépend du compromis qualité/complexité souhaité. Une approche multi-critères (basée sur la distorsion spectrale entre deux filtres LPC du G.723.1 consécutifs, l'évolution de la trajectoire du pitch et les variations d'énergie du signal de synthèse du G.723.1 dans les sous- trames) permet de bien mesurer la stationnante locale et par la suite de bien sélectionner le meilleur facteur d'interpolation parmi les trois. La détection se fait par une comparaison des différentes mesures de stationnante par rapport à des seuils. Ces seuils sont préférentiellement déterminés à l'aide d'une étude statistique des distributions des mesures de variation obtenues pour la classification optimale.
Pour illustrer la variante qui recalcule l'ensemble des facteurs d'interpolation pour tenir compte des erreurs de l'algorithme de sélection, il est présenté ici une réalisation simple basée sur un seul critère, par exemple les variations d'énergie par bloc de 5 ms du signal de synthèse de G.723.1. On note E
1 l'énergie du signal de synthèse du codeur G.723.1 calculée sur le bloc de 5ms correspondant à la seconde sous-trame de la trame 3n+i du G.729. Pour chaque trame 3n+i du G.729, on calcule deux rapports d'énergie p
(0) et p
m .
où E_
x est l'énergie du signal de synthèse du G.723.1 calculée sur le dernier bloc de 5ms de sa trame précédente (trame (n-1)). L'algorithme de sélection du facteur d'interpolation est le suivant : α(3n+i)= α
!2 si (/7
(0)< S et yσ
(1) > S
1), α(3n+i)= α'
3 sinon, si (p,
(0) >S' et pf> <S), α(3n+i)= α'i
Après une étude statistique, les valeurs de seuil S et S' ont été déterminées pour favoriser le facteur d'interpolation proche du coefficient statique, ce qui conduit à restreindre l'utilisation de l'interpolation dynamique qu'au cas où une rupture est nettement détectée. Comme expliqué précédemment, les facteurs d'interpolation sont recalculés en fonction de la classification effectuée par cet algorithme de décision. Dans une variante, la procédure d'interpolation dynamique peut être conservative, auquel cas le facteur d'interpolation statique est choisi comme facteur d'interpolation moyen α'∑ et seuls les facteurs extrêmes (α'-i.α's) sont optimisés.
Bien entendu, la présente invention ne se limite pas à la forme de réalisation décrite ci-avant à titre d'exemple ; elle s'étend à d'autres variantes.
En effet, pour rester concise, la description ci-avant s'est limitée au cas où les paramètres LPC d'une trame courante du second format sont déterminés par une interpolation adaptative des paramètres LPC de deux trames consécutives du second format. Toutefois, on comprendra que l'invention peut s'appliquer à des schémas d'interpolation plus complexes, faisant intervenir par exemple plus de deux trames du premier format et/ou, éventuellement d'autres trames du second format.
Ainsi, le procédé au sens de l'invention ne se limite pas à une réalisation selon laquelle les coefficients LPC du second format se déduiraient d'une interpolation sur les coefficients LPC du premier format uniquement. Au contraire, une variante qui reste dans le cadre de l'invention consisterait à utiliser les coefficients LPC à la fois du premier et du second format (éventuellement déterminés pour des blocs précédents) pour mener l'interpolation.
Par ailleurs, on a défini ci-avant le procédé au sens de l'invention comme impliquant un bloc donné (n) et au moins un bloc précédent (n-1). Ce bloc donné peut être un bloc courant, tandis que le bloc précédent (n-1) est un bloc passé. Toutefois, on comprendra qu'en variante, l'interpolation peut être menée sur pour un bloc courant (n) et un bloc futur (n+1), si l'on admet un retard dans le traitement au sens de l'invention.
De même, l'invention peut s'appliquer à d'autres blocs d'échantillons que les trames du premier ou second format (par exemple des sous-trames).
Enfin, la représentation des paramètres LPC par des vecteurs LSP n'est donnée ci-avant qu'à titre d'exemple. Bien entendu, l'invention s'applique à d'autres représentations LPC.