Brevet FR2867648A1 — publié le 20050916

Transcodage entre indices de dictionnaires multi- impulsionnels utilisés en codage en compression de signaux numériques La présente 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). Dans le domaine du codage en compression, de nombreux codeurs modélisent un signal de L échantillons par des impulsions en nombre restreint, très inférieur au nombre total d'échantillons. C'est, par exemple, le cas de certains codeurs audio fréquentiels tels que le codeur audio dit "TDAC" décrit notamment dans le document publié US-2001/027393. Dans ce codeur, les coefficients de transformée en cosinus discrète modifiée normalisés dans chaque bande sont quantifiés par des quantificateurs vectoriels utilisant des dictionnaires algébriques imbriqués en taille, ces codes algébriques comportent en général quelques composantes non nulles, les autres composantes étant égales à zéro. C'est aussi le cas de la majorité des codeurs de parole à analyse par synthèse notamment de type "ACELP" (pour "Algebraic Code Excited Linear Prediction"), de type MP-MLQ (pour "MultiPulse Maximum Likelihood Quantization"), ou autres. En effet, pour modéliser le signal d'innovation, ces codeurs utilisent un répertoire, composé de formes d'ondes ayant très peu de composantes non nulles dont les positions et les amplitudes obéissent, de plus, à des règles prédéterminées. On décrit brièvement ci-après de tels codeurs à analyse par synthèse. Dans ces codeurs à analyse par synthèse, le modèle de synthèse est utilisé au codage pour extraire les paramètres modélisant les signaux à coder. Ces signaux peuvent être échantillonnés à la fréquence téléphonique (Fe = 8 kHz) ou à une fréquence plus élevée, par exemple à 16 kHz pour le codage en bande élargie (bande passante de 50 Hz à 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. Le principe d'un dispositif de codage/décodage numérique de type CELP, qui est le codeur/décodeur à analyse par synthèse le plus utilisé actuellement pour le codage/décodage des signaux de parole, est brièvement décrit ci-après. Le signal de parole est échantillonné et converti en une suite de blocs de L' échantillons appelés trames. En général, chaque trame est découpée en blocs plus petits de L échantillons, appelés sous-trames. 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 dite "LTP" (pour "Long Term Prediction") permet d'évaluer les paramètres de ce filtre de prédiction à long terme qui exploite la périodicité des sons voisés (représentant typiquement la fréquence du fondamental (fréquence de vibration des cordes vocales)). Le second filtre est le filtre de prédiction à court terme. Les méthodes d'analyse "LPC" (pour "Linear Prediction 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 du spectre du signal (représentant typiquement les modulations dues à la forme prise par les lèvres, à la position de la langue et du larynx, ou autres). Le procédé utilisé pour déterminer la séquence d'innovation est la méthode d'analyse par synthèse. Au niveau du 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. On décrit brièvement ci-après l'utilisation de dictionnaires multiimpulsionnels dans de tels codeurs à analyse par synthèse, étant bien entendu toutefois que les codeurs CELP, comme les décodeurs CELP, sont bien connus de l'homme de l'art. Le codeur multi-débits de la norme UIT-T G.723.1 est un bon exemple de codeur à analyse par synthèse utilisant des dictionnaires multiimpulsionnels. Ici, les positions d'impulsions sont toutes distinctes. Les deux débits du codeur (6,3 kbit/s et 5,3 kbit/s) modélisent le signal d'innovation par des formes d'onde extraites de dictionnaires qui ne comportent qu'un nombre restreint d'impulsions non nulles: 6 ou 5 pour le haut débit, 4 pour le bas débit. Ces impulsions sont d'amplitude +1 ou -1. Dans son mode à 6,3 kbit/s, le codeur G.723.1 utilise alternativement deux dictionnaires: - dans le premier utilisé pour les sous-trames paires, les formes d'ondes comportent 6 impulsions et, - dans le deuxième utilisé pour les sous-trames impaires, elles comportent 5 impulsions. Pour ces deux dictionnaires, une seule restriction est imposée aux positions des impulsions de tout vecteur-code. Ces positions doivent toutes avoir la même parité, c'est-à-dire qu'elles sont toutes paires ou toutes impaires. Dans le dictionnaire du mode à 5,3 kbit/s, les positions des 4 impulsions sont plus contraintes. Outre la même contrainte de parité que les dictionnaires du mode haut débit, chaque impulsion a un choix limité de positions. Le dictionnaire multi-impulsionnel du mode à 5,3 kbit/s appartient à la famille bien connue des dictionnaires ACELP. La structure d'un répertoire ACELP est basée sur la technique ISPP (pour "Interleaved Single-Pulse Permutation") qui consiste à diviser l'ensemble des L positions en K pistes entrelacées, chacune des N impulsions étant localisée dans certaines pistes prédéfinies. Dans certaines applications, la dimension L des mots de codes peut être étendue à L+N. Ainsi dans le cas du répertoire du mode bas débit du codeur selon la norme UIT-T G.723.1, la dimension du bloc de 60 échantillons a été étendue à 64 échantillons et les 32 positions paires (respectivement impaires) ont été divisées en 4 pistes entrelacées de longueur 8 ne se recouvrant pas. Il y a donc deux groupes de 4 pistes, un pour chaque parité. La table 1 ci-après présente pour chaque impulsion notée io à i3 l'ensemble de ces 4 pistes pour les positions paires. Impulsion Signe Positions ip 1 0, 8, 16, 24, 32, 40, 48, 56 il 1 2, 10, 18, 26, 34, 42, 50, 58 i2 1 4, 12, 20, 28, 36, 44, 52, (60) l3 1 6, 14, 22, 30, 38, 46, 54, (62) Table 1: Positions et amplitudes des impulsions du dictionnaire ACELP du codeur G.723.1 à 5,3 kbit/s Les dictionnaires d'innovation ACELP sont utilisés dans de nombreux codeurs à analyse par synthèse qui sont normalisés (UIT-T G.723.1, UIT-T G.729, IS641, 3GPP NBAMR, 3GPP WB-AMR). Les tables 2 à 4 ci-après présentent quelques exemples de ces dictionnaires ACELP pour une longueur de bloc de 40 échantillons. On notera que la contrainte de parité n'est pas utilisée dans ces dictionnaires. La table 2 présente le dictionnaire ACELP à 17 bits et 4 impulsions non nulles d'amplitude 1, utilisé dans le codeur UIT-T G.729 à 8 bkit/s, dans le codeur IS-641 à 7,4 kbit/s ainsi que dans les modes 7,4 et 7,95 kbit/s du codeur 3GPP NB-AMR. Impulsion Signe Positions ip ?' 1 0, 5, 10, 15, 20, 25, 30, 35 il 1 1, 6, 11, 16, 21, 26, 31, 36 l2 1 2, 7, 12, 17, 22, 27, 32, 37 l3 1 3, 8, 13, 18, 23, 28, 33, 38 4, 9, 14, 19, 24, 29, 34, 39 Table 2: Positions et amplitudes des impulsions du dictionnaire ACELP des codeurs UIT-T G.729 à 8 kbit/s, IS641 à 7,4 kbit/s et 3GPP NB-AMR à 7,4 et 7,95 kbit/s Dans le dictionnaire ACELP à 35 bits utilisé dans le mode 12,2 kbit/s du codeur 3GGPP NB-AMR, chaque vecteur-code contient 10 impulsions non nulles d'amplitude 1. Le bloc de 40 échantillons est divisé en 5 pistes de longueur 8, chacune contenant 2 impulsions. On note que les deux impulsions d'une même piste peuvent se recouvrir et résulter en une seule impulsion d'amplitude 2. Ce dictionnaire est présenté à la table 3. Impulsion Signe Positions l0 l5 1 0, 5, 10, 15, 20, 25, 30, 35 ils i6 1 1, 6, 11, 16, 21, 26, 31, 36 i2, i7 1 2, 7, 12, 17, 22, 27, 32, 37 l3, 8 1 3, 8, 13, 18, 23, 28, 33, 38 i4, i9 1 4, 9, 14, 19, 24, 29, 34, 39 Table 3: Positions et amplitudes des impulsions du dictionnaire ACELP du codeur 15 3GPP NB-AMR à 12,2 kbit/s Enfin, la table 4 présente le dictionnaire ACELP à 11 bits et 2 impulsions non nulles d'amplitude 1, utilisé dans l'extension à bas débit (6,4 bkit/s) du codeur UIT-T G.729 et dans le mode 5,9 kbit/s du codeur 3GPP NB-AMR. Impulsion Signe Positions io 1 1, 3, 6, 8, 11, 13, 16, 18, 21, 23, 26, 28, 31, 33, 36, 38 1 0, 1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 34, 35, 36, 37, 39 Table 4: Positions et amplitudes des impulsions du dictionnaire ACELP des codeurs UIT-T G. 729 à 6,4 kbit/s et 3GPP NB-AMR à 5,9 kbit/s On décrit ci-après ce que l'on entend par "l'exploration" 5 des dictionnaires multi-impulsionnels. Comme pour toute opération de quantification, la recherche de la modélisation optimale d'un vecteur à coder consiste à choisir dans l'ensemble (ou dans un sous-ensemble) des vecteurs-codes du dictionnaire, celui qui lui "ressemble" le plus, c'est-à-dire celui qui minimise une mesure de distance entre lui et ce vecteur d'entrée. Pour ce faire, on procède à une étape dite "d'exploration" des dictionnaires. Dans le cas des dictionnaires multi-impulsionnels, cette étape revient à rechercher la combinaison d'impulsions qui optimise la proximité entre le signal à modéliser et le signal résultant du choix des impulsions. Selon la taille et/ou la structure du dictionnaire, cette exploration peut être exhaustive ou non (donc plus ou moins complexe). Les dictionnaires utilisés dans le codeur TDAC précité étant des unions de codes à permutation de type II, l'algorithme de codage d'un vecteur de coefficients de transformée normalisés exploite cette propriété pour déterminer son plus proche voisin parmi tous les vecteurs- codes tout en ne calculant qu'un nombre limité de critères de distance (avec une utilisation de vecteurs dits "leaders absolus"). Dans les codeurs à analyse par synthèse, l'exploration des dictionnaires multi-impulsionnels n'est pas exhaustive sauf pour les dictionnaires de faible taille. Pour les dictionnaires à plus haut débit, seul un petit pourcentage du dictionnaire est exploré. Par exemple, l'exploration des dictionnaires multi-impulsionnels de type ACELP est généralement effectuée en deux étapes. Pour simplifier cette recherche, une première étape présélectionne pour chaque position possible d'impulsion son amplitude (donc son signe comme indiqué ci-avant) par une simple quantification d'un signal dépendant du signal d'entrée. Les amplitudes des impulsions étant fixées, les positions des impulsions sont alors recherchées par une technique d'analyse par synthèse (selon le critère CELP). En dépit de l'exploitation de la structure en ISPP et du nombre restreint d'impulsions, une recherche exhaustive des combinaisons des positions n'est effectuée que pour les dictionnaires bas débit (typiquement inférieur ou égal à 12 bits). C'est le cas par exemple, pour le dictionnaire ACELP à 11 bits (table 4) utilisé dans le codeur G.729 à 6,4 kbit/s où les 512 combinaisons de positions de 2 impulsions sont toutes testées pour sélectionner la meilleure, ce qui revient à calculer les 512 critères CELP correspondants. Pour les dictionnaires à plus haut débit, diverses méthodes dites de focalisation ont été proposées. On parle alors de "recherche focalisée". Certaines de ces méthodes, connues, sont utilisées dans les codeurs normalisés cités ci-avant. Leur but est de réduire le nombre de combinaisons de positions à explorer en se basant sur les propriétés du signal à modéliser. Par exemple, on peut citer l'algorithme dit "depthfirst tree", utilisé par beaucoup de codeurs ACELP standardisés. Dans cet algorithme, on privilégie certaines positions telles que les maxima locaux des pistes d'un signal-cible dépendant du signal d'entrée, du signal synthétique passé et du filtre composé des filtres de synthèse et de pondération perceptuelle. Il en existe plusieurs variantes selon la taille du dictionnaire utilisé. Pour explorer le dictionnaire ACELP à 35 bits et 10 impulsions (table 3), la première impulsion est placée à la même position que le maximum global du signal-cible. Puis, quatre itérations sont effectuées par permutation circulaire des pistes consécutives. A chaque itération, la position de la deuxième impulsion est fixée au maximum local d'une des 4 autres pistes, les positions des huit autres impulsions restantes sont recherchées séquentiellement par paires dans des boucles imbriquées. On teste à chaque itération 256 (=4 pairesx8x8) combinaisons différentes, ce qui permet donc de n'explorer que 1024 combinaisons de positions des 10 impulsions parmi les 225 du dictionnaire. Une autre variante est utilisée dans le codeur IS641 où un pourcentage plus élevé de combinaisons du dictionnaire à 17 bits et 4 impulsions (table 2) est exploré. On teste 2867648 10 768 combinaisons parmi les 8192 (=273) combinaisons de positions d'impulsions. Dans le codeur G.729 à 8 kbit/s, ce même dictionnaire ACELP est exploré par une méthode différente de focalisation. L'algorithme effectue une recherche itérative en imbriquant quatre boucles de recherche des impulsions (une par impulsion). La recherche est focalisée en rendant l'entrée dans la boucle intérieure (recherche de la dernière impulsion appartenant aux pistes 3 ou 4) conditionnelle au dépassement d'un seuil adaptatif. Ce seuil dépend aussi des propriétés du signal- cible (maxima locaux et moyennes des 3 premières pistes). De plus, le nombre maximal d'explorations de combinaisons de 4 impulsions est fixé à 1440 (soit 17,6 % des 8192 combinaisons). Dans le codeur G.723.1 à 6,3 kbit/s, toutes les 2x25 xC30 (respectivement 2x26xC30) combinaisons de 5 (respectivement 6) impulsions ne sont pas explorées. Pour chaque grille, l'algorithme emploie une analyse connue, de type "multipulse", pour rechercher séquentiellement les positions et les amplitudes des impulsions. Comme pour les dictionnaires ACELP, des variantes existent pour restreindre le nombre de combinaisons testées. De telles techniques présentent toutefois les problèmes ci-après. L'exploration, même sous-optimale, d'un dictionnaire multi-impulsionnel constitue dans beaucoup de codeurs une opération coûteuse en temps de calcul. Par exemple, dans les codeurs G.723.1 à 6,3kbit/s et le G.729 à 8 kbit/s, cette recherche représente près de la moitié de la complexité totale du codeur. Pour le NB-AMR, elle représente le tiers de la complexité totale du codeur. Pour le codeur TDAC, elle représente le quart de la complexité totale du codeur. On comprendra en particulier que cette complexité devient 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 qui circulent sur les réseaux. En effet, 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). On définit ci-après ce que l'on entend par "transcodage". Le transcodage devient 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 décompressée. Ce signal décompressé est alors recompressé sous un second format accepté par la suite de la chaîne de communication. Cette mise en cascade d'un décodeur et d'un codeur est appelée "tandem". Cette solution est très coûteuse en complexité (essentiellement à cause du recodage) et elle dégrade la qualité. En effet, le second codage se fait sur un signal décodé, qui est une version dégradée du signal original. Par ailleurs, une trame peut rencontrer plusieurs tandems avant d'arriver à destination. On imagine aisément le coût en calcul et la perte de qualité. De plus, les retards liés à chaque opération de tandem s'accumulent et peuvent nuire à l'interactivité des communications. Par ailleurs, 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 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 multicodage devient extrêmement complexe à mesure qu'augmente le nombre de formats désirés, ce qui sature rapidement les ressources du système. Un autre cas de codage multiple en parallèle est la compression multimode à décision a posteriori. 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. On décrit ci-après les approches, connues, qui ont été mises en uvre pour tenter de résoudre les problèmes posés décrits ci-avant. Les nouvelles applications de communication multimédia (tels que l'audio et la vidéo) nécessitent souvent plusieurs codages soit en cascade (transcodage) soit en parallèle (multi-codage et codage multi-mode à décision a posteriori). La barrière de complexité posée par tous ces codages reste un problème à résoudre, malgré l'augmentation des puissances de traitement actuelles. La plupart de ces opérations connues de codage multiple ne prennent pas en compte les interactions entre les formats et entre le format de E et son contenu. Cependant, quelques techniques de transcodage intelligent ont été proposées qui ne se contentent plus de décoder puis recoder, mais exploitent les similitudes entre formats de codages et permettent ainsi de réduire la complexité tout en limitant la dégradation apportée. On décrit ci-après des méthodes de transcodage dit "intelligent". Au sein d'une même famille de codeurs (CELP, paramétrique, 30 par transformée, ou autre), tous les codeurs extraient du signal les mêmes paramètres physiques. Pourtant, il existe une grande variété de modélisation et/ou quantification de ces paramètres. Ainsi, d'un codeur à un autre, un même paramètre peut être codé de la même manière, ou, au contraire, très différemment. Par ailleurs, les codages peuvent être strictement identiques. Ils peuvent être identiques dans la modélisation et le calcul du paramètre, mais se différencier simplement par la traduction du codage sous forme de bits. Enfin, ils peuvent être complètement différents tant par la modélisation du paramètre que sa quantification, voire par sa fréquence d'analyse ou d'échantillonnage. Si la modélisation et le calcul d'un paramètre sont strictement identiques, y compris dans la traduction binaire, il suffit de recopier le champ binaire correspondant du train binaire généré par le premier codeur vers celui du second. Ce cas très favorable se présente par exemple lors d'un transcodage de la norme G.729 à la norme IS-641 pour l'excitation adaptative (retards LTP). Si, pour le même paramètre, les deux codeurs ne se distinguent que par la traduction binaire du paramètre calculé, il suffit de décoder le champ binaire du premier format, puis de repasser dans le domaine binaire en utilisant la méthode de codage selon le second format. Cette conversion peut aussi être effectuée par des tables de correspondance bijective. C'est le cas par exemple lors d'un transcodage des excitations fixes de la norme G.729 à la norme AMR (7,4 et 7,95kbit/s). Dans les deux cas précédents, le transcodage du paramètre se fait en restant au niveau des bits. Une simple manipulation de bits permet de rendre le paramètre compatible avec le second format de codage. En revanche, lorsqu'un paramètre extrait du signal est modélisé ou quantifié différemment par deux formats de codage, le passage de l'un vers l'autre ne se fait pas aussi simplement. Plusieurs méthodes ont été proposées. Elles opèrent soit au niveau du paramètre, soit au niveau de l'excitation, soit au niveau du signal décodé. Pour le transcodage dans le domaine des paramètres, rester au niveau du paramètre est possible lorsque les deux formats de codage calculent un paramètre de la même manière mais le quantifient différemment. Les différences de quantifications peuvent être liées à la précision choisie ou encore à la méthode choisie (scalaire, vectorielle, prédictive, ou autre). Il suffit alors de décoder le paramètre, puis de le quantifier par la méthode du second format de codage. Cette méthode connue est appliquée actuellement, notamment pour le transcodage des gains d'excitations. Souvent, il faut modifier le paramètre décodé avant sa requantification. Par exemple, si les codeurs ont des fréquences d'analyse du paramètre ou des longueurs de trames/sous-trames différentes, il est courant d'interpoler/décimer les paramètres. L'interpolation peut se faire par exemple selon la méthode décrite dans le document publié US2003/033142. Une autre modification possible est d'arrondir le paramètre à la précision qui lui est imposée par le second format de codage. Ce cas se présente surtout pour la hauteur de la fréquence fondamentale (ou "pitch"). S'il n'est pas possible de transcoder un paramètre en restant dans le domaine du paramètre, on peut remonter à un niveau supérieur dans le décodage. Il s'agit du domaine de l'excitation, sans pour autant aller jusqu'au domaine du signal. Cette technique a été proposée pour les gains dans la référence "Improving transcoding capability of speech coders in clean and frame erasured Channel environments" de Hong-Goo Kang, Hong Kook Kim, Cox, R.V., dans Speech Coding, 2000, Proceedings 2000, IEEE Workshop on Speech Coding, Pages 78-80. Enfin, une dernière solution (la plus complexe et la moins "intelligente") consiste à recalculer explicitement le paramètre comme le ferait le codeur, mais à partir d'un signal synthétisé. Cette opération revient à une sorte de tandem partiel, seuls certains paramètres étant entièrement recalculés. Cette méthode a été appliquée à divers paramètres tels que l'excitation fixe, les gains dans la référence IEEE précitée, ou le pitch. Pour le transcodage des impulsions, même si plusieurs techniques ont été développées afin de calculer les paramètres rapidement et à moindre coût, peu de ces solutions aujourd'hui ont une approche intelligente pour calculer les impulsions d'un format à partir du paramètre équivalent sous un autre format. En codage à analyse par synthèse, le transcodage intelligent des codes impulsionnels n'est appliqué que lorsque la modélisation est identique (ou proche). En revanche, si les modélisations sont différentes, la méthode du tandem partiel est utilisée. Il faut noter que pour limiter la complexité de cette opération, des approches focalisées exploitant les propriétés du signal décodé ou d'un signal dérivé tel qu'un signal-cible ont été proposées. Dans le document précité US-2001/027393, dans l'exemple de réalisation mettant en oeuvre un codeur par transformée MDCT, est présentée une procédure de changement de débit qui peut être considérée comme un cas particulier du transcodage intelligent. En effet, cette procédure permet de requantifier un vecteur d'un premier dictionnaire par un vecteur d'un second dictionnaire. Elle distingue pour cela deux cas selon l'appartenance ou non du vecteur à requantifier dans le deuxième dictionnaire. Si le vecteur quantifié appartient au nouveau dictionnaire, la modélisation est identique; sinon, la méthode du décodage partiel est appliquée. La présente invention propose, en se démarquant de toutes ces techniques connues, un transcodage multi-impulsionnel basé sur une sélection d'un sous-ensemble de combinaisons de positions d'impulsions d'un ensemble de jeux d'impulsions à partir d'une combinaison de positions d'impulsions d'un autre ensemble de jeux d'impulsions, les deux ensembles pouvant se distinguer par le nombre d'impulsions qu'ils comportent ainsi que par les règles régissant leurs positions et/ou leurs amplitudes. Ce transcodage est très utile notamment pour les codages multiples en cascade (transcodages) ou en parallèle (multi-codages et codages multi-modes). A cet effet, la présente invention propose tout d'abord un procédé de transcodage entre un premier codeur/décodeur en compression et au moins un second codeur/décodeur en compression. Ces premier et second codeurs/décodeurs sont de type impulsionnel et utilisent des dictionnaires multi- impulsionnels dans lesquels chaque impulsion comporte une position repérée par un indice associé. Le procédé de transcodage au sens de l'invention comporte les étapes suivantes: a) le cas échéant, adaptation de paramètres de codage entre lesdits premier et second codeurs/décodeurs, b) obtention, à partir du premier codeur/décodeur, d'un nombre choisi de positions d'impulsions et d'indices de positions respectivement associés, c) pour chaque position d'impulsion courante d'indice donné, formation d'un groupe de positions d'impulsions comportant au moins la position d'impulsion courante et des positions d'impulsions d'indices associés immédiatement inférieurs et immédiatement supérieurs à l'indice donné, d) sélection, en fonction de positions d'impulsions admises par le second codeur/décodeur, d'une partie au moins des positions d'impulsions dans un ensemble constitué par une union desdits groupes formés à l'étape c), et e) transmission des positions des impulsions ainsi sélectionnées au second codeur/décodeur, pour un codage/décodage à partir desdites positions transmises. Ainsi, la sélection de l'étape d) fait intervenir un nombre de positions d'impulsions possibles inférieur au nombre total de positions d'impulsions possibles du dictionnaire du second codeur/décodeur. On comprendra en particulier qu'à l'étape e), dans le cas où le second codeur/décodeur précité est un codeur, les positions d'impulsion sélectionnées sont transmises à ce codeur, pour un codage par recherche uniquement parmi les positions transmises. Dans le cas où le second codeur/décodeur précité est un décodeur, ces positions d'impulsion sélectionnées sont transmises pour un décodage de ces positions. Préférentiellement, l'étape b) utilise un décodage partiel du flux binaire fourni par le premier codeur/décodeur en vue d'identifier un premiernombre de positions d'impulsions qu'utilise le premier codeur/décodeur, dans un premier format de codage. Ainsi, le nombre choisi à l'étape b) correspond préférentiellement à ce premier nombre de positions d'impulsions. Dans une réalisation avantageuse, les étapes ci-avant sont mises en oeuvre par un produit programme d'ordinateur comportant des instructions de programme à cet effet. A ce titre la présente invention vise aussi un tel produit programme d'ordinateur, destiné à être stocké dans une mémoire d'une unité de traitement, notamment d'un ordinateur ou d'un terminal mobile, ou sur un support mémoire amovible et destiné à coopérer avec un lecteur de l'unité de traitement. La présente invention vise aussi un dispositif de transcodage entre des premier et second codeurs/décodeurs en compression, et comportant alors une mémoire propre à stocker des instructions d'un produit programme d'ordinateur du type décrit ci-avant. 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 la représente schématiquement le contexte de transcodage au sens de la présente invention, dans une configuration "en cascade", - la figure lb représente schématiquement le contexte de transcodage au sens de la présente invention, dans une configuration "en parallèle", - la figure 2 représente schématiquement les différents cas prévus pour les traitements de transcodage à effectuer, - la figure 2a représente schématiquement un traitement d'adaptation prévu pour le cas où les fréquences d'échantillonnage des premier E et second S codeurs sont différentes, - la figure 2b représente schématiquement une variante du traitement de la figure 2a, - la figure 3 résume les étapes du procédé de transcodage au sens de l'invention, - la figure 4 représente schématiquement le cas de deux sous-trames respectivement des codeurs E et S, de durées différentes Le et Ls (avec Le>Ls), mais de mêmes fréquences d'échantillonnage, - la figure 4b représente à titre d'exemple un cas pratique de la figure 4 en illustrant la correspondance temporelle entre un codeur G.723.1 et un codeur G.729, - la figure 5 illustre schématiquement le découpage de l'excitation du premier codeur E au rythme du second codeur S, - la figure 6 illustre le cas où l'une des pseudo-soustrames STE'0 est vide, - la figure 7 représente schématiquement un traitement d'adaptation prévu pour le cas où les durées de sous-trame 15 des premier E et second S codeurs sont différentes. On indique tout d'abord que la présente invention s'inscrit dans la modélisation et le codage des signaux numériques multimédia tels que les signaux audio (parole et/ou sons) par des dictionnaires multiimpulsionnels. Elle peut être mise en oeuvre dans le cadre du codage/décodage multiple en cascade ou en parallèle ou de tout autre système utilisant la modélisation d'un signal par une représentation multi-impulsionnelle et qui, à partir de la connaissance d'un premier jeu d'impulsions appartenant à un premier ensemble, doit déterminer au moins un jeu d'impulsions d'un second ensemble. Par souci de concision, seul le cas d'un passage d'un premier ensemble vers un autre ensemble est décrit mais l'invention s'applique aussi dans le cas de passage vers n (n z 2) ensembles. Par ailleurs, on ne décrit ci-après que le cas d'un "transcodage" entre deux codeurs, mais, bien entendu, le transcodage entre un codeur et un décodeur, s'en déduit sans difficulté majeure. On considère donc le cas de deux modélisations d'un signal par des jeux d'impulsions correspondant à deux systèmes de codage. Sur les figures la et lb, on a représenté un dispositif de transcodage D entre un premier codeur E, utilisant un premier format de codage COD1, et un second codeur S, utilisant un second format de codage COD2. Le codeur E délivre un flux (ou "train") binaire codé scE (sous la forme d'une succession de trames codées) au dispositif de transcodage D, lequel comporte un module 10 de décodage partiel pour récupérer le nombre Ne de positions d'impulsions utilisées dans le premier format de codage et les positions Pe de ces impulsions. Comme on le verra en détail ci-après, le dispositif de transcodage au sens de l'invention procède à une extraction des voisinages de droite ved et de gauche veg de chaque position d'impulsion pe et sélectionne, dans l'union de ces voisinages, des positions d'impulsions qui seront reconnues par le second codeur S. Le module 11 du dispositif de transcodage représenté sur les figures la et lb effectue donc ces étapes pour délivrer cette sélection de positions (notée Sj sur ces figures la et lb) au second codeur S. On comprendra en particulier qu'à partir de cette sélection Sj, on constitue un sous-répertoire de taille inférieure à la taille du dictionnaire qu'utilise habituellement le second codeur S, selon un avantage que procure l'invention. En utilisant ce sous-répertoire, le codage qu'effectue le codeur S est bien entendu plus rapide car plus restreint, sans nuire pour autant à la qualité de codage. Dans l'exemple représenté sur la figure la, le dispositif de transcodage D comporte en outre un module 12 de décodage au moins partiel du flux codé scE que délivre le premier codeur E. Le module 12 fournit alors au second codeur S une version au moins partiellement décodée s'o du signal d'origine so. Le second codeur S délivre ensuite, sur la base de cette version s'o, un flux binaire codé scE. Dans cette configuration, le dispositif de transcodage D effectue donc une adaptation de codage entre le premier codeur E et le second codeur S, en favorisant avantageusement un codage plus rapide (car plus restreint) auprès du second codeur S. Bien entendu, en variante, l'entité référencée S sur les figures la et lb peut être un décodeur et, dans cette variante, le dispositif D au sens de l'invention effectue un transcodage, proprement dit, entre un codeur E et un décodeur S, ce décodage s'effectuant rapidement grâce aux informations fournies par le dispositif D. Le processus étant réversible, on comprendra que, de façon beaucoup plus générale, le dispositif de transcodage D au sens de la présente invention opère entre un premier codeur/décodeur E et un second codeur/décodeur S. On indique que l'agencement du codeur E, du transcodeur D et du codeur S peut respecter une configuration "en cascade", comme représentée sur la figure la. Dans la variante représentée sur la figure lb, cet agencement peut respecter une configuration "en parallèle". Dans ce cas, les deux codeurs E et S reçoivent le signal original so et les deux codeurs E et S délivrent respectivement les flux codés SCE et sis. Bien entendu, le second codeur S n'a plus à recevoir ici la version s'o de la figure la et le module de décodage au moins partiel 12 du dispositif de transcodage D n'est plus nécessaire. On indique en outre que, si le codeur E peut fournir une sortie compatible avec l'entrée du module 11 (tant par rapport à son nombre d'impulsions que par rapport à ses positions d'impulsions), le module 10 peut simplement être omis ou "court-circuité". On indique en outre que le dispositif de transcodage D peut simplement être équipé d'une mémoire stockant les instructions pour mettre en uvre les étapes ci-avant et d'un processeur pour traiter ces instructions. L'application de l'invention se situe donc comme suit. Le premier codeur E a effectué son opération de codage sur un signal donné so (par exemple le signal original). On dispose donc des positions des impulsions choisies par le premier codeur E. Ce codeur a déterminé ces positions pe par une technique qui lui est propre lors du processus de codage. Le second codeur S doit réaliser lui aussi son codage. Dans le cas du transcodage, le second codeur S ne dispose que du train binaire généré par le premier codeur et l'invention est ici applicable au transcodage dit "intelligent" tel que défini ci-avant. Dans le cas du codage multiple en parallèle, le second codeur S dispose aussi du signal dont dispose le premier codeur et l'invention s'applique ici au "mufti-codage intelligent". En effet, un système qui désire coder un même contenu sous plusieurs formats peut exploiter les informations d'un premier format pour simplifier les opérations de codage des autres formats. L'invention peut aussi s'appliquer au cas particulier du codage multiple en parallèle qu'est le codage multi-mode à décision a posteriori. La présente invention permet de déterminer rapidement les positions ps (ou, notée indistinctement encore ci-après, si) des impulsions pour un autre format de codage à partir de positions pe (ou, notée indistinctement encore ci-après, ei) des impulsions d'un premier format. Elle permet de réduire considérablement la complexité de calcul de cette opération pour le second codeur en limitant le nombre de positions possibles. A cet effet, elle utilise les positions choisies par le premier codeur pour définir un ensemble restreint de positions dans l'ensemble des positions possibles du second codeur, ensemble restreint dans lequel on recherchera le meilleur jeu de positions pour les impulsions. Il en résulte un gain en complexité important tout en limitant la dégradation du signal par rapport à une recherche exhaustive ou focalisée classique. On comprendra ainsi que la présente invention limite le nombre de positions possibles en définissant un ensemble restreint de positions à partir des positions du premier format de codage. Elle se distingue des solutions existantes dans la mesure où celles-ci utilisent uniquement les propriétés du signal à modéliser pour limiter le nombre de positions possibles, en privilégiant et/ou en éliminant des positions. Préférentiellement, pour chaque impulsion d'un jeu d'un premier ensemble, on définit deux voisinages (un droit et un gauche) de largeur ajustable plus ou moins contrainte et on en extrait un ensemble de positions possibles, dans lequel sera présélectionnée au moins une combinaison d'impulsions respectant les contraintes du deuxième ensemble. Avantageusement, le procédé de transcodage permet d'optimiser le compromis complexité/qualité en adaptant le nombre de positions d'impulsions et/ou les tailles respectives (en terme de combinaisons de positions d'impulsions) des voisinages droit et gauche, pour chaque impulsion. Cet ajustement peut être effectué au début du traitement ou à chaque sous-trame en fonction de la complexité autorisée et/ou du jeu de positions de départ. L'invention permet aussi d'ajuster/limiter le nombre de combinaisons de positions en favorisant avantageusement les voisinages immédiats. Comme indiqué ci-avant, la présente invention vise aussi un produit programme d'ordinateur dont l'algorithme est conçu notamment pour l'extraction de positions voisines qui facilite la composition des combinaisons d'impulsions du deuxième ensemble. Comme indiqué précédemment, l'hétérogénéité des réseaux et des contenus peut mettre en présence des formats de codage très variés. Les codeurs peuvent se distinguer par de nombreuses caractéristiques. En particulier, deux d'entre elles déterminent sensiblement le mode de fonctionnement de l'invention. Il s'agit de la fréquence d'échantillonnage et de la durée d'une sous-trame. Ci-après, les différents cas possibles sont présentés en correspondance de mises en oeuvre de l'invention selon ces différents cas. La figure 2 synthétise les différents cas. Dans un premier temps, on obtient: - les nombres de positions d'impulsions Ne,Ns, - les fréquences d'échantillonnage Fe1Fs respectives, - et les durées de sous-trame Le,Ls qu'utilisent respectivement les codeurs E et S (étape 21). Ainsi, on comprendra déjà que les étapes d'adaptation et de récupération des nombres de positions d'impulsions Ne, Ns peuvent avantageusement être interverties ou simplement menées simultanément. Au test 22, on compare les fréquences d'échantillonnage. Si les fréquences sont égales, on compare, au test 23, les durées de sous-trame. Sinon, on adapte les fréquences d'échantillonnage, à l'étape 32, selon un procédé décrit ci-après. A l'issue du test 23, si les durées de sous- trame sont égales, on compare, au test 24, les nombres de positions d'impulsions Ne et Ns utilisés respectivement par le premier et le second format de codage. Sinon, on adapte les durées de sous-trame à l'étape 33 selon un procédé qui sera aussi décrit ci-après. On comprendra que les étapes 22, 23, 32 et 33 définissent ensemble l'étape a) d'adaptation des paramètres de codage citée ci-avant. On indique que les étapes 22 et 32 (adaptation des fréquences d'échantillonnage), d'une part, et les étapes 23 et 33 (adaptation des durées de sous-trame), d'autre part, peuvent être inversées. On décrit d'abord ci-après le cas où les fréquences d'échantillonnage sont égales et les durées de sous-trames sont égales. Ce cas est le plus favorable. Cependant, il faut distinguer encore le cas où le premier format utilise plus d'impulsions que le second (Ne a Ne), et le cas contraire (Ne * Cas Ne a N8 de la figure 2 Le principe est le suivant. En considérant les deux codeurs E et S, leurs répertoires utilisent respectivement Ne et NS impulsions à chaque sous-trame. Le codeur E a calculé les positions de ses Ne impulsions sur la soustrame se. On note ci-après ei (ou, indistinctement, Pe) ces positions. L'ensemble restreint PS des positions privilégiées pour les impulsions du répertoire du codeur S est alors constitué de Ne positions ei et de leurs voisinages. Ps = où vâ et vg z 0 sont les tailles des voisinages droit et gauche de l'impulsion i. Les valeurs de vd et vg, choisies à l'étape 27 de la figure 2, sont plus ou moins grandes selon la complexité et la qualité désirées. Ces tailles peuvent être fixées arbitrairement au début du traitement, ou être choisies à chaque sous- trame se. A l'étape 29 de la figure 2, l'ensemble Ps contient alors chaque position e; ainsi que ses vd voisins de droite et ses vg voisins de gauche. Pour chacune des NS impulsions du répertoire du codeur S, il faut ensuite définir les positions que cette impulsion a le droit de prendre parmi celles proposées par Ps. Pour cela, on introduira des règles présidant à la construction du répertoire de S. On suppose que les NS impulsions de S appartiennent à des sous-ensembles pré-définis de positions, un nombre donné d'impulsions partageant un même sous-ensemble de positions autorisées. Par exemple, les 10 impulsions du mode 12,2 bit/s du codeur 3GPP NB-AMR sont réparties 2 par 2 dans 5 sous-ensembles différents, comme le montre la table 3 donnée ci-avant. On note N'9 le nombre de sous-ensembles de positions différents (N'ss NS dans cet exemple puisque N'5=5), et Tj (pour j=1 à N', ) les sous-ensembles de positions définissant le répertoire de S. A partir de l'ensemble PS, les N'5 sous-ensembles Si issus de l'intersection de PS avec l'un des ensembles T3 sont constitués, à l'étape 30 de la figure 2, selon la relation: Si= Ps n Ti Les voisinages vâ et vg doivent être d'une taille suffisante pour qu'aucune intersection ne soit vide. On doit permettre ainsi un réajustement des tailles de voisinage, si nécessaire, en fonction du jeu d'impulsions de départ. C'est l'objet du test 34 de la figure 2, avec une augmentation de la taille des voisinages (étape 35) et retour vers la définition de l'union Ps des groupes formés à l'étape c) {étape 29 sur la figure 2) si l'une des intersections est vide. Au contraire, si aucune intersection Si n'est vide, c'est le sous- répertoire constitué par ces intersections Si qui est envoyé au codeur S (étape de fin 31). Avantageusement, l'invention exploite la structure des répertoires. Par exemple, si le répertoire du codeur S est de type ACELP, ce sont les intersections des positions des pistes avec Ps qui sont calculées. Si le répertoire du codeur E est aussi de type ACELP, la procédure d'extraction des voisinages exploite aussi la structure en pistes et les deux étapes d'extraction des voisinages et composition des sous-ensembles restreints de positions, sont judicieusement associées. En particulier, il est intéressant que l'algorithme d'extraction des voisinages prenne en compte la composition des combinaisons d'impulsions selon les contraintes du deuxième ensemble. Comme on le verra plus loin, des algorithmes d'extraction de voisinages sont élaborés pour faciliter la composition des combinaisons d'impulsions du deuxième ensemble. Un exemple d'un tel algorithme est illustré par l'un des modes de réalisation donnés plus loin (ACELP à 2 impulsions vers ACELP à 4 impulsions). Le nombre de combinaisons de positions possibles est ainsi restreint et la taille du sous-ensemble du répertoire du codeur S est généralement très inférieure à celle du répertoire original, ce qui réduit grandement la complexité de l'avant-dernière étape du transcodage. On précise ici que le nombre de combinaisons de positions d'impulsions définit la taille du sous-ensemble précité. On précise en outre que c'est le nombre de positions d'impulsions que l'on diminue au sens de l'invention, ce qui entraîne une diminution du nombre de combinaisons de positions d'impulsions et permet alors d'obtenir un sous- répertoire de taille restreinte. L'étape référencée 46 sur la figure 3 consiste alors à lancer la recherche du meilleur jeu de positions pour les NS impulsions dans ce sous-répertoire de taille restreinte. Le critère de sélection est similaire à celui du processus de codage. Pour réduire davantage la complexité, on peut accélérer l'exploration de ce sous-répertoire en utilisant des techniques de focalisation connues décrites ci-avant. La figure 3 résume les étapes de l'invention pour le cas où le codeur E utilise au moins autant d'impulsions que le codeur S. On indique toutefois que, comme on l'a déjà vu en référence à la figure 2, si le nombre de positions NS au second format (le format de S) est supérieur au nombre de positions Ne au premier format (le format de E), le traitement prévu ne se distingue que par quelques variantes avantageuses qui seront décrites plus loin. En bref, ces étapes de la figures 3 se résument comme suit. Après une étape a) éventuelle d'adaptation des paramètres de codage (si nécessaire et représentée à cet effet par des traits pointillés sur la figure 3 dans le bloc 41) : récupération des positions ei des impulsions du codeur E, et préférentiellement d'un nombre Ne de positions (étape 42 correspondant à l'étape b) précitée), extraction des voisinages et formation des groupes de voisinages selon la relation: NQ-1 v â U U {ei + k} i=0 k=-v' (étape 43 correspondant à l'étape c) précitée) - composition des sous-ensembles restreints de positions {Si= PsnTi} formant la sélection de l'étape 20 d) précitée et correspondant à l'étape 44 représentée sur la figure 3, et et transmission de cette sélection au codeur S (étape 45 correspondant à l'étape e) précitée). On indique qu'après cette étape 45, le codeur S choisit 25 ensuite un jeu de positions dans le répertoire restreint obtenu à l'étape 44. Le procédé se poursuit donc par une étape 46 de recherche dans ce sousrépertoire reçu par le codeur S d'un jeu de positions optimal (opt(Si)) comportant le second nombre NS de positions, comme indiqué ci-avant. Cette étape 46 de recherche du jeu de positions optimal est mise en oeuvre préférentiellement par une recherche focalisée pour accélérer l'exploration du sous-répertoire. Le traitement se poursuit naturellement par le codage qu'effectue ensuite le second codeur S. On décrit maintenant les traitements prévus pour le cas où le nombre d'impulsions Ne utilisées par le premier format de codage est inférieur au nombre d'impulsions NS utilisées par le second format de codage. * cas Ne * cas Ne Ainsi, on teste à l'étape 25 de la figure 2 si les nombres Ne et NS sont proches (avec Ne>Ns) et, dans l'affirmative, on procède comme décrit ciavant pour le choix des positions d'impulsions à l'étape 26. Bien entendu, dans les deux cas Ne On décrit maintenant les traitements prévus à l'étape d'adaptation a) lorsque les paramètres de codage des premier et second formats ne sont pas les mêmes, en particulier en terme de fréquences d'échantillonnage et de durées de sous-trame. On distingue alors les cas ci-après. * Durées de sous-trame égales mais fréquences d'échantillonnages différentes Cette situation correspond au cas "n" pour le test 22 et "o" pour le test 23 de la figure 2. L'adaptation a) porte 30 alors sur l'étape 32 de la figure 2. On ne peut plus appliquer directement ici le traitement précédent car les deux formats n'ont pas le même découpage du temps. En effet, du fait des fréquences d'échantillonnage différentes, les deux trames ne comportent pas le même nombre d'échantillons sur une même durée. Plutôt que de déterminer les positions des impulsions du format du codeur S sans tenir compte de celles du format du codeur E, comme le ferait un tandem, on propose ici deux traitements selon deux modes de réalisation distincts. Ces traitements sont de faible complexité, en établissant une correspondance entre les positions des deux formats qui permet alors de se ramener ensuite au traitement décrit ci-avant (comme si les fréquences d'échantillonnage étaient égales). Le traitement du premier mode de réalisation utilise une quantification directe de l'échelle temporelle du premier format par celle du deuxième format. Cette opération de quantification qui peut être tabulée ou calculée par une formule, permet ainsi de trouver, pour chaque position d'une sous-trame du premier format, son équivalent dans une sous-trame du second format et réciproquement. Par exemple, la correspondance entre les positions pe et ps dans les soustrames des deux formats peut être définie par la formule suivante: ps = F5 * pe + 0,5, Os pe Selon les caractéristiques de l'unité de traitement, cette correspondance pourra utiliser la formule ci-avant ou avantageusement être tabulée pour les Le valeurs. On peut aussi choisir une solution intermédiaire en ne tabulant que les le premières valeurs (le = de, d étant le plus grand commun diviseur de Le et Le), les positions restantes se déduisant alors aisément. Il faut noter qu'on peut aussi faire correspondre plusieurs positions de la sous-trame de S à une position d'une sous-trame de E. Par exemple, en retenant les positions immédiatement inférieure et immédiatement supérieure a -1 * pe. Fe A partir de l'ensemble des positions ps correspondant aux positions pe, on applique le traitement général décrit plus haut (extraction des voisinages, composition des combinaisons d'impulsions, sélection de la combinaison optimale). On retrouvera ce cas de durées de sous-trame égales mais de fréquences d'échantillonnage différentes sur les tables 5a à 5d ci-après, en référence à un exemple de réalisation où le codeur E est de type 3GPP NBAMR et le codeur S est de type WB-AMR. Le codeur NB-AMR a une sous-trame de 40 échantillons pour une fréquence d'échantillonnage de 8 kHz. Le codeur WB-AMR utilise, quant à lui, 64 échantillons par sous-trame à 12,8 kHz. Dans les deux cas, la sous-trame a une durée de 5 ms. La table 5a donne la correspondance des positions dans une sous-trame du NB-AMR vers une sous-trame du WB-AMR, et la table 5b la correspondance inverse. Les tables de correspondance restreinte sont données dans les tables 5c et 5d. NB-AMR 21j WB-AMR 24_26 40_42 Table 5a: Table de correspondance temporelle du NB-AMR vers WB-AMR WB- AMR 0 1 2 3 4 5 6 7 8 9 1011 1213141516171819 20 2122 23 24 25 26 27 28 29 30 31 NB- AMR 0 1 1 2 3 3 4 4 5 6 6 7 8 8 9 9 10111112131314141516161718181919 WB- AMR 32 33 34 35 36 37 38 39 40 4142 43 44 45 46 47 48 49 50 5152 53 54 55 56 57 5 8 59 60 6162 63 NB- AMR 2021212223232424252626272828292930313132333334343536363738383939 Table 5b: Table de correspondance temporelle du WB-AMR vers NB-AMR Positions NB-AMR 0 1 2 3 4 Positions WB-AMR 0 2 3 5 6 Table 5c: Table de correspondance temporelle restreinte du NB-AMR vers WB-AMR Positions WB- AMR 0 1 2 3 4 5 6 7 Positions NB-AMR 0 1 1 2 2 3 4 4 Table 5d: Table de correspondance temporelle restreinte du WB-AMR vers NB-AMR En bref, en se référent à la figure 2a, on prévoit les étapes ci-après: al) de quantification directe d'échelle temporelle de la première fréquence vers la seconde fréquence (étape 51 de la figure 2a), a2) et de détermination, en fonction de cette quantification, de chaque position d'impulsion dans une sous-trame au second format de codage caractérisé par la seconde fréquence d'échantillonnage, à partir d'une position d'impulsion dans une sous-trame au premier format de codage caractérisé par la première fréquence d'échantillonnage (étape 52 de la figure 2a). En termes généraux, l'étape al) de quantification s'effectue par calcul et/ou tabulation à partir d'une fonction qui, à une position pe d'impulsion dans une sous- trame au premier format, fait correspondre une position ps d'impulsion dans une sous-trame au second format, et cette fonction se présente sensiblement comme une combinaison linéaire faisant intervenir un coefficient multiplicatif correspondant au rapport de la seconde fréquence d'échantillonnage sur la première fréquence d'échantillonnage. Par ailleurs, pour passer inversement d'une position d'impulsion dans une sous-trame au second format ps à une position d'impulsion dans une soustrame au premier format pe, on applique bien entendu une fonction inverse de cette combinaison linéaire appliquée à une position d'impulsion dans une sous-trame au second format ps. On comprendra que le procédé de transcodage est complètement réversible et s'adapte aussi bien dans un sens de transcodage (E->S) que dans l'autre (S->E). Dans un second mode de réalisation de l'adaptation des fréquences d'échantillonnage, on utilise un principe classique de changement de fréquence d'échantillonnage. On part de la sous-trame contenant les impulsions trouvées par le premier format. On sur-échantillonne à lafréquence égale au plus petit commun multiple des deux fréquences d'échantillonnage Fe et Fs. Puis, après filtrage passe-bas, on sous-échantillonne pour revenir à la fréquence d'échantillonnage du second format, c'est-à-dire Fs. On obtient une sous-trame à la fréquence FS contenant les impulsions de E filtrées. Là encore, on peut tabuler le résultat des opérations de sur-échantillonnage/filtrage passe-bas/sous-échantillonnage pour chaque position possible d'une sous-trame de E. Ce traitement peut aussi s'effectuer par calcul "en ligne". Comme dans le premier mode de réalisation de l'adaptation des fréquences d'échantillonnage, on pourra associer une seule ou plusieurs positions de S à une position de E, comme expliqué ci-après, et appliquer le traitement général au sens de l'invention décrit ci-avant. Comme illustré dans la variante représentée sur la figure 2b, on prévoit les étapes ci-après: a'1) sur-échantillonner une sous-trame au premier format de codage caractérisé par la première fréquence 30 d'échantillonnage, à une fréquence Fpcm égale au plus petit commun multiple des première et seconde fréquences d'échantillonnage (étape 53 de la figure 2b), et a'2) appliquer à la sous-trame sur-échantillonnée un filtrage passe-bas (étape 54 de la figure 2b), suivi d'un souséchantillonnage, pour atteindre une fréquence d'échantillonnage correspondant à la seconde fréquence d'échantillonnage (étape 55 de la figure 2b). Le procédé se poursuit par l'obtention, préférentiellement par seuillage, d'un nombre de positions éventuellement variable, ces positions étant adaptées des impulsions de E (étape 56) comme dans le premier mode de réalisation ci-avant. * Fréquences d'échantillonnages égales mais durées de 15 sous-trame différentes On décrit maintenant le traitement prévu dans le cas où les fréquences d'échantillonnage sont égales mais les durées de sous-trame sont différentes. Cette situation correspond au cas "n" pour le test 23 mais "o" pour le test 22 de la figure 2. L'adaptation a) porte alors sur l'étape 33 de la figure 2. Comme dans le cas ci-avant, on ne peut pas appliquer directement l'étape d'extraction des voisinages telle quelle. Il faut d'abord rendre compatibles les deux sous-trames. Ici, les sous-trames sont différentes par leurs tailles. Face à cette incompatibilité, plutôt que de calculer les positions des impulsions comme le fait le tandem, une réalisation préférée propose une solution à faible complexité permettant de déterminer un répertoire restreint de combinaisons de positions pour les impulsions du second format à partir des positions des impulsions du premier format. Cependant, la sous-trame de S et celle de E n'étant pas de même taille, il n'est pas possible d'établir une correspondance temporelle directe entre une sous-trame de S et une sous-trame de E. Comme le montre la figure 4 (dans laquelle les sous trames de E et S sont désignées respectivement par STE et STE), les frontières des sous-trames des deux formats ne sont pas alignées et au cours du temps ces sous- trames se décalent l'une par rapport à l'autre. Dans un mode de réalisation préféré, on propose de découper l'excitation de E en pseudo-sous-trames de la taille de celles de S et au rythme de S. Sur la figure 5, on a représenté les pseudo sous-trames notées STE'. En pratique, cela revient aussi à effectuer une correspondance temporelle entre les positions dans les deux formats en prenant en compte la différence de taille des sous-trames pour aligner les positions relativement à une origine commune à E et S. La détermination de cette origine commune est décrite en détail plus loin. Une position 13 e (respectivement p s) du premier format (respectivement du second format) par rapport à cette origine coïncide avec la position pe (respectivement ps) de la sous-trame ie (respectivement js) de E (respectivement S) relativement à cette sous-trame. On a ainsi. p e=pe+ieLe et p s=ps+jsLs avec 05 'Je Ls, il peut arriver qu'une sous-trame de S ne contienne aucune impulsion. Dans l'exemple de la figure 6, les impulsions de la sous-trame STEO sont représentées par des traits verticaux. Le format de E peut très bien concentrer les impulsions de STEO en fin de sous-trame si bien que la pseudo sous-trame STE'O ne contient alors aucune impulsion. Toutes les impulsions placées par E se retrouvent dans STE'l lors du découpage. Dans ce cas, une recherche focalisée classique est préférentiellement appliquée à la pseudo sous-trame STE'O. On décrit maintenant des réalisations préférées pour la détermination d'une origine temporelle 0 commune aux deux formats. Cette référence commune constitue la position (numéro 0) à partir de laquelle sont numérotées les positions des impulsions dans les sous-trames suivantes. Cette position 0 peut être définie de différentes manières, dépendant du système exploitant le procédé de transcodage au sens de la présente invention. Par exemple, pour un module de transcodage inclus dans un équipement d'un système de transmission, il sera naturel de prendre pour origine la première position de la première trame reçue après la mise en route de l'équipement. Toutefois, l'inconvénient de ce choix est que les positions prennent des valeurs de plus en grandes et il peut devenir nécessaire de les limiter. Pour cela, il suffit de remettre à jour la position de l'origine commune à chaque fois que cela est possible. Ainsi, si les longueurs respectives Le et Lis des sous-trames de E et S, sont constantes au cours du temps, la position de l'origine commune est remise à jour à chaque fois que les frontières des sous-trames de E et S sont alignées. Cela arrive périodiquement, la période (en échantillons) étant égale au plus petit commun multiple de Le et LS. n=1 2867648 On peut aussi envisager le cas où Le et/ou Ls ne sont pas constantes dans le temps. Il n'est plus possible de trouver un multiple commun aux deux longueurs de sous- trame, notées à présent Le (n) et Ls (n) , n représentant le numéro de la sous-trame. Dans ce cas, il convient de sommer au fur et à mesure les valeurs Le(n) et Ls(n) et comparer à chaque sous-trame les deux sommes obtenues: k k, Te (k) _ Le (n) et IS (k') _ Ls (n) A chaque fois que l'on a Te(k) = Ts(k'), l'origine commune est remise à jour (et prise à la position kxLe ou encore à k' xLs) . Quant aux deux sommes Te et Ts, elles sont préférentiellement réinitialisées. En bref et plus généralement, en appelant première (respectivement seconde) durée de sous-trame la durée de sous-trame du premier (respectivement second) format de codage, les étapes d'adaptation effectuées lorsque les durées de sous-trame sont différentes sont résumées sur la figure 7 et sont préférentiellement les suivantes: a20) définition d'une origine commune O aux sous-trames des premier et second formats (étape 70), a21) découpage des sous-trames successives du premier format de codage caractérisé par une première durée de sous-trame, pour former des pseudo-sous-trames de durées L'e correspondantes à la seconde durée de sous-trame (étape 71), a22) mise à jour de l'origine commune O (étape 79), a23) et détermination de correspondance entre les positions d'impulsions dans les pseudo-sous-trames p'e et dans les sous-trames au second format (étape 80). Préférentiellement, pour déterminer l'origine commune O, on discrimine au test 72 de la figure 7 les cas suivants: - les première et seconde durées sont fixes dans le temps (sortie "o" du test 72), et - les première et seconde durées varient dans le temps (sortie "n" du test 72). Dans le premier cas, la position temporelle de l'origine commune est remise périodiquement à jour (étape 74) à chaque instant où des frontières de sous-trames respectives de première durée St(Le) et de seconde durée St(Ls) sont alignées dans le temps (test 73 effectué sur ces frontières). Dans le second cas, préférentiellement: a221) on effectue successivement les deux sommations 10 respectives des sous-trames au premier format Te(k) et des sous-trames au second format Ts(k') (étape 76), a222) on détecte une occurrence d'une égalité entre lesdites deux sommes, définissant un instant de remise à jour de ladite origine commune (test 77), a223) on réinitialise les deux sommes précitées (étape 78), après ladite occurrence, pour une future détection d'une prochaine origine commune. Maintenant, dans le cas où les durées de sous-trame et les fréquences d'échantillonnage sont différentes, il suffit de combiner judicieusement les algorithmes de correspondance entre les positions de E et S décrites dans les deux cas précédents. * EXEMPLES DE REALISATION On décrit maintenant trois exemples de réalisation du transcodage au sens de l'invention. Ces exemples de réalisation décrivent la mise en oeuvre des traitements prévus dans les cas présentés ci-avant dans des codeurs de parole à analyse par synthèse normalisés. Les deux premiers modes illustrent le cas favorable où les fréquences d'échantillonnage, comme les durées des sous-trames, sont identiques. Le dernier exemple illustre le cas où les durées des soustrames sont différentes. * Exemple de réalisation n 1 Le premier exemple de réalisation est appliqué au transcodage intelligent entre le modèle MP-MLQ du G.723.1 à 6, 3 kbit/s et le modèle ACELP à 4 impulsions du G.723.1 à 5,3 kbit/s. Un transcodage intelligent du débit haut vers le débit bas du G.723.1 met en présence un modèle MP-MLQ à 6 et 5 impulsions avec un modèle ACELP à 4 impulsions. L'exemple de réalisation présenté ici permet de déterminer les positions des 4 impulsions de l'ACELP à partir des positions des impulsions du MP-MLQ. On rappelle ci-après le fonctionnement du codeur G.723.1. Le codeur multi-débits UIT-T G.723.1 et ses répertoires multiimpulsionnels ont été présentés ci-avant. Il est précisé seulement qu'une trame du G.723.1 comporte 240 échantillons à 8 kHz, et qu'elle est divisée en quatre sous-trames de 60 échantillons. La même restriction est imposée aux positions des impulsions de tout vecteur-code de chacun des trois dictionnaires multi-impulsionnels. Ces positions doivent toutes avoir la même parité (toutes paires ou toutes impaires). La sous-trame de 60(+4) positions est ainsi découpée en deux grilles de 32 positions. La grille paire comporte les positions numérotées [0, 2, 4,..., 58, (60,62)]. La grille impaire comporte les positions [1, 3, 5,..., 59, (61, 63) ] . Pour chaque débit, l'exploration du répertoire, même non exhaustive, reste complexe comme indiqué précédemment. On décrit maintenant la sélection d'un sous-ensemble du répertoire ACELP du G.723.1 à 5,3 kbit/s à partir d'un élément d'un répertoire MP-MLQ du G. 723.1 à 6,3 kbit/s. On cherche à modéliser le signal d'innovation d'une sous-trame par un élément du répertoire ACELP du G.723.1 à 5,3 kbit/s connaissant l'élément du répertoire MP-MLQ du G.723.1 à 6,3 kbit/s déterminé lors d'un premier codage. On dispose donc des Ne positions (Ne=5 ou 6) des impulsions choisies par le codeur G.723.1 à 6,3 kbit/s. Par exemple, on peut supposer que les positions extraites du train binaire du codeur G.723.1 à 6,3kbit/s pour une sous-trame dont l'excitation est modélisée par Ne=S impulsions sont: ep = 0; e1 = 8; e2=28; e3=38; e4=46; On rappelle qu'aucune adaptation des fréquences d'échantillonnage ou des durées de sous-trames n'est à faire ici. Après cette étape de récupération des positions ei, une étape suivante consiste alors à extraire directement les voisinages droits et gauches de ces 5 impulsions. Les voisinages droits et gauches sont pris ici égaux à 2. L'ensemble Ps des positions sélectionnées est: P5 = {- 2,-1,0,1,2} {6,7,8, 9,10}U {26,27,28,29,30}U {36,37,38,39,40}U {44,45,46,47,48} La troisième étape consiste à composer l'ensemble restreint des positions possibles pour chaque impulsion 2867648 48 (ici une piste) du répertoire ACELP du G.723.1 à 5,3 kbit/s en prenant NS=4 intersections de Ps avec les 4 ensembles des positions des pistes paires (respectivement impaires) autorisées par ce dernier répertoire (comme représenté dans la table 1). Pour la parité paire: So = 41{0,8,16,É.É,56}; S, = Psn{2,10,18,..,58}; SZ = Pn{4,12,20,.ÉÉ,52,(60)}; S3 = P n {6 14,22,. É É,54, (62)}; d' où : So = {0,8,40,48}; S, = {2,10,26,}, S2 = {28,36,44}; S3 = {6,30,38,46}, Pour la parité impaire: S, =Psn{1,9,,.. ,57}; S, =PSn{3,11,...,59}; S2 =P,n{5, 13,ÉÉÉ,53,(61)}; S3 = P n {7 15,...,55, (63)}; d' où : So = {1,9}; S, = {27}; S2 = {29,37,45}; S3 = {7,39,47}, La combinaison de ces positions sélectionnées constitue le nouveau répertoire restreint dans lequel s'effectuera la recherche. Pour cette dernière étape, la procédure de sélection du jeu de positions optimales s'appuie sur le critère CELP comme le fait le G.723.1 au mode 5,3 kbit/s. L'exploration peut être exhaustive ou, de préférence, focalisée. Le nombre de combinaisons de positions dans le répertoire restreint est égal à 180 (=4*3*3*4+2*1*3*3) au lieu des 8192 (=2*8*8*8*8) combinaisons de positions du répertoire ACELP du G.723. 1 à 5,3 kbit/s. On indique qu'on peut restreindre davantage le nombre de combinaisons en ne considérant que la parité choisie au mode 6,3 kbit/s (dans l'exemple cité la parité paire). Dans ce cas, le nombre de combinaisons du répertoire restreint est égal à 144. Il peut arriver (selon les taille des voisinages considérées) que pour une des quatre impulsions, l'ensemble Ps ne contienne aucune position pour une piste du modèle ACELP (cas où l'un des ensemble Si est vide). Ainsi, pour des voisinages de taille 2, quand les positions des Ne impulsions sont toutes sur la même piste, Ps ne contient que des positions de cette piste et des pistes adjacentes. Dans ce cas, selon le compromis qualité/complexité désiré, il est possible soit de remplacer l'ensemble Si par Ti (ce qui revient à ne pas restreindre l'ensemble des positions de cette piste), soit d'augmenter le voisinage droit (ou gauche) des impulsions. Par exemple, si toutes les impulsions du code à 6,3 kbit/s sont sur la piste 2, avec des voisinages droit et gauche égaux à 2, la piste 0 n'aura pas de positions quelle que soit la parité. Il suffit alors d'augmenter de 2 la taille du voisinage gauche et/ou droit pour attribuer des positions à cette piste O. Pour illustrer cette réalisation, on part de l'exemple 25 suivant: eo = 4; e, =12; e2 = 20; e3 = 36; e4 = 52; L'ensemble Ps des positions sélectionnées est: p s = {2,3,4,5,6 {10, 11,12,13,14 {18,19,20,21,22U {34,35,36,37,38:U {50,51,52,53,54{ En supposant que l'on veuille garder la même parité, la 30 répartition initiale de ces positions pour les 4 impulsions est: So=o; S1={2, 10, 18, 34, 50}; S2={4, 12, 20, 36, 52}; S3={6, 14, 22, 38, 54}; En augmentant de 2 le voisinage gauche des impulsions, on obtient: So={0, 8, 16, 32, 48}; S1={2, 10, 18, 34, 50}; S2={4, 12, 20, 36, 52}; S3={6, 14, 22, 38, 54} (avec donc S0 0) . * Exemple de réalisation n 2 Le second exemple suivant illustre l'application de l'invention aux transcodages intelligents entre des modèles ACELP de même longueur. En particulier, ce second exemple de réalisation est appliqué au transcodage intelligent entre l'ACELP à 4 impulsions du G.729 à 8 kbit/s et l'ACELP à 2 impulsions du G.729 à 6,4 bits/s. Un transcodage intelligent entre les modes 6,4 kbit/s et 8 kbit/s du codeur G.729, met en présence un répertoire ACELP à deux impulsions et un second à quatre impulsions. L'exemple présenté ici permet de déterminer les positions de 4 impulsions (8kbit/s) à partir des positions de 2 impulsions (6,4 kbit/s) et réciproquement. On rappelle succinctement le fonctionnement du codeur UIT-T G.729. Ce codeur peut fonctionner à trois débits: 6,4; 8 et 11,8 kbit/s. On considère donc ici les deux premiers débits. Une trame de G.729 comporte 80 échantillons à 8 kHz. Cette trame est divisée en deux sous-trames de 40 échantillons. Pour chaque sous-trame, le G.729 modélise le signal d'innovation par des impulsions selon le modèle ACELP. Il en utilise quatre au mode 8 kbit/s et deux pour le mode 6,4 kbit/s. Les tables 2 et 4 ci-avant donnent les positions que peuvent prendre les impulsions pour ces deux débits. A 6,4 kbit/s, une recherche exhaustive de toutes les combinaisons (512) des positions est effectuée. A 8 kbit/s, une recherche focalisée est préférentiellement utilisée. Le traitement général au sens de l'invention est encore utilisé ici. Toutefois et de façon avantageuse, on tire partie ici de la structure ACELP commune aux deux répertoires. La mise en correspondance des jeux de positions exploite ainsi une découpe de la sous-trame de 40 échantillons en 5 pistes de 8 positions, donnés dans la table 6 ci-après. Pistes Positions po 0, 5, 10, 15, 20, 25, 30, 35 p1 1, 6, 11, 16, 21, 26, 31, 36 P2 2, 7, 12, 17, 22, 27, 32, 37 P3 3, 8, 13, 18, 23, 28, 33, 38 P4 4, 9, 14, 19, 24, 29, 34, 39 Table 6: Répartition des positions en cinq pistes dans les dictionnaires ACELP du G.729 Dans les deux répertoires, les positions des impulsions se partagent ces pistes, comme le montre la table 7 ci-après. 20 Toutes les impulsions sont caractérisées par leur piste et leur rang dans cette piste. Le mode à 8 kbit/s place une impulsion sur chacune des trois premières pistes et la dernière impulsion sur l'une des deux dernières pistes. Le mode à 6,4 kbit/s quant à lui place sa première impulsion sur les pistes P1 ou P3, et sa deuxième impulsion sur les pistes Po, P1, P2 ou P4. Mode Impulsions Pistes 6,4 kbit/s 10 Pi, P3 il Po, Pi, P21 P4 io Po 8 kbit/s 13 P1 i2 P2 13 P3. P4 Table 7: Répartition des impulsions des répertoires ACELP 5 du G.729 à 8 et 6,4 kbit/s dans les cinq pistes. L'entrelacement des pistes (structure ISSP) est exploité dans cette réalisation pour faciliter l'extraction des voisinages et la composition des sous-ensembles restreints de positions. Ainsi, pour se déplacer d'une piste à une autre, il suffit de se décaler d'une unité vers la droite ou vers la gauche. Par exemple, si l'on se place à la tième position de la piste 2 (de position absolue 22), un décalage de 1 vers la droite (+1) fait passer à la 5ième position de la piste 3 (de position absolue 23) et un décalage vers la gauche (-1) fait passer à la 5ième position de la piste 1 (de position absolue 21). Plus généralement, un décalage de d d'une position se traduit ici par les effets suivants. Au niveau des pistes Pi: voisinage droit: P,. P;+d)=5 voisinage gauche: P P,a)=5 Au niveau du rang m dans la piste: * voisinage droit: si (i+d) _0: mi mi sinon: mi = mi -1 On décrit maintenant la sélection d'un sous-ensemble du répertoire ACELP à 4 impulsions du codeur G.729 à 8 kbit/s à partir d'un élément d'un répertoire ACELP à 2 impulsions du codeur G.729 à 6,4 kbit/s. On considère une sous-trame de G.729 au mode 6,4 kbit/s. Deux impulsions sont placées par ce codeur mais il faut déterminer les positions des autres impulsions que doit placer le G.729 à 8 kbit/s. Pour restreindre radicalement la complexité, une seule position par impulsion est choisie et une seule combinaison de positions est retenue. Avantageusement, l'étape de sélection est donc immédiate. On choisit deux des quatre impulsions du G.729 à 8 kbit/s aux mêmes positions que celles du mode à 6,4 kbit/s, puis on place les deux impulsions restantes à proximité immédiate des deux premières. Comme indiqué ci-avant, la structure en pistes est exploitée. A la première étape de récupération des deux positions par décodage de l'indice binaire (sur 9 bits) des 2 positions, les deux pistes correspondantes sont aussi déterminées. A partir de ces deux pistes (éventuellement identiques), les trois dernières étapes d'extraction des voisinages, de composition des sous- ensembles restreints et de sélection d'une combinaison d'impulsions sont alors judicieusement associées. On distingue plusieurs cas selon les pistes Pi (i=0 à 4) sur lesquelles se trouvent les deux impulsions du mode à 6,4 kbit/s. On note ek les positions des impulsions du mode à 6,4 kbit/s et sk celle du mode à 8 kbit/s. La table 8 ci-après présente pour chacun des cas les positions choisies. Les colonnes notées "Pi+d=Pi" précisent la loi de voisinage au niveau des pistes et aboutissant à la piste P. On rappelle qu'au niveau des pistes Pi: * pour le voisinage droit: P P(,d≥5 * pour le voisinage gauche: P P(,_,0.5 Sp si S2 S3 eo et Position P;+ d=Po Position P;+d=P1 Position P;+d=P2 Position P;+d=P3 (Piste) (Piste) /P4 p' eo=e, p' e, 1 P1 1 El PI e1+1 pl+l e1+2 pl+2 eo 1 p 1 Eo P1 e,+1 p1+1 e,+2 p1+2 eo 7t1 p1 Po e1 Po E0 P1 eo+l pi+l el- l( p -1 P1 P2 eo-1 Pr l Eo P1 e, P2 e1+1 p2+1 p1 P4 e1+12' p4(2)+ 1 Eo P1 eo+l p1+1 e1 P4 P3 Po e, Po E1+1 po+l eo-1 P3 1 eo P3 P3 P1 e1- 1 P 1 E1 P1 eo-1 P3 l eo P3 P3 P2 eo+23 p3r3+2 E1-1 PZ 1 e, P2 eo P3 P3 P4 e1+14 p4(4)+1 Eo-2 p3 2 eo-1 P3 1 e1 P4 Table 8: Choix du répertoire restreint du G.729 à 8 kit/s à partir des deux impulsions du répertoire ACELP du G.729 à 6,4 kbit/s. Préférentiellement, on cherche donc à équilibrer la répartition des 4 positions par rapport aux deux positions de départ, mais on indique qu'un autre choix peut être effectué. Quatre cas (signalés par un exposant entre parenthèses dans la table 8) peuvent poser toutefois des problèmes d'effets de bord: Cas (1) : si et = 0, alors on ne peut pas prendre s3=e11. 5 On choisira s3= eo+2. Cas (2) : si et = 39, alors on ne peut pas prendre so=el+l. On choisit so= eo -1. Cas (3) : si et = 38, alors on ne peut pas prendre so=eo+2. On choisit so= et -2. Cas (4) : si et = 39, alors on ne peut pas prendre so=el+l. On choisit so= eo -3. Pour diminuer encore la complexité, le signe de chaque impulsion sk peut être pris égal à celui de l'impulsion ej de laquelle elle est déduite. On décrit maintenant la sélection d'un sous-ensemble du répertoire ACELP à 2 impulsions du G.729 à 6,4 kbit/s à partir d'un élément d'un répertoire ACELP à 4 impulsions du G.729 à 8 kbit/s. Pour une sous-trame de G.729 au mode à 8 kbit/s, la première étape est la récupération des positions des quatre impulsions générées par le mode 8 kbit/s. Le décodage de l'indice binaire (sur 13 bits) des 4 positions permet d'obtenir leur rang dans leur piste respective pour les trois premières positions (des pistes 0 à 2) et la piste (3 ou 4) de la quatrième impulsion ainsi que son rang dans cette piste. Chaque position ei (05 i Comme déjà mentionné, l'extraction des voisinages et la composition des sous-ensembles restreints sont combinées et exploitent avantageusement la structure ISSP commune aux deux répertoires. En exploitant la propriété de positions voisines induite par l'entrelacement des pistes, on construit les cinq intersections T'j de l'ensemble Ps des voisinages des 4 positions avec les 5 pistes Pj. T' j=PSnPj Ainsi, un voisin droit (respectivement gauche) de +1 (respectivement -1) de l'impulsion (p,m) appartient à T'p+1 si p 0) , sinon (cas p=4) à T'o à condition que m 0). La restriction sur le voisin droit pour une position de la quatrième impulsion appartenant à la quatrième piste (respectivement gauche pour une position de la première piste) permet de s'assurer que la position voisine n'est pas en dehors de la sous-trame. Ainsi, en utilisant la notation modulo 5 (-5), un voisin droit (respectivement gauche) de +1 (respectivement -1) de l'impulsion (p,m) appartient à T'(p+1j=5 (respectivement à T'(p_1)=5). On rappelle qu'il faut tenir compte des effets de bord. En généralisant à une taille d de voisinage, un voisin droit de +d (respectivement gauche de -d) de l'impulsion (p,m) appartient à T' (p+d)=5 (respectivement à T' (p_d)=5) . Le rang du voisin à d est égal à m si p+d54 (ou p-dz0), sinon le rang m est incrémenté pour un voisin droit et décrémenté pour un voisin gauche. La prise en compte des effets de bord revient donc à s'assurer que: m 4 et que m>0 si p-d A partir de cette répartition des voisins dans les 5 pistes, il est simple de déterminer les sous-ensembles restreints So et S1 des positions des deux impulsions: So= T' IUT' 3 et S1= T' ouT' 1UT' 2UT' 4 La quatrième et dernière étape consiste à effectuer la recherche du couple optimal dans les deux sous-ensembles obtenus. L'algorithme de recherche (comme celui normalisé exploitant la structure en pistes) et le rangement par piste des impulsions simplifient là-encore l'algorithme de recherche. En pratique, il est donc inutile de constituer explicitement les sous- ensembles restreints Se et S1 car les ensembles T'j peuvent être utilisés seuls. Dans l'exemple ci-après, le mode à 8 kbit/s du G.729 a 15 placé ses quatre impulsions aux positions suivantes: eo= 5; e1= 21; e2= 22; e3= 34; Ces 4 positions sont caractérisées par les 4 couples (pi,mi) _ (0,1), (1, 4), (2,4) (4,6) Si l'on prend un voisinage fixe égal à 1, on construit les 20 5 intersections T'j comme suit: eo: (0, 1) donne: (4,0) à gauche et (1, 1) à droite el: (1,4) donne: (0,4) à gauche et (2,4) à droite e2: (2,4) donne: (1,4) à gauche et (3,4) à droite e3: (4,6) donne: (3, 6) à gauche et (0,7) à droite On a donc: T ' o = { (0,1), (0,4), (0,7) }; T'1={ (1,4), (1,1)) }; T'2={ (2,4) }; T'3={ (3,4), (3,6)1; T'4 = { (4,6), (4,0)1 En revenant à la notation par positions: T'o={5,20,35}; T'1={21, 6} ; T'2={22}; T'3={23,33}; T'4 = {34,4} A la dernière étape, un algorithme semblable à celui du G.729 à 6,4 kbit/s effectue la recherche du meilleur couple d'impulsions. Cet algorithme est ici bien moins complexe car le nombre de combinaisons de positions à explorer est très restreint. Dans l'exemple, il n'y a que 4 (= Cardinal (T' 1) + Cardinal (T' 3)) fois 8 (= Cardinal (T' 0) + Cardinal (T' 1) + Cardinal (T' 2) + Cardinal(T'4)) combinaisons à tester, soit 32 combinaisons au lieu de 512. Pour un voisinage de taille 1, moins de 8% des combinaisons des positions est à explorer en moyenne sans dépasser 10% (50 combinaisons). Pour un voisinage de taille 2, moins de 17% des combinaisons des positions est à explorer en moyenne et au plus 25% des combinaisons est à explorer. Pour un voisinage de taille 2, la complexité du traitement proposé dans l'invention (en cumulant le coût de la recherche dans le répertoire restreint au coût de l'extraction des voisinages associé à la composition des intersections) représente moins de 30% d'une recherche exhaustive pour une qualité équivalente. * Exemple de réalisation n 3 Le dernier exemple illustre les passages entre le modèle ACELP du G.729 à 8 kbit/s et le modèle MP-MLQ du G.723.1 à 6,3 kbit/s. Un transcodage intelligent des impulsions entre le G.723.1 30 (mode 6,3 kbit/s) et le G.729 (mode 8 kbit/s) comporte deux difficultés importantes.En premier lieu, la taille des trames est différente (40 échantillons pour le G.729 contre 60 échantillons pour le G.723.1). La seconde difficulté est liée à la structure différente des dictionnaires, du type ACELP pour le G.729 et du type MP- MLQ pour le G.723.1. L'exemple de réalisation présenté ici montre comment l'invention lève ces deux difficultés afin de transcoder à moindre coût les impulsions tout en préservant la qualité du transcodage. On effectue d'abord une correspondance temporelle entre les positions dans les deux formats en prenant en compte la différence de taille des sous-trames pour aligner les positions relativement à une origine commune à E et S. Les longueurs des sous-trames du G.729 et du G.723.1 ayant comme plus petit commun multiple 120, la correspondance temporelle est effectuée par blocs de 120 échantillons soit deux sous-trames de G.723.1 pour trois sous-trames de G.729, comme le montre l'exemple de la figure 4b. En variante, on peut préférer travailler sur des blocs de trames complètes. Dans ce cas, on choisit des blocs de 240 échantillons soit une trame de G.723.1 (4 sous-trames) pour trois trames de G.729 (6 sous- trames). On décrit maintenant la sélection d'un sous-ensemble du répertoire MP-MLQ du G.723.1 à 6,3 kbit/s à partir d'éléments du répertoire ACELP à 4 impulsions du G.729 à 8 kbit/s. La première étape consiste à récupérer les positions des impulsions par blocs de 3 sous-trames (d'index ie, 0sies2) du G.729. On note pe(ie) une position de la sous-trame ie de ce bloc. Avant d'extraire les voisinages, on convertit ces 12 positions pe(ie) en 12 positions notées ps(js), réparties dans deux sous-trames (d'index js, 05js51) de G.723.1. On peut utiliser la relation générale ci-avant (faisant intervenir le modulo de la longueur de sous-trame) pour réaliser l'adaptation des durées de sous-trames. On préfère toutefois ici distinguer simplement trois cas selon l'indice ie: si ie =0, alors js =0 et ps= pe si ie =2, alors js =1 et ps= pe+20 si ie =1, alors si pe Les 4 positions récupérées dans la sous-trame STEO du bloc sont directement attribuées à la sous-trame STSO avec la même position, celles de la sous-trame STE2 du bloc sont directement attribuées à la sous-trame STS1 avec un incrément de +20 de position, les positions de la sous-trame STE1 inférieurs à 20 sont attribuées à la sous-trame STSO avec un incrément de +40, les autres étant attribuées à la sous-trame STS1 avec un décrément de -20. On extrait ensuite les voisinages de ces 12 positions. Il faut noter que l'on peut autoriser les voisinages droits (respectivement gauches) des positions de la sous-trame STSO (respectivement STS1) à sortir de leur sous-trame, ces positions voisines étant alors dans la sous-trame STS1 (respectivement STSO). L'étape de correspondance temporelle et d'extraction de voisinage peuvent être inversées. Dans ce cas, on peut autoriser les voisinages droits (respectivement gauches) des positions de la sous-trame STEO (respectivement STE2) à sortir de leur sous-trame, ces positions voisines étant alors dans la sous-trame STE1. De même, les voisinages droits (respectivement gauches) des positions dans STE1, peuvent conduire à des positions voisines dans STE2 (respectivement STEO). Une fois l'ensemble des positions restreintes pour chaque sous-trame STS constitué, la dernière étape consiste à explorer pour chaque sous-trame STS son répertoire restreint ainsi constitué pour sélectionner les.1\71, (6 ou 5) impulsions de même parité. Cette procédure peut être dérivée de l'algorithme normalisé ou s'inspirer d'autres procédures de focalisation. Pour illustrer cet exemple de réalisation, on considère trois sous-trames du G.729 qui vont permettre de construire les sous-répertoires de deux sous-trames du G.723.1. En supposant que le G.729 donne les positions suivantes: STEO: eoo= 5; eo1= 1; eo2= 32; eo3= 39; STE1: e1o= 15; e11= 31; e12= 22; e13= 4; STE2: ego= 0; e21= 1; e22= 37; e23= 24, après application de l'étape ci-avant de correspondance temporelle, l'attribution de ces 12 positions aux sous-trames STSO et STS1 est: STSO: soo= 5; sol= 1; sot= 32; soi= 39; (sok=eok) STSO: s' Io= 55; s 13= 44; (s' ok=elk+40, si elk 20) STS1: s20= 20; s21= 21; S22= 57; S23= 44; (sok= e2k+2 0) On a donc les jeux de positions {1, 5, 32, 39, 44, 55} 5 pour la sous-trame STSO et {2, 11, 20, 21, 44, 57} pour la sous-trame STS1. Il faut à présent en extraire les voisinages. En prenant par exemple un voisinage fixé à 1, on obtient: Pso = {0,1,2 {4,5,6}U {31,32,33}U {38,39, 40}U {43,44,45}U {54,55,56} Psi _ {1,2,3}U {10,11,12}U {20,21,22}U {21,22, 23}U {43,44,45}1J {56,57,58} Le MP-MLQ n'impose aucune contrainte aux impulsions, mis à part leur parité. Sur une sous-trame, elles doivent être toutes de la même parité. Il faut donc ici scinder Pso et Psi en deux sous ensembles, avec: - Pso: {0,2,4,6,32,40,44,54,56} et {1,5,31,33,39,43,45,55} - Psi: {2,10,12,20,22,44,56} et {1,3,11,21,23,43,45,57} Ce sous-répertoire est enfin transmis à l'algorithme de sélection qui détermine les Np meilleures positions au sens du critère CELP pour les sous-trames STSO et STS1 du G.723.1. On restreint ainsi considérablement le nombre de combinaisons testées. En effet, par exemple dans la sous- trame STSO, il reste 9 positions paires et 8 positions impaires au lieu de 30 et 30. On s'assure toutefois de certaines précautions dans les cas où les positions choisies par le G.729 sont telles que l'extraction des voisinages donne un nombre N de positions possibles inférieur au nombre de positions du G.723.1 (N On décrit maintenant le traitement inverse consistant à sélectionner un sous-ensemble du répertoire ACELP à 4 impulsions du G.729 à 8 kbit/s à partir d'éléments d'un répertoire MP-MLQ du G.723.1 à 6,3 kbit/s. Globalement, le traitement est similaire. Deux sous-trames de G.723.1 correspondent à 3 trames de G.729. Ici aussi, on extrait les positions du G.723.1 que l'on traduit dans l'échelle de temps du G.729. On pourra avantageusement traduire ces positions sous la forme "piste - rang dans la piste" afin de profiter comme précédemment de la structure ACELP pour extraire les voisinages et rechercher les positions optimales. Les mêmes aménagements que précédemment sont prévus pour prévenir les cas où l'extraction des voisinages donnerait des positions en nombre insuffisant (ici moins de 4 positions). Ainsi, la présente invention permet de déterminer à moindre coût les positions d'un jeu d'impulsions à partir d'un premier jeu d'impulsions, les deux jeux d'impulsions appartenant à deux répertoires multiimpulsionnels. Ces deux répertoires peuvent se distinguer par leur taille, la longueur et le nombre d'impulsions de leurs mots de codes ainsi que par les règles régissant les positions et/ou amplitudes des impulsions. On privilégie les voisinages des positions des impulsions du (ou des) jeu(x) choisi(s) dans le premier répertoire pour déterminer celles d'un jeu dans le deuxième répertoire. L'invention permet en plus d'exploiter la structure des répertoires de départ et/ou d'arrivée pour réduire davantage la complexité. A travers le premier exemple ci-avant présentant le passage d'un modèle MP-MLQ à un modèle ACELP, on comprendra que l'invention s'applique aisément à deux modèles multi- impulsionnels ayant des contraintes structurelles différentes. A travers le second exemple de réalisation présentant le passage entre deux modèles possédant un nombre d'impulsions différent mais basés sur la même structure ACELP, on comprendra que l'invention permet avantageusement l'exploitation de la structure des répertoires pour réduire la complexité de transcodage. A travers le troisième exemple présentant le passage entre un modèle MP-MLQ et un modèle ACELP, on comprendra que l'invention peut s'appliquer même pour des codeurs de longueurs de sous- trames ou de fréquences d'échantillonnage différentes. L'invention permet d'ajuster le compromis qualité/complexité et, en particulier, de réduire fortement la complexité de calcul pour une dégradation minime par rapport à une recherche classique d'un modèle multi-impulsionnel. Revendications 1. Procédé de transcodage entre un premier codeur/décodeur en compression et au moins un second codeur/décodeur en compression, lesdits premier et second codeurs/décodeurs étant de type impulsionnel et utilisant des dictionnaires multi-impulsionnels dans lesquels chaque impulsion comporte une position repérée par un indice associé, caractérisé en ce qu'il comporte les étapes suivantes: a) le cas échéant, adaptation de paramètres de codage entre lesdits premier et second codeurs/décodeurs, b) obtention, à partir du premier codeur/décodeur, d'un nombre choisi (Ne) de positions d'impulsions et d'indices de positions (ei) respectivement associés, c) pour chaque position d'impulsion courante d'indice donné, formation d'un groupe de positions d'impulsions comportant au moins la position d'impulsion courante et des positions d'impulsions d'indices associés immédiatement inférieurs et immédiatement supérieurs à l'indice donné, d) sélection, en fonction de positions d'impulsions (T3) admises par le second codeur/décodeur, d'une partie au moins des positions d'impulsions dans un ensemble (Ps) constitué par une union desdits groupes formés à l'étape c), et e) transmission des positions d'impulsions ainsi sélectionnées au second codeur/décodeur, pour un codage/décodage à partir desdites positions transmises, ladite sélection de l'étape d) faisant alors intervenir un nombre de positions d'impulsions possibles inférieur au nombre total de positions d'impulsions possibles du dictionnaire du second codeur/décodeur. 2. Procédé selon la revendication 1, dans lequel le 5 premier codeur/décodeur (E) utilise, dans un premier format de codage, un premier nombre d'impulsions, caractérisé en ce que ledit nombre (Ne) choisi à l'étape b) correspond à ce premier nombre de positions d'impulsions. 3. Procédé selon la revendication 2, dans lequel: - le premier codeur/décodeur (E) utilise, dans un premier format de codage, un premier nombre (Ne) de positions d'impulsions, - le second codeur/décodeur (S) utilise, dans un second format de codage, un second nombre (Ns) de positions d'impulsions, caractérisé en ce qu'il comporte en outre une étape consistant à discriminer au moins les cas où : - le premier nombre (Ne) est supérieur ou égal au second nombre (NJ, - le premier nombre (Ne) est inférieur au second nombre (Ns) 4. Procédé selon la revendication 3, dans lequel le premier nombre (Ne) est supérieur ou égal au second nombre (Ns) (Ne>_Ns) , caractérisé en ce que chaque groupe formé à l'étape c) comporte des positions d'impulsions voisines de droite (vid) et des positions d'impulsions voisines de gauche (v1g) de ladite position d'impulsion courante d'indice donné, et en ce que les nombres respectifs de positions d'impulsions voisines de gauche et de droite sont choisis en fonction d'un compromis en complexité et en qualité de transcodage. 5. Procédé selon la revendication 4, caractérisé en ce qu'à l'étape d), on construit un sous-répertoire de combinaisons de positions d'impulsions résultant des intersections (Si) de: - l'ensemble (Pc) constitué par une union desdits groupes formés à l'étape c), et - des positions d'impulsions (Ti) admises par le second codeur/décodeur, de sorte que ledit sous-répertoire soit de taille 15 inférieure au nombre de combinaisons de positions d'impulsions (Ti) admises par le second codeur/décodeur. 6. Procédé selon la revendication 5, caractérisé en ce que, après l'étape e), on recherche dans ledit sous- répertoire un jeu de positions optimal comportant ledit second nombre (Ns) de positions, au niveau du second codeur (S). 7. Procédé selon la revendication 6, caractérisé en ce que l'étape de recherche du jeu de positions optimal est mise en oeuvre par une recherche focalisée pour accélérer l'exploration dudit sous-répertoire. 8. Procédé selon l'une des revendications précédentes, 30 dans lequel ledit premier codeur/décodeur est agencé pour délivrer une succession de trames codées, caractérisé en ce que les nombres respectifs de positions d'impulsions dans les groupes formés à l'étape c) sont successivement choisis d'une trame à l'autre. 9. Procédé selon la revendication 3, dans lequel le premier nombre (Ne) est inférieur au second nombre (Ne) (Ne 10. Procédé selon la revendication 3, caractérisé en ce que l'on discrimine en outre le cas où le second nombre Ns est compris entre une et deux fois le premier nombre Ne (Ne 11. Procédé selon l'une des revendications précédentes, dans lequel ledit premier codeur/décodeur est agencé pour opérer avec une première fréquence d'échantillonnage donnée et à partir d'une première durée donnée de sous-trame, caractérisé en ce que lesdits paramètres de codage pour lesquels est réalisée ladite adaptation de l'étape a) comportent au moins une durée de sous-trame et une fréquence d'échantillonnage, tandis que le second codeur/décodeur opère avec une seconde fréquence d'échantillonnage et une seconde durée de sous-trame, et en ce que, à l'étape a), on discrimine les quatre cas suivants: - les première et seconde durées sont égales et les première et seconde fréquences sont égales, - les première et seconde durées sont égales et les première et seconde fréquences sont différentes, - les première et seconde durées sont différentes et les première et seconde fréquences sont égales, - les première et seconde durées sont différentes et les première et seconde fréquences sont différentes. 12. Procédé selon la revendication 11, dans lequel les première et seconde durées sont égales et les première et seconde fréquences d'échantillonnage sont différentes, caractérisé en ce qu'il comporte des étapes: al) de quantification directe d'échelle temporelle de la première fréquence vers la seconde fréquence, a2) et de détermination, en fonction de ladite quantification, de chaque position d'impulsion dans une sous- trame au second format de codage caractérisé par la seconde fréquence d'échantillonnage, à partir d'une position d'impulsion dans une soustrame au premier format de codage caractérisé par la première fréquence d'échantillonnage. 13. Procédé selon la revendication 12, caractérisé en ce que l'étape a1) de quantification s'effectue par calcul et/ou tabulation à partir d'une fonction qui, à une position d'impulsion dans une sous-trame au premier format (pe), fait correspondre une position d'impulsion dans une sous-trame au second format (ps), ladite fonction se présentant sensiblement comme une combinaison linéaire faisant intervenir un coefficient multiplicatif correspondant au rapport de la seconde fréquence d'échantillonnage sur la première fréquence d'échantillonnage. 14. Procédé selon la revendication 13, caractérisé en ce que, pour passer inversement d'une position d'impulsion dans une sous-trame au second format (Ps) à une position d'impulsion dans une sous-trame au premier format (p,), on applique une fonction inverse de la ladite combinaison linéaire appliquée à une position d'impulsion dans une sous-trame au second format (ps). 15. Procédé selon la revendication il, dans lequel les première et seconde durées sont égales et les première et seconde fréquences d'échantillonnage sont différentes, caractérisé en ce qu'il comporte les étapes suivantes: a'l) sur-échantillonner une sous-trame au premier format de codage caractérisé par la première fréquence d'échantillonnage, à une fréquence égale au plus petit commun multiple des première et seconde fréquences d'échantillonnage, et a'2) appliquer à la sous-trame sur-échantillonnée un filtrage passe-bas, suivi d'un sous-échantillonnage, pour atteindre une fréquence d'échantillonnage correspondant à la seconde fréquence d'échantillonnage. 16. Procédé selon la revendication 15, caractérisé en ce que le procédé se poursuit par l'obtention, par seuillage, d'un nombre de positions, le cas échéant, variable. 17. Procédé selon la revendication 12, caractérisé en ce qu'il comporte en outre une étape de mise en correspondance, pour chaque position (Pe) d'une impulsion d'une sous-trame au premier format de codage caractérisé par la première fréquence d'échantillonnage, d'un groupe de positions d'impulsions (ps) dans une sous-trame au second format de codage caractérisé par la seconde fréquence d'échantillonnage, chaque groupe comportant un nombre de positions qui est fonction du rapport entre la seconde et la première fréquence d'échantillonnage (Fs/Fe) 18. Procédé selon la revendication 11, dans lequel les première et seconde durées de sous-trames sont différentes, caractérisé en ce qu'il comporte les étapes: a20) de définition d'une origine commune (0) aux sous-trames des premier et second formats, a21) de découpage des sous- trames successives du premier format de codage caractérisé par une première durée de sous-trame, pour former des pseudo-sous-trames de durées correspondantes à la durée de sous-trame du second format, a22) de mise à jour de ladite origine commune, a23) et d'une détermination de correspondance entre les positions d'impulsions dans les pseudo-sous- trames et dans les sous-trames au second format. 19. Procédé selon la revendication 18, caractérisé en ce que l'on discrimine en outre les cas suivants: - les première et seconde durées sont fixes dans le temps, et - les première et seconde durées varient dans le temps. 20. Procédé selon la revendication 19, dans lequel les première et seconde durées sont fixes dans le temps, caractérisé en ce que la position temporelle de ladite origine commune est remise périodiquement à jour à chaque instant où des frontières de sous-trames respectives de première et de seconde durée sont alignées dans le temps. 21. Procédé selon la revendication 19, dans lequel les première et seconde durées varient dans le temps, caractérisé en ce que: a221) on effectue successivement deux sommations respectives des durées des sous- trames au premier format 25 et des durées des sous-trames au second format, a222) on détecte une occurrence d'une égalité entre lesdites deux sommes, définissant un instant de remise à jour de ladite origine commune, a223) on réinitialise lesdites deux sommes, après ladite 30 occurrence, pour une future détection d'une prochaine origine commune. 22. Produit programme d'ordinateur destiné à être stocké dans une mémoire d'une unité de traitement, notamment d'un ordinateur ou d'un terminal mobile, ou sur un support mémoire amovible et destiné à coopérer avec un lecteur de l'unité de traitement, caractérisé en ce qu'il comporte des instructions pour la mise en uvre du procédé de transcodage selon l'une des revendications précédentes. 23. Dispositif de transcodage entre un premier codeur/décodeur en compression et au moins un second codeur/décodeur en compression, lesdits premier et second codeurs/décodeurs étant de type impulsionnel et utilisant des dictionnaires multi-impulsionnels dans lesquels chaque impulsion comporte une position repérée par un indice associé, caractérisé en ce qu'il comporte une mémoire propre à stocker des instructions d'un produit programme d'ordinateur selon la revendication 22.