Note : Les descriptions sont présentées dans la langue officielle dans laquelle elles ont été soumises.
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-1-
Codage/Décodage perfectionné de signaux audionumériques
La présente invention concerne 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. La norme G.722 à 48,
56 et
64 kbit/s est un exemple de codec scalable en débit, tandis que les codecs UIT-
T
G.729.1 et MPEG-4 CELP sont des exemples de codecs 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.
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 c ur , garantissant la qualité minimale du codage. Cette couche doit
être
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-2-
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 kbit/s.
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.
Le codeur G.729.1 est schématisé sur la figure 1. Le signal d'entrée en bande
élargie s ,h , é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
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-3-
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 s, , 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 dLB 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
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.
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-4-
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
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).
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-5-
Le signal de sortie en bande élargie s,,b , é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)] _ [DLB (0) DLB (1) ... Die (159) SHB (0) SHB (1)
...SHB (159)j
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.
Ainsi, une sous-bande j comprend les coefficients Y(k) avec
sb _bound (j) <_ k < sb - bound (j + 1).
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-6-
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
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 -
5 Tableau 1 : Limites et taille des sous-bandes en codage TDAC
L'enveloppe spectrale {log_ rms(j)}1_o 17 est calculée dans le bloc 304
suivant la formule :
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-7-
sb _ hound (j+1)-1
log_ rms(j) log, 1 1 Y(k)'` +Er,ns , j = 0,.... 17
2 nb _ coef (j) k=sb_bound(j)
24
où ErmS = 2
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 :
rets_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) < +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.
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
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-8-
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 :
rets-q(j) = 2'h rns_index(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) :
- avec 160 premiers coefficients correspondant au spectre 1 du signal de
différence décodé en bande basse, filtré perceptuellement,
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-9-
- et 160 coefficients suivants correspondant au spectre SHB 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)-1) est appliquée au signal d w (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 - ris , où nbits _ rms 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=O,...,17), alloués à chacune des sous-bande avec comme contrainte globale :
17
nbit(j) < nbits VQ
I--o
Dans la norme G.729.1, les valeurs nbit(j) (j=O,...,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 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-10-
Taille de la Ensemble des valeurs autorisées nbit(j) (en nombre de bits)
sous-bandej
nb_coef(j)
8 R 8 = 10, 7,10,12,13,14,15,161
16 R 16 = 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) = - logz (rms _ q(j) x nb _coef (j))+ offset
où offset = -2.
Puisque les valeurs rms - q(j) = 2"' cette formule se simplifie sous
la forme :
2 rms _ index(j) pour j = 0, ...,16
iP(j) _
1
1 (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 (nb-coef(j)x(ip(j)-ri
fEFi rrJ>_c.xfl j)
où A,, est un paramètre optimisé par dichotomie pour satisfaire la contrainte
globale
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-11-
17
Y. nbit(j) nbits _VQ
i--o
en s'approchant au mieux du seuil nbits_VQ.
On décrit plus en détail maintenant l'incidence de la pondération perceptuelle
(filtrage du bloc 300) sur l'allocation de bits (bloc 306) du codeur par
transformée
TDAC.
Dans la norme G.729.1, le codage TDAC utilise le filtre W,B (z) de
pondération perceptuelle dans la bande basse (bloc 300), comme indiqué ci-
avant. En
substance, le filtrage de pondération perceptuelle permet de mettre en forme
le bruit
de codage. Le principe de ce filtrage est d'exploiter le fait qu'il est
possible d'injecter
plus de bruit dans les zones de fréquences où le signal original a une forte
énergie.
Les filtres de pondération perceptuelle les plus couramment utilisés en codage
CELP en bande étroite sont de la forme Å(z/yl)/Å(z/y2) où 0 < y2 < yl < 1 et
Å(z)
représente un spectre de prédiction linéaire (LPC). L'analyse par synthèse en
codage
CELP revient ainsi à minimiser l'erreur quadratique dans un domaine de signal
pondéré perceptuellement par ce type de filtre.
Cependant, pour assurer la continuité spectrale lorsque les spectres DAB et
SHB sont accolés (bloc 303 de la figure 3), le filtre W,B (z) est défini sous
la forme :
Å(zly, )
WLB (z) = fac Å(z l y2)
(-Y2) ` â;
avec y, = 0,96, y2 = 0,6 et fac = i-0
P
Y, (-Y)`âi
=o
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-12-
Le facteurfac permet d'assurer à la jonction des bandes basse et haute (4 kHz)
un gain du filtre à 1 à 4 kHz. Il est important de noter que, dans le codage
TDAC
selon la norme G.729. 1, le codage ne repose que sur un critère énergétique.
* Inconvénients de l'art antérieur
Le critère énergétique du codage TDAC de G.729.1, utilisé dans la bande
haute (4000-7000 Hz), n'est pas optimal d'un point de vue perceptuel,
notamment
pour coder des signaux musicaux.
Le filtre de pondération perceptuel est particulièrement adapté aux signaux de
parole. Il est largement utilisé dans les normes de codage de la parole basé
sur le
format de codage de type CELP. Cependant, pour les signaux musicaux, il
apparaît
que cette pondération perceptuelle basée sur une mise en forme du bruit de
quantification suivant les formants du signal d'entrée est insuffisante. La
plupart des
codeurs audio s'appuient sur un codage par transformée utilisant des modèles
de
masquage fréquentiel, ou masquage simultané; ils sont plus génériques (dans le
sens
où ils n'utilisent pas un modèle de production de la parole à l'instar du
CELP) et sont
donc plus adaptés pour coder les signaux musicaux.
On pourra se référer au document intitulé "Introduction to digital audio
coding and standards", de M. Bosi et R. Goldberg, publié par Kluver Academic
Publishers, en 2003, pour avoir plus de détails sur les modèles de masquage et
leur
application dans les codeurs par transformée.
Il existe donc un besoin d'améliorer la qualité de codage des signaux pour un
meilleur rendu perceptuel, tout en gardant l'interopérabilité avec le codage
G.729. 1.
La présente invention vient améliorer la situation.
Elle propose à cet effet, un procédé de codage hiérarchique d'un signal
audiofréquence numérique d'entrée en plusieurs sous-bandes fréquentielles
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
- 13-
comportant un codage coeur du signal d'entrée selon un premier débit et au
moins un
codage d'amélioration de débit supérieur d'un signal résiduel, le codage coeur
utilisant
une allocation binaire selon un critère énergétique. Le procédé est tel qu'il
comporte
les étapes suivantes pour le codage d'amélioration:
- calcul d'un seuil de masquage fréquentiel pour au moins une partie des
bandes de fréquences traitées par le codage d'amélioration;
- détermination d'une importance perceptuelle par sous bande de fréquence
en fonction du seuil de masquage calculé et en fonction du nombre de bits
alloués
pour le codage coeur;
- allocation binaire de bits dans les sous-bandes fréquentielles traitées par
le
codage d'amélioration, en fonction de l'importance perceptuelle déterminée; et
-codage du signal résiduel selon l'allocation de bits.
Ainsi, le codage selon l'invention profite d'une couche de codage
d'amélioration pour améliorer la qualité de codage d'un point de vue
perceptuel. La
couche d'amélioration va ainsi bénéficier d'un masquage fréquentiel qui
n'existe pas
dans l'étage de codage coeur, pour allouer au mieux les bits dans les bandes
fréquentielles du codage d'amélioration.
Cette opération ne modifie pas le codage coeur qui reste ainsi compatible avec
le codage normalisé existant, garantissant ainsi l'interopérabilité avec les
équipements déjà sur le marché qui utilisent le codage normalisé existant.
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é de codage défini ci-dessus.
Dans un mode de réalisation particulier, l'étape de détermination d'une
importance perceptuelle comporte:
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-14-
- une première étape de définition d'une première importance perceptuelle
pour au moins une sous bande de fréquence du codage d'amélioration, en
fonction du
seuil de masquage fréquentiel dans la sous-bande, de valeurs quantifiés du
codage de
l'enveloppe spectrale pour la sous bande de fréquence et d'un facteur de
normalisation déterminé;
-une deuxième étape de soustraction à la première importance perceptuelle
d'un rapport entre le nombre de bits alloués pour le codage coeur et le nombre
de
coefficients dans ladite sous-bande.
Ainsi, la première importance perceptuelle qui sera utilisé pour la couche
d'amélioration, ne prend pas en compte le codage coeur mais uniquement le
rapport
signal à masque pour définir une importance perceptuelle. Cette importance
perceptuelle est déterminée sur le signal d'entrée du codeur par transformée.
La prise en compte du codage coeur se fait simplement par soustraction du
nombre de bits moyen par échantillon déjà alloués. L'utilisation de
l'importance
perceptuelle basée sur le rapport signal à masque permettrait d'obtenir une
allocation
optimale au sens perceptuel. Cependant cette allocation serait utile si l'on
codait
directement le signal d'entrée de la couche de codage par transformée. Hors,
dans le
cadre de l'invention, une première couche de codage par transformée, basée sur
une
allocation énergétique a alloué un certain nombre de bits par sous-bande.
Si l'on veut améliorer la qualité en codant le signal résiduel de cette couche
du codeur coeur sans gaspiller de débit, il est nécessaire d'adapter
l'importance
perceptuelle basée sur le rapport signal à masque du signal d'entrée au signal
résiduel. Pour cela, on soustrait de la première importance perceptuelle une
valeur
représentative du nombre de bits alloués dans le codeur coeur. Il faut noter
que l'on ne
peut pas calculer l'importance perceptuelle basée sur le rapport signal à
masque d'un
signal résiduel. En effet, dans ce cas la courbe de masquage qui serait
calculée
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
- 15-
n'aurait pas réellement de sens perceptif, puisqu'elle ne se baserait pas sur
le signal
réellement perçu.
Dans une variante de réalisation, l'importance perceptuelle est déterminée en
outre en fonction de bits alloués pour un codage d'amélioration du codage
coeur,
précédent, ayant une allocation binaire selon un critère énergétique.
Dans le décodeur G.729.1 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). Même
au plus
haut débit du codage G.729.1 (32 kbit/s) certaines bandes de fréquence restent
ainsi
extrapolées. Avant d'appliquer le codage d'amélioration selon la présente
invention
on peut d'abord faire appel à un premier codage d'amélioration du codage coeur
pour
combler le manque de débit du codage coeur pour ces sous-bandes non
transmises.
Ce premier codage d'amélioration utilise le signal original et fonctionne
selon des
critères énergétiques pour l'allocation de bits. Selon un mode de réalisation
de
l'invention ce premier codage d'amélioration vient modifier le nombre de bits
nbit(j) alloués aux sous-bandes et la sous-bande décodée Yq(k) (définie plus
tard à
la figure 5).
Le codage d'amélioration selon l'invention prend donc également en compte
les bits alloués lors de ce premier codage d'amélioration, en plus des bits
alloués dans
le codage coeur.
Avantageusement, le seuil de masquage est déterminé pour une sous-bande,
par une convolution entre:
- une expression d'une enveloppe spectrale calculée, et
- une fonction d'étalement faisant intervenir une fréquence centrale de ladite
sous-bande.
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-16-
Dans une variante de réalisation, le procédé comporte une étape d'obtention
d'une information selon laquelle le signal à coder est tonal ou non tonal et
les étapes
de calcul du seuil de masquage et de détermination d'une importance
perceptuelle en
fonction de ce seuil de masquage, ne sont menées que si le signal est non
tonal.
Ainsi, le codage est adapté au signal qu'il soit tonal ou pas et permet une
allocation optimale des bits.
Dans une application particulièrement adaptée de l'invention, le
codage d'amélioration est un codage d'amélioration de type TDAC dans un codeur
étendu dont le codage coeur est de type codeur normalisé G.729. 1.
Ainsi, la qualité du codec G.729.1 dans la bande élargie (50-7000 Hz), est
améliorée. Une telle amélioration est importante pour étendre la bande du
codeur
G.729.1 de la bande élargie (50-7000Hz) à la bande super-élargie (50-14000Hz).
La présente invention se rapporte à également un procédé de décodage
hiérarchique d'un signal audiofréquence numérique en plusieurs sous-bandes
fréquentielles comportant un décodage coeur d'un signal reçu selon un premier
débit
et au moins un décodage d'amélioration de débit supérieur, d'un signal
résiduel, le
décodage coeur utilisant une allocation binaire selon un critère énergétique.
Le
procédé est tel qu'il comporte les étapes suivantes pour le décodage
d'amélioration:
- calcul d'un seuil de masquage fréquentiel pour au moins une partie des
sous-bandes de fréquences traitées par le décodage d'amélioration;
- détermination d'une importance perceptuelle par sous-bande de fréquence
en fonction du seuil de masquage calculé et en fonction du nombre de bits
alloués
pour le décodage coeur;
- allocation de bits dans les sous-bandes fréquentielles traitées par le
décodage d'amélioration, en fonction de l'importance perceptuelle déterminée;
et
-décodage du signal résiduel selon l'allocation de bits.
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
- 17-
De la même façon et avec les mêmes avantages que pour le codage l'étape
de détermination d'une importance perceptuelle comporte:
- une première étape de définition d'une première importance perceptuelle
pour au moins une sous- bande de fréquence du décodage d'amélioration, en
fonction
du seuil de masquage fréquentiel dans la sous-bande, de valeurs quantifiés du
décodage de l'enveloppe spectrale pour la sous-bande de fréquence et d'un
facteur de
normalisation déterminé;
-une deuxième étape de soustraction à la première importance perceptuelle
d'un rapport entre le nombre de bits alloués pour le décodage coeur et le
nombre de
coefficients dans ladite sous-bande.
L'invention se rapporte à un codeur hiérarchique d'un signal audiofréquence
numérique d'entrée en plusieurs sous-bandes fréquentielles comportant un
codeur
coeur du signal d'entrée selon un premier débit et au moins un codeur
d'amélioration
de débit supérieur, d'un signal résiduel, le codeur coeur utilisant une
allocation binaire
selon un critère énergétique. Le codeur d'amélioration comporte:
- un module de calcul d'un seuil de masquage fréquentiel pour au moins une
partie des bandes de fréquences traitées par le codeur d'amélioration;
- un module de détermination d'une importance perceptuelle par sous bande
de fréquence en fonction du seuil de masquage calculé et en fonction du nombre
de
bits alloués pour le codeur coeur;
- un module d'allocation binaire de bits dans les sous-bandes fréquentielles
traitées par le codeur d'amélioration, en fonction de l'importance
perceptuelle
déterminée; et
-un module de codage du signal résiduel selon l'allocation de bits.
Elle se rapporte également à un décodeur hiérarchique d'un signal
audiofréquence numérique en plusieurs sous-bandes fréquentielles comportant un
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
- 18-
décodeur coeur d'un signal reçu selon un premier débit et au moins un décodeur
d'amélioration de débit supérieur, d'un signal résiduel, le décodeur coeur
utilisant une
allocation binaire selon un critère énergétique. Le décodeur d'amélioration
comporte-
- un module de calcul d'un seuil de masquage fréquentiel pour au moins une
partie des sous-bandes de fréquences traitées par le décodeur d'amélioration;
- un module de détermination d'une importance perceptuelle par sous-bande
de fréquence en fonction du seuil de masquage calculé et en fonction du nombre
de
bits alloués pour le décodeur coeur;
- un module d'allocation de bits dans les sous-bandes fréquentielles traitées
par le décodeur d'amélioration, en fonction de l'importance perceptuelle
déterminée;
et
-un module de décodage du signal résiduel selon l'allocation de bits.
Enfin, l'invention se rapporte à un programme informatique comportant des
instructions de code pour la mise en oeuvre des étapes d'un procédé de codage
selon
l'invention, lorsqu'elles sont exécutées par un processeur et à un programme
informatique comportant des instructions de code pour la mise en oeuvre des
étapes
d'un procédé de décodage 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;
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-19-
- 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;
- la figure 5 illustre la structure d'un codeur TDAC comportant un codage
d'amélioration selon un mode de réalisation de l'invention;
- la figure 6 illustre la structure d'un décodeur TDAC comportant un
décodage d'amélioration selon un mode de réalisation de l'invention;
- la figure 7 illustre une fonction d'étalement avantageuse pour le masquage
au sens de l'invention;
- la figure 8 illustre une normalisation de la courbe de masquage, dans une
forme de réalisation de l'invention;
- la figure 9 illustre la structure d'un codeur G.729.1 étendu en bande de
fréquence dans lequel un codeur TDAC selon un mode de réalisation de
l'invention,
est inclus;
- la figure 10 illustre la structure d'un décodeur G.729.1 étendu en bande de
fréquence dans lequel un décodeur TDAC selon un mode de réalisation de
l'invention, est inclus;
- la figure 1 la illustre un exemple de réalisation matérielle d'un terminal
incluant un codeur selon un mode de réalisation de l'invention; et
- la figure 1 lb illustre un exemple de réalisation matérielle d'un terminal
incluant un décodeur selon un mode de réalisation de l'invention.
Un des objets de l'invention est l'amélioration de la qualité de G.729.1 en
bande élargie (50-7000 Hz), notamment pour les signaux musicaux. On rappelle
ici
que le codage G.729.1 a une bande utile de 50 à 7000 Hz. De plus la qualité de
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-20-
G.729.1 pour certains signaux tels que les signaux musicaux n'est pas
transparente à
son plus haut débit (32 kbitls) - cette limitation est due à la structure
hiérarchique
CELP+TDBWE+TDAC et au débit limité à 32 kbit/s.
Cette invention est motivée par la normalisation en cours à l'UIT-T d'une
extension scalable de G.729.1 visant en particulier à étendre la bande codée
par
G.729.1 à la bande super-élargie (50-14000 Hz). L'expérience montre que
l'extension
de bande (ex: 7000-14000 Hz) d'un signal à bande limitée (ex: 50-7000 Hz)
requiert
d'avoir un signal à bande limitée qui soit déjà de bonne qualité; en effet
l'extension
de bande fait ressortir les défauts existants dans ce signal. Ainsi, il existe
un besoin
d'amélioration de la qualité de G.729.1 en bande élargie (50-7000 Hz).
L'amélioration de la qualité de G.729.1 peut être réalisée avec une ou
plusieurs couches d'amélioration de débit supplémentaire (en plus de 32
kbit/s). En
pratique ces couches d'amélioration de débit supplémentaire peuvent servir à
la fois à
l'extension de bande (7000-14000 Hz) et à l'amélioration de qualité dans la
bande
élargie (50-7000 Hz). Ainsi une partie du débit supplémentaire des couches
d'amélioration peut être consacrée à l'amélioration du signal en bande élargie
décodé
par un décodeur G.729.1.
A noter qu'on peut distinguer deux coeurs dans le codage hiérarchique
considéré dans le présent document: G.729.1 a un codeur coeur CELP en bande
étroite, tandis que l'extension en bande super-élargie (50-14000Hz) de G.729.1
a
pour coeur G.729. 1.
Dans la suite par les termes codage coeur et débit coeur on entend un codage
de type G.729.1 et le débit associé de 32 kbitls.
Dans un mode de réalisation de l'invention, on s'intéresse plus
particulièrement à un codeur et un décodeur TDAC tel que décrit précédemment,
dans lequel une couche d'amélioration est intégrée.
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-21-
La figure 5 décrit un tel codeur TDAC amélioré.
On considère une extension scalable de G.729.1 en plusieurs couches
d'amélioration. Ici le codage coeur est un codage G.729.1, qui utilise un
codage
TDAC dans la bande [50-7000 Hz] à partir du débit de 14 kbit/s et jusqu'à 32
kbit/s.
On suppose qu'entre 32 et 48 kbit/s deux couches d'amélioration de 8 kbit/s
sont
produites afin d'étendre la bande de 7000 à 14000 Hz et de remplacer les sous-
bandes
non transmises du codage TDAC de G.729.1. Ces couches d'amélioration de 8
kbit/s
permettant d'aller de 32 à 48 kbit/s ne sont pas décrites ici.
L'invention porte sur deux couches d'amélioration de 8 kbit/s supplémentaires
du codage TDAC dans la bande 50 à 7000 Hz et qui font passer le débit de 48
kbit/s
à 56 et 64 kbit/s.
Le codeur appliquant la présente invention comporte des couches
d'amélioration qui rajoute du débit au débit coeur de G.729.1 (32 kbits). Ces
couches
d'amélioration servent à la fois à améliorer la qualité dans la bande élargie
(50-7000
Hz) et à étendre la bande supérieure de 7000 à 14000 Hz. Dans la suite on
ignore
l'extension de 7000 à 14000 Hz, car cette fonctionnalité n'influence pas la
mise en
oeuvre de la présente invention. Pour des raisons de simplicité les modules
correspondants à l'extension de bande de 7000 à 14000 Hz ne sont pas illustrés
sur
les figures 5 et 6.
On retrouve ici les mêmes blocs (blocs 500 à 507) que ceux utilisés dans la
couche de base du G.729.1 (blocs 300 à 307) tel que décrit en référence à la
figure 3.
Le codeur TDAC selon un mode de réalisation de l'invention comporte ici
une couche d'amélioration (blocs 509 à 513) qui améliore la couche coeur
(blocs 504
à 507).
A noter que le bloc 507 correspond ici à la quantification vectorielle
sphérique (spherical vector quantization ou SVQ) de G.729.1, qui peut
comporter
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-22-
une modification telle que mentionnée précédemment. Ainsi, dans ce bloc 507,
on
fait appel à un premier codage d'amélioration du codage coeur G.729.1 pour
combler
le manque de débit pour les sous-bandes non transmises (où nbit(j) = 0). Cette
modification utilise le signal original Y(k) et fonctionne selon des critères
énergétiques pour l'allocation de bits. Le nombre de bits nbit(j) alloués aux
sous-
bandes et la sous-bande décodée Yq(k) sont alors modifiés.
Le bloc 506 effectue une allocation binaire basée sur des critères
énergétiques
telle que décrit en référence à la figure 3.
La couche coeur est donc codée et envoyée au module de multiplexage 508.
Le signal coeur est également décodé localement dans le codeur par le bloc
510 qui effectue une déquantification sphérique et mise à l'échelle ; ce
signal coeur
est soustrait du signal original en 509, dans le domaine transformé, pour
obtenir un
signal résiduel err(k). Ce signal résiduel est ensuite codé à partir d'un
débit de 48
kbit/s, dans le bloc 513.
Le bloc 511 calcule une courbe de masquage à partir de l'enveloppe spectrale
codée rms _ q(j) obtenue par le bloc 505, où j=0,...,17 est le numéro de la
sous-
bande.
Le seuil de masquage M(j) de la sous-bande j est défini par la convolution
de l'enveloppe d'énergie &2 (j) = rms - q(j)2 x nb coef (j), par une fonction
d'étalementB(v) .
Dans un premier mode de réalisation, ce masquage n'est effectué que sur la
bande haute du signal, avec :
M(j)= ~Q2(k)xB(vj -vk)
k=10
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-23-
où vk est la fréquence centrale de la sous-bande k en Bark,
le signe X désignant multiplié par , avec la fonction d'étalement
décrite ci-après.
En termes plus génériques, le seuil de masquage M(j), pour une sous-bande j,
est donc défini par une convolution entre :
- une expression de l'enveloppe spectrale, et
- une fonction d'étalement faisant intervenir une fréquence centrale de la
sous-bande
J.
Une fonction d'étalement avantageuse est celle présentée à la figure 7. Il
s'agit d'une fonction triangulaire dont la première pente est de +27dB/Bark et
-
1OdB/Bark pour la deuxième. Cette représentation de la fonction d'étalement
permet
le calcul itératif de la courbe de masquage suivant
M- (10) j =10
M(j)= M+(j)+M-(j)+ô2(j) j=1,..,16
M+ (17) j =17
où
M+(J)=â2(j-1).A2(j)+M+(j-1)=A2(j) j=11,..,17
M-(J)=Q2(j+l)=A1(j)+M-(j+1).i (j) j=10,..,16
et
O2 (j)=1o
-10 10
A1027
Les valeurs de i (j) et 0, (j) peuvent être pré-calculées et stockées.
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-24-
La bande basse étant déjà filtrée perceptuellement par le module 500,
l'application du seuil de masquage est dans ce mode de réalisation, limitée à
la bande
haute. De manière à assurer la continuité spectrale entre le spectre en bande
basse et
celui en bande haute pondéré par le seuil de masquage et pour éviter de
biaiser
l'allocation binaire, le seuil de masquage est normalisé par exemple par sa
valeur sur
la dernière sous-bande de la bande basse.
Une première étape de calcul d'importance perceptuelle est alors effectuée en
prenant en compte le rapport signal-à-masque donné par :
â2 (j)
1 - log,
2 M(j)
L'importance perceptuelle est donc définie comme suit dans le bloc 511 :
2 loge (&2(j))+offset pour j = 0.9
ip(j) _
1 logz ~!~ +normfac +offset pour j =10..17
2 M(j)
où offset = -2 et normfac est un facteur de normalisation calculé suivant la
relation :
17
normfac=logz yà2(j)XB(vg -vj)
lj=9
On note que l'importance perceptuelle ip(j), j=0,...,9, est identique à celle
définie dans la norme G.729.1. Par contre, la définition du terme ip(j) ,
j=10,...,17,
est changée.
L'importance perceptuelle définie ci-dessus s'écrit maintenant :
2 rms _ index(j) pour j=0,...,9
ip(j)
2 [ris _ index(j) - log mask(j)] pour j =10,...,17
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-25-
où log- mask(j)=log2(M(j))-normfac.
Une illustration de la normalisation du seuil de masquage est donnée en
figure 8, montrant le raccord de la bande haute sur laquelle est appliquée le
masquage (4-7 kHz) à la bande basse (0-4 kHz).
Dans une variante de ce mode de réalisation où la normalisation du seuil de
masquage s'effectue par rapport à sa valeur sur la dernière sous-bande de la
bande
basse, la normalisation du seuil de masquage peut être plutôt réalisée à
partir de la
valeur du seuil de masquage dans la première sous-bande de la bande haute,
comme
suit :
17
normfac=loge yâ2(j)xB(v10-vj)
j=10
Dans une autre variante encore, le seuil de masquage peut être calculé sur
l'ensemble de la bande de fréquences, avec :
17
M(j) =1 â2 (k) x B(vj - vk )
k=0
Le seuil de masquage est ensuite appliqué uniquement à la bande haute après
normalisation du seuil de masquage par sa valeur sur la dernière sous-bande de
la
bande basse:
17
normfac=loge [2(j)xB(v _vi) ,
j=0
ou encore par sa valeur sur la première sous-bande de la bande haute :
17
normfac = log, l &2 (j) x B(v10 _V
1)
lj=o
Bien entendu, ces relations donnant le facteur de normalisation normfac ou le
seuil de masquage M(j) sont généralisables à un nombre de sous-bandes
quelconque
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-26-
(différent, au total, de dix-huit) en bande haute (avec un nombre différent de
huit),
comme en bande basse (avec un nombre différent de dix).
A partir de ce calcul de masquage fréquentiel, une première importance
perceptuelle ip(j), est envoyée au bloc 512 d'allocation binaire pour le
codage
d'amélioration.
Ce bloc 512 reçoit également les informations d'allocations de bits nbit(j) de
la couche coeur du codage TDAC, G.729.1.
Le bloc 512 définit ainsi une nouvelle importance perceptuelle qui prend en
compte ces deux informations.
Ainsi, une seconde importance perceptuelle est définie comme suit:
ip (j) = ip(j)- nbit(j) ff(j) pour j=1, ..., 18
nb _ coe
où nbit(j) représente le nombre de bits alloués par la couche de base à la
bande de
fréquence j, et nb_coeff(j) représente le nombre de coefficients de la bande j
selon le
tableau 1 décrit précédemment.
En d'autres termes, la nouvelle importance perceptuelle est calculée par
soustraction à la première importance perceptuelle, d'un rapport entre le
nombre de
bits alloués pour le codage coeur et le nombre de coefficients possibles dans
la sous-
bande.
Avec cette nouvelle importance perceptuelle, le bloc 512 effectue une
allocation de bits sur le signal résiduel pour coder la couche d'amélioration.
Cette allocation de bits est calculée comme suit:
nbit _ err(j) = arg,ERnn min~nb coef (j) x (ip' (j) - Å ) - r
où l'optimisation doit satisfaire la contrainte
17
1 nbit _ err(j) S nbits_VQ _ err
l=d
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-27-
nbits _ VQ _ err correspondant au nombre de bits supplémentaire dans la couche
d'amélioration (320 bits pour les 2 couches de 8 kbit/s).
Elle prend donc en compte la nouvelle importance perceptuelle calculée.
Le signal résiduel err(k) est ensuite codé par le module 513 par
quantification
vectorielle sphérique, en utilisant le nombre de bits alloués nbit_err(j) tel
que calculé
précédemment.
Ce signal résiduel codé est ensuite multiplexé avec le signal issu du codage
coeur et l'enveloppe codée, par le module de multiplexage 508.
Ce codage d'amélioration, étend non seulement le débit alloué mais améliore
d'un
point de vue perceptuel, le codage du signal.
On rappelle que la couche d'amélioration du codage TDAC tel que décrit peut
s'appliquer après avoir modifié le codage TDAC de G.729.1. Dans les couches
d'amélioration de 32 à 48 kbit/s, une première amélioration (non décrite ici)
du
codage TDAC de G.729.1 est réalisée. Cette amélioration alloue des bits aux
sous-
bandes comprises entre 4 et 7 kHz auxquelles aucun débit n'a été alloué par le
codage
coeur TDAC de G.729.1 même à son plus haut débit de 32 kbit/s. Cette première
amélioration du codage TDAC de G.729.1 utilise donc le signal original entre 4
et 7
kHz et ne met pas en oeuvre les étapes de calcul d'un seuil de masquage ni de
détermination de l'importance perceptuelle du procédé de codage de
l'invention. On
considère que le bloc 507 correspond à ce codage TDAC modifié intégrant cette
amélioration.
Ainsi, dans la couche d'amélioration du procédé de codage de l'invention, aux
débits allant de 48 kbit/s à 64 kbit/s, la détermination de l'importance
perceptuelle
(blocs 511, 512) prend non seulement en compte les bits alloués pour le codage
coeur
ou de base mais également les bits alloués pour le codage d'amélioration
précédent,
en l'occurrence, le codage d'amélioration de débit 40 kbit/s.
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-28-
La figure 5 illustre non seulement le codeur TDAC avec son étage de codage
d'amélioration mais sert également à une illustration des étapes du procédé de
codage
selon un mode de réalisation de l'invention tel que décrit précédemment et
notamment des étapes de:
- calcul d'un seuil de masquage fréquentiel pour au moins une partie des
bandes de
fréquences traitées par le codage d'amélioration;
- détermination d'une importance perceptuelle par sous-bande de fréquence en
fonction du seuil de masquage calculé et en fonction du nombre de bits alloués
pour
le codage coeur;
- allocation binaire de bits dans les sous-bandes fréquentielles traitées par
le codage
d'amélioration, en fonction de l'importance perceptuelle déterminée; et
- codage du signal résiduel selon l'allocation de bits.
La figure 6 illustre le décodeur TDAC avec un étage de décodage
d'amélioration ainsi que les étapes d'un procédé de décodage selon un mode de
réalisation de l'invention.
Le décodeur comporte les modules (601, 602, 603, 606, 607, 608, 609 et 610)
identiques à ceux décrits pour le décodage TDAC du codeur G.729.1 en référence
à
la figure 4 (401, 402, 403, 406, 407, 408, 409 et 410). A noter que le bloc
606 de
postraitement dans le domaine MDCT (visant à mettre en forme le bruit de
codage)
est ici optionnel car l'invention vient améliorer la qualité du spectre MDCT
décodé
issu du bloc 603.
Le module 605 du décodeur correspond au module 511 du codeur et
fonctionne de la même façon à partir des valeurs quantifiées de l'enveloppe
spectrale.
A partir de la première importance perceptuelle ip(j) calculée par ce module
605, le module d'allocation 604, détermine une seconde importance perceptuelle
en
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-29--
prenant en compte l'allocation de bits reçus du codage coeur, de la même façon
que
dans le module 512 du codage.
Cette allocation de bits pour le codage d'amélioration permet au module 611
de décoder le signal reçu du module de démultiplexage 600, par
déquantification
vectorielle sphérique.
Le signal décodé issu du module 611 est un signal d'erreur err(k) qui est
ensuite combiné en 612, au signal coeur décodé en 603.
Ce signal est ensuite traité comme pour le codage G.729.1 décrit en référence
à la figure 4, pour donné un signal en différence dLB en bande basse et un
signal SHB
en bande haute.
On indique aussi que le calcul d'un masquage fréquentiel effectué par le
module 511 ou 605 et tel que décrit précédemment, peut être effectué ou non
selon le
signal à coder (en particulier s'il est tonal ou non).
Il a pu être observé en effet que le calcul du seuil de masquage est
particulièrement avantageux lorsque le signal à coder n'est pas tonal.
Si le signal est tonal, l'application de la fonction d'étalement B(v) résulte
en
un seuil de masquage très proche d'un ton un peu plus étalé en fréquences. Le
critère
de minimisation du rapport bruit de codage à masque donne alors une allocation
des
bits qui n'est pas obligatoirement optimale.
On peut donc pour améliorer cette allocation, utiliser une allocation des bits
suivant des critères énergétiques pour un signal tonal.
Ainsi, dans une variante de réalisation, le calcul du seuil de masquage et la
détermination de l'importance perceptuelle en fonction de ce seuil de masquage
selon
l'invention n'est appliqué que si le signal à coder n'est pas tonal.
En termes génériques, on obtient donc une information (du bloc 505) selon
laquelle le signal à coder est tonal ou non tonal, et la pondération
perceptuelle de la
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-30-
bande haute, avec la détermination du seuil de masquage et la normalisation,
ne sont
menées que si le signal est non tonal.
Avec un codage coeur de type G.729.1, le bit relatif au mode du codage de
l'enveloppe spectrale (bloc 505 ou 601) indique un mode "Huffman différentiel"
ou
un mode "binaire naturel direct". Ce bit de mode peut être interprété comme
une
détection de tonalité, car, en général, un signal tonal conduit à un codage
d'enveloppe
par le mode "binaire naturel direct", tandis que la plupart des signaux non
tonaux,
ayant une dynamique spectrale plus limitée, conduisent à un codage d'enveloppe
par
le mode "Huffman différentiel".
Ainsi, il peut être tiré un avantage de la détection de tonalité du signal
pour mettre en oeuvre le masquage fréquentiel ou non. Plus particulièrement,
ce
calcul de seuil de masquage est appliquée dans le cas où l'enveloppe spectrale
a été
codée en mode "Huffman différentiel" et la première importance perceptuelle
est
définie alors au sens de l'invention, comme suit :
2 rms _ index(j) pour j = 0..9
ip(j) _
2 [rms - index(j) - log- mask(j)] pour j =10..17
Par contre, si l'enveloppe a été codée en mode "binaire naturel direct", la
première
importance perceptuelle reste telle que définie dans la norme G.729.1 :
1 rms - index(j) pour j0,..,16
ip(j) =
(rms - index(j) -1) pour j =17
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-31 -
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 9, un tel codeur est illustré. L'extension en bande
super-élargie du codeur G.729.1 tel que représenté consiste en une extension
des
fréquences codées par le module 915, 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 910) et tel que décrit en référence
à la
figure 5.
Ainsi, le codeur tel que représenté en figure 9, 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 915 qui fournit un signal d'extension au module de
multiplexage 912.
Cette extension de bande de fréquence est calculée sur le signal original
pleine bande S,swB alors que le signal d'entrée du codeur coeur est obtenu par
décimation (bloc 913) et filtrage passe-bas (bloc 914). A la sortie de ces
blocs, le
signal d'entrée en bande élargie SwB est obtenu.
Le module 910 de codage TDAC est différent de celui illustré en figure 1. Ce
module est par exemple celui décrit en référence à la figure 5 et fournit au
module de
multiplexage, à la fois le signal coeur codé et le signal d'amélioration codé
selon
l'invention.
De la même façon, un décodeur G.729.1 étendu en bande super-élargie est
décrit en référence à la figure 10. 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 1014
qui reçoit du module de démultiplexage 1000, le signal d'extension de bande.
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-32-
Il comporte également le banc de filtres de synthèse (blocs 1015, 1016)
permettant d'obtenir le signal de sortie en bande super-élargie Sswn .
Le module 1003 de décodage TDAC est également différent du module de
décodage TDAC illustré en référence à la figure 2. Ce module est par exemple
celui
décrit et illustré en référence à la figure 6. Il reçoit donc du module de
démultiplexage, à la fois le signal coeur et le signal d'amélioration.
Dans le mode de réalisation privilégié présenté précédemment, l'invention est
utilisée pour améliorer la qualité du codage TDAC dans le codec G.729.1.
Naturellement l'invention s'applique à d'autres types de codage par
transformée avec
une allocation binaire et à l'extension scalable d'autres codecs coeur que
G.729. 1.
Un exemple de réalisation matérielle du codeur et du décodeur tel que décrit
en référence aux figures 5 et 6 est maintenant décrit en référence aux figures
11 a et
I lb.
Ainsi, la figure lla illustre un codeur ou terminal comprenant un
codeur tel que décrit en figure 5. Il comporte un processeur PROC coopérant
avec un
bloc mémoire BM comportant une mémoire de stockage et/ou de travail MEM.
Ce terminal comporte un module d'entrée apte à recevoir un signal en bande
basse dLB et un signal SHB en bande haute ou tout type de signaux numériques à
coder. Ces signaux peuvent provenir d'un autre étage de codage ou d'un réseau
de
communication, d'une mémoire de stockage de contenu numérique.
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é de codage au sens de l'invention, lorsque ces instructions sont
exécutées
par le processeur PROC, et notamment les étapes de:
- calcul d'un seuil de masquage fréquentiel pour au moins une partie des sous-
bandes de fréquences traitées par le codage d'amélioration;
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-33 -
- détermination d'une importance perceptuelle par sous-bande de fréquence en
fonction du seuil de masquage calculé et en fonction du nombre de bits alloués
pour
le codage coeur;
- allocation de bits dans les sous-bandes fréquentielles traitées par le
codage
d'amélioration, en fonction de l'importance perceptuelle déterminée; et
- codage du signal résiduel selon l'allocation de bits.
Typiquement, la description de la figure 5 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 terminal ou codeur ou
téléchargeable dans l'espace mémoire de celui-ci.
Le terminal comporte un module de sortie apte à transmettre un flux
multiplexé issu du codage des signaux d'entrée.
De la même façon, la figure 11b illustre un exemple de décodeur ou de
terminal comportant un décodeur tel que décrit en référence à la figure 6.
Ce terminal comporte un processeur PROC coopérant avec un bloc mémoire
BM comportant une mémoire de stockage et/ou de travail MEM.
Le terminal comporte un module d'entrée apte à recevoir un flux multiplexé
provenant par exemple d'un réseau de communication, d'un module de stockage.
Le bloc mémoire peut avantageusement comporter un programme
informatique comportant des instructions de code pour la mise en oeuvre des
étapes
du procédé de décodage au sens de l'invention, lorsque ces instructions sont
exécutées par le processeur PROC, et notamment les étapes de:
- calcul d'un seuil de masquage fréquentiel pour au moins une partie des
sous-bandes de fréquences traitées par le décodage d'amélioration;
CA 02766864 2011-12-23
WO 2011/004097 PCT/FR2010/051307
-34-
- détermination d'une importance perceptuelle par sous-bande de fréquence
en fonction du seuil de masquage calculé et en fonction du nombre de bits
alloués
pour le décodage coeur;
- allocation de bits dans les sous-bandes fréquentielles traitées par le
décodage d'amélioration, en fonction de l'importance perceptuelle déterminée;
et
-décodage du signal résiduel selon l'allocation de bits.
Typiquement, la description de la figure 6 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 terminal ou
téléchargeable
dans l'espace mémoire de celui-ci.
Le terminal comporte un module de sortie apte à transmettre des signaux
décodés (dLB, SHB) pour un autre étage de codage ou pour une restitution de
contenu.
Bien évidemment, un tel terminal peut comporter à la fois le codeur et le
décodeur selon l'invention.