[0001] La présente invention concerne un procédé de quantification de l'énergie du signal
de parole dans un vocodeur à très faible débit.
[0002] Elle s'applique notamment à la réalisation de vocodeurs à prédiction linéaire utilisés
pour la transmission de la parole sur voie radio, similaires à ceux décrits par exemple
dans la Revue Technique THOMSON-CSF, volume 14 n°3, Septembre 1982, pages 715 à 731,
suivant lesquels le signal de parole est identifié à la sortie d'un filtre numérique
dont l'entrée reçoit soit une forme d'onde périodique correspondant à celles des sons
voisés comme le sont les voyelles, soit une forme d'onde aléatoire correspondant à
celles des sons non voisés comme le sont la plupart des consonnes.
[0003] Il est connu que la qualité auditive des vocodeurs à prédiction linéaire dépend en
grande partie de la précision avec laquelle leur filtre prédicteur est quantifié,
mais aussi de la qualité de restitution du profil de puissance de l'excitation. Ceci
est particulièrement vrai pour certains sons transitoires tels que beaucoup de consonnes,
une mauvaise restitution ne permettant pas de distinguer un "d" d'un "t" ou d'un "k"
par exemple.
[0004] D'une manière générale, le signal de parole est segmenté en trames de durée constante,
et une seule valeur de la puissance (ou de l'énergie) de l'excitation est fournie
pour chaque trame.
[0005] Dans les vocodeurs à très faible débit, une manière de baisser le débit consiste
à augmenter la durée de la trame, par exemple de 22.5 ms à 30 ms ainsi qu'à regrouper
et quantifier en une seule fois les paramètres relatifs à plusieurs trames. Ceci permet
de renouveler moins souvent les différents paramètres de synthèse. Malheureusement,
l'intelligibilité de la parole restituée diminue car transmettre une seule valeur
de l'énergie par trame ne permet plus une restitution convenable de certains transitoires.
[0006] Pour remédier à ces difficultés, un premier procédé connu consiste à regrouper les
trames en paquets en considérant k valeurs d'énergie par paquet, représentable chacune
par les coordonnées d'un point référencé dans un espace à k dimensions. Une analyse
statistique permet de déterminer les axes principaux du nuage des points observés.
La quantification a lieu sur les coordonnées des points portées par les axes principaux,
chaque coordonnée étant quantifiée sur un nombre de bits dépendant de la valeur propre
associée à chaque axe considéré. Cependant, l'inconvénient de procéder ainsi est qu'il
faut prévoir une procédure de correction au niveau du filtre de synthèse pour que
les valeurs des énergies calculées ne soient pas négatives. D'autre part, dans ce
traitement, aucune attention particulière n'est portée à la fidélité de restitution
des transitoires.
[0007] Selon un deuxième procédé également connu, et qui procède en partie comme le premier
par regroupement de trames en paquets en considérant également k valeurs d'énergie
par paquet, les k valeurs d'énergie ne sont plus codées scalairement, mais vectoriellement
au moyen d'un dictionnaire contenant M = 2
Q multiplets de k valeurs chacun en considérant que les k valeurs sont quantifiées
sur Q bits.
[0008] Dans ce cas, des difficultés de réalisation apparaissent du fait qu'il faut d'une
part, créer et stocker un dictionnaire, et d'autre part, effectuer une quantification.
Comme le dictionnaire est généralement mal structuré et qu'il faut compter au moins
2 bits par valeur d'énergie, le codage du nombre Q occupe pas moins de 2²⁰ combinaisons,
ce qui représente pour les processeurs de traitement du signal des vocodeurs des charges
de calcul très importantes.
[0009] Le but de l'invention est de pallier les inconvénients précités. A cet effet, l'invention
a pour objet un procédé de quantification de l'énergie du signal de parole dans un
vocodeur à très faible débit caractérisé en ce qu'il consiste à partager (1) le signal
de parole en paquets d'un nombre déterminé de trames de durée constante en échantillonnant
un nombre déterminé n de valeurs d'énergie dans chaque trame, à quantifier (2, 3,
4) la première valeur d'énergie mesurée dans chaque première trame d'un paquet suivant
un nombre déterminé Q
o de bits et les variations des k - 1 énergies restantes relativement à la première
valeur de l'énergie échantillonnée sur un nombre déterminé Q1 de bits inférieur à
Q0, les variations des k - 1 énergies étant sélectionnées dans un tableau de "pentes",
permettant d'attribuer à chaque échantillon d'énergie k la "pente" d'énergie qui le
sépare de l'énergie de l'échantillon k - 1 précédent.
[0010] Le procédé selon l'invention a pour principal avantage qu'il permet d'obtenir une
quantification de l'énergie de bonne qualité dans chaque trame du signal de parole,
tout en respectant les transitions d'énergie de trame à trame sans que dans le vocodeur
la charge de calcul et l'espace mémoire nécessaires ne s'en trouvent affectés.
[0011] D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de
la description qui suit, faite en regard des dessins annexés qui représentent :
- les figures 1 et 2, deux graphiques pour illustrer le principe de quantification de
l'énergie d'un vocodeur mis en oeuvre par l'invention,
- la figure 3, un organigramme illustrant les différentes étapes du procédé selon l'invention.
[0012] Le procédé selon l'invention consiste de la manière représentée à la figure 1 à segmenter
le signal de parole en trames de durée déterminée constante comprise par exemple entre
22,5 et 30 ms, à regrouper les trames par paquets d'un nombre déterminé n de valeurs
d'énergie du signal dans chaque trame pour ne transmettre dans chaque paquet que la
première valeur quantifiée de l'énergie mesurée E₁ dans la première trame d'un paquet
ainsi que les k - 1 valeurs des différences des énergies existantes entre les trames
qui suivent, k étant égal à n . L. En réception, les différences des énergies reçues
sont mises bout à bout à la suite de la première valeur d'énergie qui est reçue dans
la première trame de chaque paquet pour reconstituer le profil des valeurs quantifiées
des énergies à l'émission.
[0013] Pour ce faire, dans le vocodeur d'émission, une première valeur d'énergie est quantifiée
dans chaque première trame k
o d'un paquet sur un nombre déterminé Q
o débits et les variations des k - 1 énergies restantes le sont avec un nombre déterminé
Q₁ de bits inférieur à Q
o. Les 2
Qo valeurs initiales possibles comportent une valeur nulle représentant les silences.
Les autres valeurs sont réparties suivant une échelle quasi logarithmique la mieux
adaptée pour suivre les propriétés de sensibilité de l'oreille, le pas de quantification
étant d'autant plus faible que le niveau du signal de parole est plus élevé. Typiquement,
un pas de 3dB est adopté pour les faibles niveaux et un pas de 1dB est adopté pour
les forts niveaux. Les m = 2
Q₁ autres valeurs représentent des incréments d
i d'énergie encore appelée ci-après "valeurs légales d'énergie" dont les valeurs sont
prédéterminées pour privilégier les transitions, celles-ci sont choisies par exemple
égales respectivement à - 3dB , 0dB, + 2dB et + 7dB si le nombre Q₁ est codé avec
seulement 2 bits.
[0014] Les incréments d'énergie permettent, comme le montre la figure 2, de rechercher à
partir de chaque valeur B quantifiée d'une trame k les valeurs quantifiées A de l'énergie
dans la trame précédente k - 1 qui peut y mener par un incrément légal d
i en commençant par l'incrément nul d
o.
[0015] La détermination des nombres Q
o et Q₁ est établie suivant les étapes 1 à 5 du procédé représenté par l'organigramme
de la figure 3. La première étape référencée 1 sur la figure 3 regroupe les trames
par paquets de L trames. Les valeurs des énergies E₁ à E
k sont calculées à l'étape 2. Celles-ci sont quantifiées de la façon représentée sur
les figures 1 et 2 entre deux valeurs E
max et E
min relativement à une échelle comportant P graduations qui peuvent être confondues par
commodité avec les 2
Qo valeurs possibles de l'énergie initiale E₁ mesurée dans la première trame. Les valeurs
quantifiées correspondantes aux 2
Qo valeurs possibles sont désignées sur la figure 2 par e
o, e₁ .... e
p-1 avec e
o = E
min et e
p-1 = E
max.
[0016] Le procédé continue à 'étape 3 sur la figure 3 par une phase d'initialisation consistant
à calculer un jeu de P distances entre la première valeur d'énergie E, et les P valeurs
quantifiées possibles de cette énergie.
[0017] Les distances Dp correspondantes sont mémorisées sous la forme d'un premier tableau
(D) non représenté dans une mémoire du vocodeur. Les calculs ont lieu en élevant au
carré les différences entre la première énergie E₁ et les valeurs quantifiées e
o, e₁ .... e
p-1 suivant la relation :

