Note : Les descriptions sont présentées dans la langue officielle dans laquelle elles ont été soumises.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
Allocation de bits dans un codage/décodage d'amélioration d'un
codage/décodage hiérarchique de signaux audionumériques
La présente invention concerne un procédé d'allocation binaire pour un
traitement de données sonores.
Ce traitement est adapté notamment à la transmission et/ou au stockage de
signaux numériques tels que des signaux audiofréquences (parole, musique, ou
autres).
L'invention s'applique plus particulièrement au codage hiérarchique (ou
codage "scalable") qui génère un flux binaire dit hiérarchique car il
comprend un
débit coeur et une ou plusieurs couche(s) d'amélioration (le codage normalisé
selon
G.722 à 48, 56 et 64 kbit/s étant typiquement scalable en débit, tandis que
les codecs
UIT-T G.729.1 et MPEG-4 CELP sont scalables à la fois en débit et en largeur
de
bande).
On détaille ci-après le codage hiérarchique, ayant la capacité de fournir des
débits variés, en répartissant les informations relatives à un signal audio à
coder dans
des sous-ensembles hiérarchisés, de telle sorte que ces informations puissent
être
utilisées par ordre d'importance sur le plan de la qualité de rendu audio. Le
critère
pris en compte pour déterminer l'ordre est un critère d'optimisation (ou
plutôt de
moindre dégradation) de la qualité du signal audio codé. Le codage
hiérarchique est
particulièrement adapté à la transmission sur des réseaux hétérogènes ou
présentant
des débits disponibles variables au cours du temps, ou encore à la
transmission à
destination de terminaux présentant des capacités variables.
Le concept de base du codage audio hiérarchique (ou "scalable") peut être
décrit comme suit.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-2-
Le flux binaire comprend une couche de base et une ou plusieurs couches
d'amélioration. La couche de base est générée par un codec à débit fixe,
qualifié de
codec coeur , garantissant la qualité minimale du codage. Cette couche doit
être
reçue par le décodeur pour maintenir un niveau de qualité acceptable. Les
couches
d'amélioration servent à améliorer la qualité. Il peut arriver toutefois
qu'elles ne
soient pas toutes reçues par le décodeur.
L'intérêt principal du codage hiérarchique est qu'il permet alors une
adaptation du débit par simple troncature du flux binaire . Le nombre de
couches
(c'est-à-dire le nombre de troncatures possibles du flux binaire) définit la
granularité
du codage. On parle de codage à granularité forte si le flux binaire
comprend peu
de couches (de l'ordre de 2 à 4) et de codage à granularité fine permet par
exemple un pas de l'ordre de 1 à 2 kbitls.
On décrit plus particulièrement ci-après les techniques de codage scalable en
débit et en largeur de bande, avec un codeur coeur de type CELP, en bande
téléphonique et une ou plusieurs couche(s) d'amélioration en bande élargie. Un
exemple de tels systèmes est donné dans la norme UIT-T G.729.1 de 8 à 32
kbit/s à
granularité fine. L'algorithme de codage/décodage G.729.1 est résumé ci-après.
Rappels sur le codeur G.729.1
Le codeur G.729.1 est une extension du codeur UIT-T G.729. Il s'agit d'un
codeur hiérarchique à coeur G.729, modifié, produisant un signal dont la bande
va de
la bande étroite (50-4000 Hz) à la bande élargie (50-7000 Hz) à un débit de 8
à 32
kbit/s pour les services conversationnels. Ce codec est compatible avec les
équipements de voix sur IP existants qui utilisent le codec G.729.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-3-
Le codeur G.729.1 est schématisé sur la figure 1. Le signal d'entrée en bande
élargies,, , échantillonné à 16 kHz, est d'abord décomposé en deux sous-bandes
par
filtrage QMF (pour "Quadrature Mirror Filter"). La bande basse (0-4000 Hz) est
obtenue par le filtrage passe-bas LP (bloc 100) et décimation (bloc 101), et
la bande
haute (4000-8000 Hz) par filtrage passe-haut HP (bloc 102) et décimation (bloc
103).
Les filtres LP et HP sont de longueur 64.
La bande basse est prétraitée par un filtre passe-haut éliminant les
composantes en dessous de 50 Hz (bloc 104), pour obtenir le signal sLB , avant
codage
CELP en bande étroite (bloc 105) à 8 et 12 kbit/s. Ce filtrage passe-haut
tient compte
du fait que la bande utile est définie comme couvrant l'intervalle 50-7000 Hz.
Le
codage CELP en bande étroite est un codage CELP en cascade comprenant comme
premier étage un codage G.729 modifié sans filtre de prétraitement et comme
deuxième étage un dictionnaire CELP fixe supplémentaire.
La bande haute est d'abord prétraitée (bloc 106) pour compenser le repliement
dû au filtre passe-haut (bloc 102) combiné avec la décimation (bloc 103). La
bande
haute est ensuite filtrée par un filtre passe-bas (bloc 107) éliminant les
composantes
entre 3000 et 4000 Hz de la bande haute (c'est-à-dire les composantes entre
7000 et
8000 Hz dans le signal original) pour obtenir le signal sHB . Une extension de
bande
paramétrique (bloc 108) est ensuite réalisée.
Une particularité importante de l'encodeur G.729.1 selon la figure 1 est la
suivante. Le signal d'erreur d., de la bande basse est calculé (bloc 109) à
partir de la
sortie du codeur CELP (bloc 105) et un codage prédictif par transformée (de
type
TDAC pour Time Domain Aliasing Cancellation dans la norme G.729.1) est
réalisé au bloc 110. En référence à la figure 1, on voit en particulier que
l'encodage
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-4-
TDAC est appliqué à la fois au signal d'erreur sur la bande basse et au signal
filtré
sur la bande haute.
Des paramètres supplémentaires peuvent être transmis par le bloc 111 à un
décodeur homologue, ce bloc 111 réalisant un traitement dit FEC pour
Frame
Erasure Concealment , en vue de reconstituer d'éventuelles trames effacées.
Les différents flux binaires générés par les blocs de codage 105, 108, 110 et
111 sont enfin multiplexés et structurés en un train binaire hiérarchique dans
le bloc
de multiplexage 112. Le codage est réalisé par blocs d'échantillons (ou
trames) de 20
ms, soit 320 échantillons par trame.
Le codec G.729.1 a donc une architecture en trois étapes de codage comprenant
:
- le codage CELP en cascade,
- l'extension de bande paramétrique par le module 108, de type TDBWE (pour
Time Domain Bandwidth Extension ), et
- un codage prédictif par transformée TDAC, appliqué après une transformation
de
type MDCT (pour Modified Discrete Cosine Transform ou transformation
en cosinus discrète modifiée ).
* Rappels sur le décodeur G.729.1
Le décodeur G.729.1 est illustré sur la figure 2. Les bits décrivant chaque
trame de 20 ms sont démultiplexés dans le bloc 200.
Le flux binaire des couches à 8 et 12 kbit/s est utilisé par le décodeur CELP
(bloc 201) pour générer la synthèse en bande étroite (0-4000 Hz). La portion
du flux
binaire associée à la couche à 14 kbit/s est décodée par le module d'extension
de
bande (bloc 202). La portion du flux binaire associée aux débits supérieurs à
14
kbit/s est décodée par le module TDAC (bloc 203). Un traitement des pré-échos
et
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-5-
post-échos est réalisé par les blocs 204 et 207 ainsi qu'un enrichissement
(bloc 205)
et un post-traitement de la bande basse (bloc 206).
Le signal de sortie en bande élargies,,,,, échantillonné à 16 kHz, est obtenu
par
l'intermédiaire du banc de filtres QMF de synthèse (blocs 209, 210, 211, 212
et 213)
intégrant le repliement inverse (bloc 208).
La description de la couche de codage par transformée est détaillée ci-après.
Rappels sur le codeur par transformée TDAC dans le codeur G.729.1
Le codage par transformée de type TDAC dans le codeur G.729.1 est illustré
sur la figure 3.
Le filtre WLB (z) (bloc 300) est un filtre de pondération perceptuelle, avec
compensation de gain, appliqué au signal d'erreur en bande basse d LB . Des
transformées MDCT sont ensuite calculées (bloc 301 et 302) pour obtenir :
- le spectre MDCT DLB du signal de différence, filtré perceptuellement, et
- le spectre MDCT SHB du signal original de la bande haute.
Ces transformées MDCT (blocs 301 et 302) s'appliquent à 20 ms de signal
échantillonné à 8 kHz (160 coefficients). Le spectre Y(k) issu du bloc 303 de
fusion
comprend ainsi 2 x 160, soit 320 coefficients. Il est défini comme suit :
[Y(0) Y(1)... Y(319)] _ tDB (0) Dis (1) ... D;B (159) SHB (0) SHB (1) ... SHB
(159)]
Ce spectre est divisé en dix-huit sous-bandes, une sous-bande j étant affectée
d'un nombre de coefficients noté nb _ coef (j) . Le découpage en sous-bandes
est
spécifié dans le tableau 1 ci-après.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-6-
Ainsi, une sous-bande j comprend les coefficients Y(k) avec
sb - bound (j) <_ k < sb _ bound (j + 1).
A noter que les coefficients 280-319 correspondants à la bande de fréquence
7000 Hz - 8000 Hz ne sont pas codés; ils sont mis à zéro au décodeur, car la
bande
passante du codec est de 50-7000 Hz.
J sb_bound(j) nb_coef(j)
0 0 16
1 16 16
2 32 16
3 48 16
4 64 16
5 80 16
6 96 16
7 112 16
8 128 16
9 144 16
160 16
11 176 16
12 192 16
13 208 16
14 224 16
240 16
16 256 16
17 272 8
18 280 -
Tableau 1 : Limites et taille des sous-bandes en codage TDAC
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-7-
L'enveloppe spectrale {log _ rms(j)}j=o 17 est calculée dans le bloc 304
suivant la formule :
sb _ bound (j+1)-I
log_ rms(j) = 1 loge 1 Y(k)2 + Er,,,, j = 0,...,17
2 nb_coef (j) k=sb_bound(j)
oùErras=224
L'enveloppe spectrale est codée à débit variable dans le bloc 305. Ce bloc
305 produit des valeurs quantifiées, entières, notées rms _ index(j) (avec
j=0,...,17), obtenues par simple quantification scalaire :
rms - index(j) = round (2 = log_ rms(j) )
où la notation round désigne l'arrondi à l'entier le plus proche, et avec
la
contrainte :
-11 < rms - index(j) 5 +20
Cette valeur quantifiée rms _ index(j) est transmise au bloc d'allocation de
bits 306.
Le codage de l'enveloppe spectrale, lui-même, est effectué encore par le bloc
305,
séparément pour la bande basse (rms _ index(j) , avec j=0,...,9) et pour la
bande
haute (rms - index(j) , avec j=10,...,17). Dans chaque bande, deux types de
codage
peuvent être choisis selon un critère donné, et, plus précisément, les valeurs
rms _ index(j) :
- peuvent être codées par codage dit de Huffman différentiel ,
- ou peuvent être codées par codage binaire naturel.
Un bit (0 ou 1) est transmis au décodeur pour indiquer le mode de codage qui a
été choisi.
Le nombre de bits alloués à chaque sous-bande pour sa quantification est
déterminé au bloc 306 à partir de l'enveloppe spectrale quantifiée issue du
bloc 305.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-8-
L'allocation des bits effectuée minimise l'erreur quadratique tout en
respectant la
contrainte d'un nombre de bits entier alloué par sous-bande et d'un nombre de
bits
maximum à ne pas dépasser. Le contenu spectral des sous-bandes est ensuite
codé
par quantification vectorielle sphérique (bloc 307).
Les différents flux binaires générés par les blocs 305 et 307 sont ensuite
multiplexés
et structurés en un train binaire hiérarchique au bloc de multiplexage 308.
Rappel sur le décodeur par transformée dans le décodeur G.729.1
L'étape de décodage par transformée de type TDAC dans le décodeur G.729.1
est illustrée sur la figure 4.
De façon symétrique à l'encodeur (figure 3), l'enveloppe spectrale décodée
(bloc 401) permet de retrouver l'allocation des bits (bloc 402). Le décodage
d'enveloppe (bloc 401) reconstruit les valeurs quantifiées de l'enveloppe
spectrale
(rms - index(j) , pour j=0,...,17), à partir du train binaire généré par le
bloc 305
(multiplexé) et en déduit l'enveloppe décodée
rms - q(j) = 2%z rms_inde. j)
Le contenu spectral de chacune des sous-bandes est retrouvé par
quantification vectorielle sphérique inverse (bloc 403). Les sous-bandes non
transmises, faute de budget de bits suffisant, sont extrapolées (bloc 404)
à partir
de la transformée MDCT du signal en sortie du bloc d'extension de bande (bloc
202
de la figure 2).
Après mise à niveau de ce spectre (bloc 405) en fonction de l'enveloppe
spectrale
et post-traitement (bloc 406), le spectre MDCT est séparé en deux (bloc 407) :
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-9-
- avec 160 premiers coefficients correspondant au spectre D7B du signal de
différence décodé en bande basse, filtré perceptuellement,
- et 160 coefficients suivants correspondant au spectre SõB du signal original
décodé en bande haute.
Ces deux spectres sont transformés en des signaux temporels par transformée
MDCT inverse, notée IMDCT (blocs 408 et 410), et la pondération perceptuelle
inverse (filtre noté WLB (z)-`) est appliquée au signal 2 (bloc 409) résultant
de la
transformée inverse.
On décrit plus particulièrement ci-après l'allocation de bits aux sous-bandes
(bloc
306 de la figure 3 ou bloc 402 de la figure 4).
Les blocs 306 et 402 réalisent une opération identique à partir des valeurs
rms _ index(j) , j=0,...,17. On se contente donc par la suite de décrire
uniquement le
fonctionnement du bloc 306.
Le but de l'allocation binaire est de répartir entre chacune des sous-bandes
un
certain budget de bits (variable) noté nbits - VQ, avec :
nbits - VQ = 351 - nbits - rms , où nbits _ uns est le nombre de bits utilisés
par le
codage de l'enveloppe spectrale.
Le résultat de l'allocation est le nombre entier de bits, noté nbit(j) (avec
j=0,...,17), alloués à chacune des sous-bande avec comme contrainte globale :
,7
1 nbit(j) <_ nbits _VQ
i=o
Dans la norme G.729.1, les valeurs nbit(j) (j=0,...,17), sont de plus
contraintes par le fait que nbit(j) doit être choisi parmi un jeu de valeurs
réduit
spécifié au tableau 2 ci-après.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-10-
Taille de la Ensemble des valeurs autorisées nbit(j) (en nombre de bits)
sous-bande j
nb _ coef (j)
8 R 8 = {0, 7,10,12,13,14,15,161
16 R ,6 = 10, 9,14,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32}
Tableau 2: Valeurs possibles de nombre de bits alloués dans les sous-bandes
TDAC.
L'allocation dans la norme G.729.1 repose sur une "importance perceptuelle"
par sous-bande liée à l'énergie de la sous-bande, notée ip(j) (j=0..17),
définie comme
suit :
ip(j) loge(rms_q(j)2xnb_coef(j))+offset
où offset = -2.
Puisque les valeurs rms _q(j) = 2~ cette formule se simplifie sous
la forme :
1 rms_index(j) pour j=0,...,16
ip(j) _
(rms _ index(j) -1) pour j=17
A partir de l'importance perceptuelle de chaque sous-bande, l'allocation
nbit(j) est calculée comme suit :
nbit(j) = arg min jnb _ coef (j) x (ip(j) - 2~,j - r)
~R õr,-'f(j)
où ~~~~ est un paramètre optimisé par dichotomie pour satisfaire la contrainte
globale
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-11-
17
1 nbit(j) <_ nbits _VQ
en se rapprochant au mieux du seuil nbits_VQ.
De nouvelles perspectives d'extension en bande super élargie, (SWB pour
"Super Wide Band" en anglais), d'un codeur coeur de type G.729.1 tel que
décrit ci-
dessus ou de type G.718 sont actuellement en cours de discussion.
Une solution possible d'extension est décrite par exemple dans le document
des auteurs M. Tammi, L. Laaksonen, A. Ràmd, H. Toukomaa, intitulé "Scalable
Superwideband Extension for Wideband Coding", ICASSP, 2009.
Ce document décrit un système de codage/décodage en bande super-élargie
comportant un étage de codage coeur de type G.729.1 ou G.718 et un étage
d'extension de bande.
Le codage coeur effectue le codage de la bande de fréquence allant de 0 à 7
kHz alors que la bande d'extension effectue un codage dans la bande de
fréquence
allant de 7 à 14 kHz.
Une première couche de codage d'extension est basée sur un modèle
paramétrique s'appuyant sur deux modes de codage: un mode générique et un mode
sinusoïdal.
Le mode générique utilise une méthode de transposition dans le domaine
MDCT pour la génération artificielle des coefficients MDCT hautes fréquences
(7-14
kHz) à partir des fréquences basses (0-7 kHz). La bande de fréquence basse
permettant de coder une bande de fréquence haute est sélectionnée sur un
critère de
maximisation de la corrélation normalisée.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
- 12-
Le mode sinusoïdal est normalement utilisé pour les signaux particulièrement
harmoniques ou tonaux. Dans ce mode, les composantes les plus énergétiques
sont
sélectionnées. On transmet alors leurs positions, leurs amplitudes et leurs
signes.
Cette première couche est transmise avec un débit de 4 kbitls. Dans cet
article, une seconde couche d'amélioration de la bande 7-14 kHz est proposée,
elle
est basée sur le codage de sinusoïdes additionnelles permettant de s'approcher
au plus
du spectre MDCT du signal d'entrée. L'allocation de bits pour cette deuxième
couche
d'extension est fixée une fois pour toute.
Ainsi, le codage d'extension présentée dans ce document, n'améliore le signal
que dans la bande de fréquence d'extension allant de 7 à 14 kHz. La bande de
fréquence de 0 à 7 kHz du codage coeur n'est pas modifiée.
Il peut arriver cependant que certaines sous-bandes de fréquence de la bande
de fréquence coeur ne reçoivent pas suffisamment de débit.
Dans le cas où 0 bit est alloué à une sous-bande de codage coeur, le décodeur
utilise alors directement le signal synthétisé issu de la première couche de
codage
d'extension de bande TDBWE pour la bande 4-7kHz, pour combler les bandes non
allouées.
Il s'avère cependant que ces bandes peuvent parfois pénaliser la qualité
perçue lorsque le codeur est combiné à un module d'extension de bande 7-14kHz.
En effet, l'ajout des hautes fréquences augmente parfois la perception de
défauts issus des basses fréquences.
Ainsi, une extension de bande peut accentuer les défauts de codage de la
couche coeur.
Il existe donc un besoin d'amélioration globale de la qualité du signal codé
sur toute la bande de fréquence et pas seulement sur la bande de fréquence
d'extension.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
- 13-
La présente invention vient améliorer la situation.
Elle propose à cet effet, un procédé d'allocation binaire dans un
codage/décodage d'amélioration d'un codage/décodage hiérarchique de signaux
audionumériques comprenant un codage/décodage coeur dans une première bande de
fréquence et un codage/décodage d'extension de bande dans une deuxième bande
de
fréquence. Le procédé est tel que,
pour un nombre prédéterminé de bits à allouer pour le codage/décodage
d'amélioration, un premier nombre de bits (nbit enhanced(j)) est alloué à un
codage/décodage de correction du codage/décodage coeur dans la première bande
de
fréquence et selon un premier mode de codage/décodage et un deuxième nombre de
bits (nb_sin) est alloué à un codage/décodage d'amélioration du
codage/décodage
d'extension dans la deuxième bande de fréquence et selon un deuxième mode de
codage/décodage.
Ainsi, le procédé d'allocation selon un mode de réalisation de l'invention
permet tout en effectuant une amélioration du codage d'extension en bande de
fréquence d'un codage coeur, d'allouer des bits supplémentaires pour corriger
également le codage coeur dans la première bande de fréquence.
Ceci permet d'obtenir un bon compromis entre le codage d'amélioration du
codage coeur et celui de la bande d'extension. Ce compromis est obtenu de
manière
adaptative de façon à s'adapter au mieux au signal à coder et au format de
codage mis
en oeuvre.
La qualité globale du signal codé est ainsi améliorée.
Les différents modes particuliers de réalisation mentionnés ci-après peuvent
être ajoutés indépendamment ou en combinaison les uns avec les autres, aux
étapes
du procédé d'allocation défini ci-dessus.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-14-
Dans un mode de réalisation particulier, le procédé comporte les étapes
suivantes:
- obtention du nombre de bits alloué (nbit(j)) pour le codage/décodage coeur,
par sous-bande de fréquence de la première bande de fréquence;
- dans les sous-bandes de fréquence où le nombre de bits alloué pour le
codage/décodage coeur ne dépasse pas un seuil prédéterminé, allocation d'un
nombre
de bits par sous-bande, constituant le premier nombre de bits pour le
codage/décodage de correction du codage/décodage coeur;
- allocation du second nombre de bits alloué pour le codage/décodage
d'amélioration du codage/décodage d'extension, en fonction du premier nombre
de
bits alloué et du nombre prédéterminé de bits à allouer.
Ainsi, pour les sous-bandes de fréquence du codage coeur qui n'ont reçus que
très peu d'allocation de bits, l'allocation selon un mode de réalisation de
l'invention
permet d'allouer des bits supplémentaires pour ces sous-bandes de fréquence de
façon à améliorer le codage coeur dans ces sous-bandes et ceci tout en
garantissant
aussi une amélioration pour le codage d'extension.
Dans un mode particulier de réalisation, un nombre minimal de bits est fixé
par sous-bande de fréquence pour l'allocation du premier nombre de bits.
Ainsi, chaque sous-bande de fréquence a un débit associé garanti et donc un
codage garanti.
De façon simple, le seuil prédéterminé est fixé à 0.
Dans une variante de réalisation, le seuil prédéterminé est supérieur à 0 et
si
le premier nombre de bits alloué est supérieur au nombre de bits prédéterminé,
la
valeur du seuil est réduite.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
- 15-
L'allocation est plus adaptée au signal, une correction maximale du codage
coeur étant alors effectuée pour optimiser au mieux le débit alloué. Cette
optimisation
est faite au fur et à mesure en adaptant le seuil.
Dans un mode particulier de réalisation, le procédé comporte une étape de
réception d'information de tonalité d'un signal résiduel résultant d'une
différence
entre un signal issu d'une première couche d'extension de bande et le signal
original
et en cas de signal résiduel tonal, le second nombre de bits alloué pour le
codage/décodage d'amélioration de l'extension de bande est plus important que
le
premier nombre. Dans une variante, cette information de tonalité est calculée
directement sur le signal original, par exemple par une détection de pic
d'énergie
dans le spectre.
Ainsi la couche d'amélioration de l'extension de bande est adaptée au type de
signal qu'elle a à coder. Le codage selon le mode de codage d'extension étant
particulièrement adapté au signal de type tonal, la priorité est ainsi donnée
à ce mode
de codage.
Dans une application particulièrement adaptée de l'invention, le
codage/décodage coeur est de type codage/décodage normalisé G.729.1, le
premier
mode de codage/décodage étant un codage/décodage par transformée et le second
mode de codage/décodage étant un codage/décodage paramétrique.
La présente invention se rapporte également un module d'allocation binaire
dans un codeur/décodeur d'amélioration d'un codeur/décodeur hiérarchique de
signaux audionumériques comprenant un module de codage/décodage coeur dans une
première bande de fréquence et un module de codage/décodage d'extension de
bande
dans une deuxième bande de fréquence. Ce module d'allocation comporte:
- des moyens d'allocation d'un premier nombre de bits (nbit enhanced(j)) à
un module de codage/décodage de correction du codeur/décodeur coeur dans la
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-16-
première bande de fréquence et selon un premier mode de codage/décodage, pour
un
nombre prédéterminé de bits à allouer pour le codeur/décodeur d'amélioration,
et
- des moyens d'allocation d'un deuxième nombre de bits (nb_sin) à un
module de codage/décodage d'amélioration du codeur/décodeur d'extension dans
la
deuxième bande de fréquence et selon un deuxième mode de codage/décodage.
L'invention se rapporte à un codeur hiérarchique comprenant un module
d'allocation selon l'invention.
L'invention se rapporte également à un décodeur hiérarchique comprenant
un module d'allocation selon l'invention.
Enfin, l'invention se rapporte à un programme informatique comportant des
instructions de code pour la mise en oeuvre des étapes d'un procédé
d'allocation selon
l'invention, lorsqu'elles sont exécutées par un processeur.
D'autres caractéristiques et avantages de l'invention apparaîtront plus
clairement à la lecture de la description suivante, donnée uniquement à titre
d'exemple non limitatif, et faite en référence aux dessins annexés, sur
lesquels:
- la figure 1 illustre la structure d'un codeur de type G.729.1 décrit
précédemment;
- la figure 2 illustre la structure d'un décodeur de type G.729.1 décrit
précédemment;
- la figure 3 illustre la structure d'un codeur TDAC inclus dans le codeur de
type G.729.1 et décrit précédemment:
- la figure 4 illustre la structure d'un décodeur TDAC inclus dans un
décodeur de type G.729.1 et tel que décrit précédemment;
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
- 17-
- la figure 5 illustre la structure d'un codeur G.729.1 étendu en bande de
fréquence dans lequel l'invention peut être mis en oeuvre;
- la figure 6 illustre la structure d'un décodeur G.729.1 étendu en bande de
fréquence dans lequel l'invention peut être mis en oeuvre;
- la figure 7 illustre un codeur d'amélioration comportant un module
d'allocation de bits selon l'invention mettant en oeuvre un procédé
d'allocation selon
un mode de réalisation de l'invention;
- la figure 8 illustre un exemple de réalisation matérielle d'un module
d'allocation selon l'invention;
On décrit maintenant une application possible de l'invention à une extension
de
l'encodeur G.729.1, en particulier en bande super-élargie.
En référence à la figure 5, une extension en bande super-élargie d'un codeur
coeur de type G.729.1 incluant l'invention selon un mode de réalisation, est
maintenant décrit.
Un tel codeur tel que représenté consiste en une extension des fréquences
codées par le module 515, la bande de fréquence utilisée passant de [50Hz-
7KHz] à
[50Hz-14kHz] et en une amélioration de la couche de base du G.729.1 par le
module
de codage TDAC (bloc 510) et tel que décrit ultérieurement en référence à la
figure
7.
Le codeur tel que représenté en figure 5, comporte les mêmes modules que le
codage coeur G.729.1 représenté en figure 1 et un module supplémentaire
d'extension
de bande 515 qui fournit un signal d'extension au module de multiplexage 512.
Ce module de codage d'extension 515 fonctionne dans la bande de fréquence
allant de 7 à 14 kHz, dite deuxième bande de fréquence par rapport à la
première
bande de fréquence allant de 0 à 7 kHz du codage coeur.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
- 18-
Cette extension de bande de fréquence est calculée sur le signal original
pleine bande SswB alors que le signal d'entrée du codeur coeur est obtenu par
décimation (bloc 516) et filtrage passe-bas (bloc 517). A la sortie de ces
blocs, le
signal d'entrée en bande élargie SwB est obtenu.
Le module 515 comporte une première couche de codage d'extension basée
sur un modèle paramétrique s'appuyant sur deux modes de codage, un mode
générique et un mode sinusoïdal, selon que le signal original SWB est tonal ou
non
tonal comme décrit dans le document de M. Tammi, L. Laaksonen, A. Ràmd, H.
Toukomaa, intitulé "Scalable Superwideband Extension for Wideband Coding",
ICASSP, 2009.
Il comporte également une couche de codage d'amélioration de cette première
couche de codage par un codage en mode sinusoïdal et dont l'allocation de bits
s'effectue selon un procédé d'allocation de bits tel que décrit en référence à
la figure
7.
Pour cela, le module d'extension 515 reçoit des informations du codeur
TDAC 510, notamment, le nombre de bits alloués dans les sous-bandes de
fréquence
du codage coeur.
Dans un mode de réalisation possible, le module d'allocation tel que décrit
ultérieurement en référence à la figure 7, est intégré au module d'extension
515.
Dans un autre mode de réalisation, ce module est intégré au module TDAC
510. Dans encore un autre mode de réalisation, ce module est indépendant des
deux
modules 510 et 515 et communique les résultats d'allocation de bits aux deux
modules respectifs.
Ainsi selon l'invention, un module d'allocation de bits alloue un premier
nombre de bits à un codage de correction du codage coeur dans la première
bande de
fréquence et selon un premier mode de codage, dans le cas présent, un codage
par
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-19-
transformée. Cette allocation s'effectue selon un nombre prédéterminé de bits
à
allouer pour le codage d'amélioration.
Le module alloue un deuxième nombre de bits à un codage d'amélioration
du codage d'extension dans la deuxième bande de fréquence et selon un deuxième
mode de codage, ici le mode paramétrique sinusoïdal.
Lorsque les modèles du codage coeur et de l'extension de bande sont
différents, l'allocation de débit entre ces deux modèles peut s'avérer
difficile. En
effet, on aura généralement un modèle de codage de forme d'onde pour le coeur,
par
exemple un codeur par transformée qui tente de coder au mieux le signal
original.
Pour l'extension de bande, on utilise plus généralement des modèles
paramétriques
qui ont pour but de représenter perceptuellement les fréquences hautes sans
pour
autant s'attacher à coder fidèlement la forme d'onde.
L'allocation de débit entre les deux modèles peut dans ce cas être difficile.
Les critères d'amélioration du codeur coeur et de l'extension de bande sont
différents
et peuvent difficilement être comparés l'un à l'autre.
Cette allocation sera détaillée ultérieurement en référence à la figure 7.
Ainsi, le module 510 de codage TDAC reçoit une allocation supplémentaire
de bits pour effectuer une correction de codage coeur dans un certain nombre
de sous-
bandes. Il fournit au module de multiplexage en plus du signal codé coeur, des
bits
supplémentaires de codage de correction du codage coeur.
De la même façon, un décodeur G.729.1 en mode super-élargi est décrit en
référence à la figure 6. Il comporte les mêmes modules que le décodeur G.729.1
décrit en référence à la figure 2.
Il comporte cependant un module supplémentaire d'extension de bande 614
qui reçoit du module de démultiplexage 600, le signal d'extension de bande
ainsi que
le signal d'amélioration du codage d'extension selon l'allocation définie par
le module
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-20-
d'allocation décrit en référence à la figure 7. Le décodeur comporte également
le
banc de filtres de synthèse (blocs 616, 615) permettant d'obtenir le signal de
sortie en
bande super-élargie Ss%, .
Le module 603 de décodage TDAC reçoit du module de multiplexage, en plus
du signal coeur codé, des bits supplémentaires de correction du codage coeur
selon
l'allocation de bits définie par le module d'allocation décrit en référence à
la figure 7.
Le décodeur ainsi décrit bénéficie donc du codage d'amélioration mis en
oeuvre par le codeur d'amélioration tel que maintenant décrit en référence à
la figure
7.
Dans un mode de réalisation, l'allocation binaire ne peut pas être recalculée
au décodeur, cette information est alors transmise dans la couche
d'amélioration
correspondante.
Dans un autre mode de réalisation, le décodeur peut effectuer le même calcul
d'allocation binaire qu'au codeur en répartissant le débit entre la correction
du codeur
coeur et l'extension de bande. Le module d'allocation s'appuie sur
l'allocation binaire
du codeur coeur et éventuellement sur une information venant de la première
couche
d'extension de bande, à savoir l'indication de tonalité.
Un module d'allocation comme décrit en référence à la figure 7, met en oeuvre
le procédé d'allocation selon l'invention.
Ce module peut de la même façon que pour le codeur, s'intégrer dans le
module décodeur TDAC 603, dans le module d'extension 614 ou être indépendant.
La figure 7 représente un module d'allocation de bits 701 selon l'invention et
reprend les principales étapes d'un procédé d'allocation de bits selon
l'invention.
Le bloc 306 représenté sur la figure 7 correspond au bloc d'allocation de bits
pour le codage coeur et tel que décrit dans le codeur TDAC de la figure 3,
pour le
codage coeur G.729.1.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-21 -
Ce bloc d'allocation coeur délivre une information d'allocation de bits
nbit(j)
du codage coeur, par sous-bande de fréquence de la bande de fréquence coeur.
Cette information est reçue par le module 701 d'allocation de bits conjointe.
En fonction d'un débit disponible pour le codage d'amélioration, le module 701
alloue un premier nombre de bits nbit_enhanced(j) pour effectuer une
correction du
codage coeur de type transformée dans une première bande de fréquence et un
deuxième nombre de bits nb_sin pour le codage de type paramétrique sinusoïdal,
d'amélioration du codage d'extension dans une deuxième bande de fréquence.
Plus particulièrement, le module 701 reçoit un nombre de bits alloués pour le
codage coeur pour chacune des sous-bandes de la première bande de fréquence.
Ce nombre de bits par sous-bande est comparé à un seuil prédéterminé.
Dans les sous-bandes de fréquence où le nombre de bits alloué est inférieur au
seuil,
le module 701 alloue un nombre de bits minimum d'une valeur prédéfinie, par
exemple 9 bits.
Les bits disponibles restants par rapport au débit autorisé pour le codage
d'amélioration, par exemple un débit autorisé de 4 kbit/s, sont alloués pour
le codage
d'amélioration du codage d'extension, c'est-à-dire la deuxième couche de
codage
d'extension tel que décrit en référence à la figure 5.
De façon simple, le seuil peut être fixé à 0. Ainsi, seules les sous-bandes de
fréquence qui n'ont reçus aucun débit, ont une allocation supplémentaire de
bits pour
corriger le codage coeur dans ces sous-bandes.
Dans une variante de réalisation, le seuil prédéterminé est supérieur à 0. Un
premier essai est effectué avec un nombre minimum de bits à allouer pour les
sous-
bandes qui ont une allocation inférieure à ce seuil. Dans le cas où de
nombreuses
sous-bandes ont une allocation de bits inférieure au seuil, il se peut que le
débit
disponible soit dépassé. Dans ce cas, le seuil est diminué pour effectuer un
deuxième
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-22-
essai. Cette diminution peut se faire par exemple par dichotomie, jusqu'à
trouver un
seuil qui permette d'allouer le nombre minimum de bits par sous-bandes.
Le nombre de bits restants est alors alloué pour le codage sinusoïdal
d'extension de bande. Il correspond au nombre de sinusoïdes qui peuvent être
codés
pour le codage d'amélioration du codage d'extension.
Le module d'allocation 701 fournit donc une première allocation de bits par
sous-bande, nbit-enhanced(j) à un bloc de codage de correction du codage coeur
703
qui effectue une quantification vectorielle sphérique d'un signal résiduel
issu de la
quantification vectorielle sphérique du codeur TDAC du codage coeur G.729. 1,
sxa
et du signal original sxs=
Le bloc de codage de correction 703 délivre ainsi au bloc multiplexeur 704,
un signal de correction du codage coeur selon le nombre de bits alloué pour ce
codage.
Le module d'allocation 701 délivre une deuxième allocation de bits nb sin à
un bloc 702 de codage d'amélioration du codage d'extension de bande.
Ce bloc de codage reçoit le signal de la première couche d'extension de bande
SsWB ainsi que le signal original SsWB et code le signal résiduel issu du
calcul de
différence de ces deux signaux.
Dans une variante de réalisation, le module 701 reçoit également une
information de tonalité du signal résiduel. Ce calcul de tonalité est donné
par
exemple dans le document ICASSP 2009 référencé ci-dessus.
Le signal d'amélioration codé issu du bloc 702 est transmis au bloc de
multiplexage 704 selon l'allocation de bits déterminé par le procédé
d'allocation.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-23-
Le codage d'amélioration illustré sur cette figure 7 est par exemple intégré
dans un codeur G.729.1 en bande super-élargie tel que décrit en référence à la
figure
5.
Le module d'allocation est par exemple situé dans le module d'extension de
bande 515. Il reçoit du TDAC 510, les informations d'allocation du codage
coeur. Il
transmet le premier nombre de bits alloué au codeur TDAC qui effectue la
quantification vectorielle sphérique du bloc 703. Il transmet à la seconde
couche de
codage du module d'extension 515, le deuxième nombre de bits alloué pour le
codage
en mode sinusoïdal du bloc 702.
Dans une variante de réalisation, ce module d'allocation de bits est intégré
au
module TDAC 510 de la figure 5. Il délivre le premier nombre de bits alloué au
bloc
de quantification du codeur TDAC et le deuxième nombre de bits alloué au
module
d'extension 515 pour le codage d'amélioration du bloc 702.
Dans encore une autre variante, le module d'allocation est indépendant des
modules 510 et 515 et envoie respectivement aux deux modules, le premier
nombre
de bits alloué et le deuxième nombre de bits alloué.
L'invention a été décrite ici pour une réalisation dans un codeur G.729.1 en
bande super-élargie.
Elle peut bien évidemment s'intégrer dans un codeur en bande élargie de type
G.718 ou dans tout autre codeur hiérarchique ayant un codage coeur dans une
première bande de fréquence et un codage d'amélioration dans une deuxième
bande
de fréquence.
Cette figure 7 représente l'étage de codage d'amélioration. Pour le décodage
d'amélioration, les mêmes opérations peuvent être effectuées. Un module
d'allocation
701 donne alors le nombre de bits nbit_enhanced(j) pour le décodage
d'amélioration
(SVQ decod) du décodage coeur réalisé par exemple dans le module de décodage
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-24-
TDAC 603 de la figure 6 et le nombre de bits nb_sin pour le décodage
d'amélioration
de la couche d'extension (sinus decod), réalisé par exemple par le module de
décodage d'extension 614 de la figure 6.
Un exemple de réalisation matérielle d'un module d'allocation tel que
représenté et décrit en référence à la figure 7 est maintenant décrit en
référence à la
figure 8.
Ainsi, la figure 8 illustre un module d'allocation comportant un processeur
PROC coopérant avec un bloc mémoire BM comportant une mémoire de stockage
et/ou de travail MEM.
Ce module comporte un module d'entrée apte à recevoir un nombre de bits
par sous-bande nbit(j) de la première bande de fréquence d'un codeur coeur.
Le bloc mémoire BM peut avantageusement comporter un programme
informatique comportant des instructions de code pour la mise en oeuvre des
étapes
du procédé d'allocation au sens de l'invention, lorsque ces instructions sont
exécutées
par le processeur PROC, et notamment les étapes, pour un nombre prédéterminé
de
bits à allouer pour un codage/décodage d'amélioration:
- d'allocation, d'un premier nombre de bits à un codage/décodage de
correction du codage/décodage coeur dans la première bande de fréquence et
selon un
premier mode de codage/décodage;
- d'allocation d'un deuxième nombre de bits à un codage/décodage
d'amélioration du codage/décodage d'extension dans la deuxième bande de
fréquence
et selon un deuxième mode de codage/décodage.
Typiquement, la description de la figure 7 reprend les étapes d'un algorithme
d'un tel programme informatique. Le programme informatique peut également être
stocké sur un support mémoire lisible par un lecteur du module ou d'un codeur
intégrant le module d'allocation ou téléchargeable dans l'espace mémoire de
celui-ci.
CA 02766777 2011-12-23
WO 2011/004098 PCT/FR2010/051308
-25-
Le module d'allocation comporte un module de sortie apte à transmettre le
premier nombre de bits nbit_enhanced(j) alloué pour le codage de correction du
codage coeur et un deuxième nombre de bits nb_sin pour le codage
d'amélioration du
codage d'extension.
Ce module d'allocation peut être intégré dans un codeur/décodeur
hiérarchique de type G.729.1 en bande super-élargie ou plus généralement dans
tout
codeur/décodeur hiérarchique avec extension en bande de fréquence.