![]() ![]() |
De UC Berkeley EECS Dept. Un prédicteur linéaire utilise les observations passés du signal pour essayer de prédire le prochain échantillon du signal. La structure d'un tel filtre prédicteur est donné par le diagramme suivant ![]()
Le signal d'entré, x'(n) est
retardé d'un échantillon par l'opérateur
z-1.
L'opérateur F(z) est un filtre
dont la sortie y(n) est une estimée
de la valeur courante de x'(n).
Puisque ce bloc voit seulement une version retardée de
x'(n), sa sortie est donc une prédiction
(de x'(n)).
e(n) est l'erreur de la prédiction (ou
différence entre ce qui est prédit et la valeur réelle du signal).
Qualitativement, une prédiction linéaire exploite le fait
qu'un nouveau échantillon d'un signal n'est pas (habituellement) totalement
indépendant des échantillons précédents.
Cette prédiction capture cette dépendance entre échantillons.
Quand un prédicteur fonctionne bien, le signal d'erreur sera
composé d'échantillons faiblement corrélés entre eux.
Si l'entrée du prédicteur linéaire est le signal de parole
suivant,
alors le signal d'erreur est
qui n'est pas très intelligible. L'intelligibilté (ou l'information liée
à celle-ci), est donc lié à la corrélation existante entre les différents
échantillons du signal.
En fait, pour la parole, le prédicteur linéaire doit constamment changer et s'adapter à ce qui est dit. A cette fin, le signal d'entrée est divisé en segment de 20 ms (160 échantillons) et chaque segment est analysé pour fournir les coefficients d'un filtre prédicteur. Un opérateur nommée dans l'exemple ci-dessous "Burg's algorithm" utilise une des nombreuse méthode existante pour calculer les coefficients de ce filtre prédicteur tous les tranches de 20 ms. ![]() On peut verifier que l'hypothèse de l'intelligibilité d'un signal de parole est lié à la corrélation existant entres les échantillons en introduisant cette corrélation dans un signal aléatoire comme du bruit blanc et filtrer ce bruit avec l'inverse du filtre d'erreur de prédiction (et en changeant les paramètres de ce filtre tout les 20ms). Le résultat sera un signal de parole qui semble être chuchoté mais qui est néanmoins intelligible. Le bloc diagramme utilisé pour créer cette parole synthétique est le suivant ![]()
L'algorithme de Burg est utilisé pour analyser chaque bloc de 20ms de parole
mais maintenant les résultats de l'analyse sont chargés dans un "filtre en treillis
inverse" lequel implémente l'inverse du filtre précédent qui produit l'erreur
de prédiction.
Remarquer bien que puisque le résultat est intelligible, l'information
modelisant l'intelligibilité du signal de parole est presque résumé dans
les résultats (ou paramètres) estimés par l'algorithme de Burg. Donc,
un tel algorithme peut (et c'est souvent le cas) constitué le pre-traitement
d'un dispositif qui analyse/reconnait ou qui code (ou compresse) la parole.
L'effet chuchotement du signal de parole modélisé ci dessus, bien qu'intelligible, produit néanmoins un effet indésirable. Le problème ici est que l'excitation par du bruit blanc, ne correspond pas très bien à ce que font les cordes vocales humaines. Les cordes vocales humaines, qui fournissent un signal d'excitation dans la parole naturelle, vibrent à une fréquence qui dépend de l'orateur (différente si celui-ci est un homme ou une femme) et dépend de l'inflexion donné par l'orateur. Une manière simple pour essayer de reproduire l'effet des cordes vocales est d'utiliser une excitation sinusoïdale au lieu d'un bruit blanc. Le résultat est complètement inintelligible. En fait, dans ce cas, il n'y a tout simplement pas assez de richesse spectrale dans le signal sinusoidale pour qu'un filtrage quelconque donne ensuite un signal de parole réaliste. Une autre possibilité est d'utilisé une excitation qui est plus riche spectralement, donnée, par exemple, par une séquence d'impulsions périodiques, tel que: ![]()
Comme l'information d'intelligibilité est contenue dans les coefficients
produit par l'algorithme de Burg, nous pouvons manipuler la vitesse de
la parole en manipulant ces coefficients. Par exemple, si nous
utilisons chaque ensemble de coefficients pour reconstruire 40 ms de
parole plutôt que de 20 ms, le résultat est un signal de parole plus lent
Noter que l'on peut obtenir un débit de parole plus lent
en utilisant chaque échantillons deux fois (en recopiant
chaque échantillons) mais le résultat
est très différent, puisque la hauteur globale est décalé vers le bas par un facteur
de deux en plus d'avoir la parole ralentie.
Nous pouvons aussi accélérer le discour prononcé en utilisant chaque ensemble
de coefficients pour reconstruire 10 ms de parole plutôt que de 20 ms,
le résultat est un discours rapide
Notez que nous pourrions aussi obtenir un discours rapide en
éliminant des échantillons, mais le résultat
est très différent,
Finalement, on peut synthetisé la parole à partir
d'une excitation musicale
Dans ce cas, les premieres notes de Passio Domini nostri
par Arvo Part, produit un résultat particulièrement intéressant
Son, graphique et texte traduit de
|