[0018] Les distances calculées sont d'autant plus faibles que la valeur quantifiée e
p est plus proche de la valeur E₁. L'étape 4 suivante consiste, de manière similaire
à l'algorithme connu de VITERBI à effectuer k-1 itérations qui visent à estimer les
distances entre tous les profils de quantification potentiels et le profil d'énergie
réel, en éliminant les profils de quantification les moins probables. Un deuxième
tableau (D') non représenté, noté "pente", est construit qui pour chacune des itérations
1 à k-1 associe une pente ou un incrément légal d'énergie d
i à chaque valeur P quantifiée de l'itération k. Une recherche de la valeur quantifiée
de l'itération k-1 qui précède est effectuée en pointant dans le tableau des "pentes"
la "partie" ou l'incrément légal d
i qui peut y mener directement en commençant par l'incrément nul d
o. La suite des instructions de programmation à mettre en oeuvre est la suivante :
- POUR p = 0 ... P - 1, FAIRE
/* initialisation pour une incrémentation nulle */
- poser D
min = D' (p - d₀) = D' (p) et poser IndicePrec =0
/* test des incrémentations non nulles */
- POUR i = 1 ... m, FAIRE
-SI p - d
i > = 0 ET p - d
i < = P - 1 ALORS /* valeur légale d
i*/
-SI D' (p - d
i) < D
min alors /*distance plus faible*/
-FAIRE D
min = D' (p - d
i)
- FAIRE IndicePrec = i
FIN SI
FIN SI
FIN FAIRE
- FAIRE IndicePente (k,p) = IndicePrec/*mémoriser la valeur quantifiée la plus
probable à l'étape précédente*/
- FAIRE D(p) = D
min + (E
k - e
p)²/*mettre à jour la distance*/
FIN FAIRE
[0019] Ainsi à l'itération k - 1 un tableau de distances D(⁺) est construit qui à la position
p contient la distance cumulée entre le meilleur profil quantifié qui arrive à la
position p et le profil original. Cela permet de conserver en mémoire un tableau d'indice
de pentes dont la valeur d'indice de pente (k,p) représente l'indice de la meilleure
pente possible pour parvenir à la valeur quantifiée e
p à l'étape k. Les deux tableaux ainsi obtenus permettent d'arriver à une décision
finale. Pour ce faire, le procédé recherche dans la tableau D(⁺) l'indice p
min qui correspond à la valeur minimale. Il effectue ensuite une remontée dans le tableau
de pentes en effectuant k - 1 itérations, programmées de la façon suivante :
- pour k = K - 1, K - 2,....., 1 FAIRE
- IndiceDiff (f) = IndicePente(k,p
min)
- p
min = p
min - IndicePente(k,p
min)
FIN FAIRE
[0020] Les valeurs indice Indice Diff (1...K-1) sont les indices des meilleures valeurs
quantifiées possibles pour les pentes D
i. La valeur finale de P
minest alors simplement l'indice de la valeur quantifiée la plus probable.
[0021] La correspondance entre le profil original des valeurs des énergies à quantifier
après le profil final après quantification est représentée à la figure 1. Le fait
que l'algorithme élimine automatiquement les valeurs aberrantes résultant d'une analyse
erronée apparaît sur la quatrième valeur d'énergie représentée à la figure 1.
[0022] Bien entendu, le procédé qui vient d'être décrit peut toujours être adapté en fonction
de caractéristiques particulières du système d'analyse. En particulier si celui-ci
a tendance à trouver des valeurs erronées pour l'énergie, il est toujours possible
de rendre minimale l'influence des valeurs erronées en remplaçant par exemple les
élévations au carré qui servent de mesures de distance, par des valeurs absolues qui
permettent de caler le profil des valeurs quantifiées sur les valeurs correctes de
l'énergie, sous réserve qu'elles soient plus nombreuses que les valeurs incorrectes.
[0023] De plus, l'adaptation et la mise au point pour un vocodeur particulier ne nécessite
que la modifications des valeurs quantifiées de départ (nombre et valeurs), les incréments
(nombre et valeurs), ou encore le nombre d'itérations.
[0024] Enfin, le procédé qui vient d'être décrit ne représente q'une faible charge de calcul
puisque l'initialisation est effectuée dès la première trame, et la kème itération
à la trame k + 1 ; ceci permet de répartir la charge de calcul dans le temps sauf
pour la dernière trame où se prend la décision finale sans que cette disposition soit
coûteuse en puissance de calcul.
1. Procédé de quantification de l'énergie du signal de parole dans un vocodeur à très
faible débit caractérisé en ce qu'il consiste à partager (1) le signal de parole en
paquets d'un nombre déterminé de trames de durée constante en échantillonnant un nombre
déterminé n de valeurs d'énergie dans chaque trame, à quantifier (2, 3, 4) la première
valeur d'énergie mesurée dans chaque première trame d'un paquet suivant un nombre
déterminé Qo de bits et les variations des k - 1 énergies restantes relativement à la première
valeur de l'énergie échantillonnée sur un nombre déterminé Q1 de bits inférieur à
Q0, les variations des k - 1 énergies étant sélectionnées dans un tableau de "pentes",
permettant d'attribuer à chaque échantillon k d'énergie la "pente" d'énergie qui le
sépare de l'énergie de l'échantillon k - 1 précédent.
2. Procédé selon la revendication 1 caractérisé en ce qu'il consiste à mémoriser les
pentes d'énergie associées à chaque échantillon d'énergie dans l'ordre d'apparition
des échantillons d'énergie.
3. Procédé selon l'une quelconque des revendications 1 et 2 caractérisé en ce qu'il consiste
à quantifier la première valeur d'énergie mesurée dans chaque première trame en suivant
une échelle de quantification quasi logarithmique en donnant une valeur de pas plus
importante aux faibles niveaux d'énergie.
4. Procédé selon l'une quelconque des revendications 1 à 3 caractérisé en ce qu'il consiste
à quantifier les variations des k - 1 d'énergie sur des niveaux répartis autour d'un
niveau d'accroissement nul.
5. Procédé selon la revendication 4 caractérisé en ce que la sélection des parties d'énergie
s'effectue en recherchant dans le tableau des pentes l'une des pentes correspondant
aux niveaux de quantification en commençant par l'incrément de pente nulle d₀ qui
conduit, à partir d'un échantillon d'énergie k d'une trame, à une valeur d'énergie
la plus proche de celle de l'énergie de l'échantillon précédent k - 1.
6. Procédé selon l'une quelconque des revendications 1 à 5 caractérisé en ce que la détermination
des k - 1 variations d'énergie a lieu en application de l'algorithme de VITERBI.