This page is at least 12 years old !
|
Le synthétiseur
Le codage LPC est encore utilisé de nos jours pour la voix dans des applications ou la bande passante est la principale contrainte, et permet d'atteindre des débits descendant jusqu'à 1.2kbits/s, et ainsi de stocker environ 200 mots dans seulement 32ko. Pour atteindre un tel débit, le synthétiseur n'utilise pas les données représentant la forme de l'onde sonore (comme un simple fichier wav), mais des blocs de données représentant des trames de 25ms d'audio, contenant seulement les informations nécessaires pour reproduire la voix : l'énergie (amplitude), le pitch (fréquence), et les paramètres d'un filtre numérique d'ordre 10.
Pour produire le son, le synthétiseur dispose de deux oscillateurs internes, aussi appellés "sources d'excitation". Le premier est une sorte de DDS utilisant un "chirp ROM" interne qui contient les données produites par la voix d'une personne (différente selon les versions du synthétiseur). Lu tel quel, le son ressemble à un "eeeu" et est utilisé pour produire les sons voisés (voyelles par exemple). Pour gagner encore plus de place, les informations sont inscrites seulement si elles sont indispensables, il existe donc des tailles de trames différentes selon les informations nécessaires. Le synthétiseur est capable de reconnaître le type de trame au fur et à mesure qu'il lit les données. Il possède aussi une RAM interne pour stocker la dernière trame lue, afin de pouvoir la répéter si besoin (elle n'est pas relue).
Le synthétiseur sert aussi comme générateur d'horloge grâce à un circuit RC externe, et produit ainsi l'horloge pour le processeur (CPUCLK) et pour les ROMs (ROMCLK). La sortie analogique se fait sur les broches 11 et 12 (push-pull). Le processeur commande le synthétiseur en lui envoyant des codes 4 bits après avoir mis CS à l'état haut (codes qui ne correspondent pas du tout à ceux dans la doc du TMS5220), ceux utilisés dans la dictée magique sont:
La lecture du ROM se fait bit-par-bit grâce à l'utilisation de plusieurs commandes "8" afin de charger un registre interne 4 bits, puis de lire ce registre avec la commande "4". L'utilisation de ces commandes est détaillée dans la page traitant des ROMs. Une fois la lecture démarrée, le synthétiseur ne s'arrête de parler que lorsqu'il rencontre une trame avec énergie à 15. |