Device Narrator
Un article de GuruMed.
Comment l'amiga pris la parole , par krabob
Le narrator.device est un programme de génération de synthése vocale intégré dans le systéme de l'amiga. La synthése vocale est l'art trés difficile de reproduire une voix compréhensible, phonéme par phonéme en générant des sons similaires. Ces fonctions ont été présentes jusqu'à la version 2.04 de l'OS.(Translator version 37.1, 1991) et disparait avec les premiéres version 3.x (a1200, a4000, 1992) pour des raisons contractuelles, car il était sous-traité par la société SoftVoice , ( qui a réalisé des versions pour C64 et mac dans les années 80. )
Cependant, Quiconque posséde les derniéres versions peut ré-installer tout ça sur des OS plus récents comme le OS3.9, ça fonctionne toujours. Ce n'est pas étonnant, car l'implémentation de cette fonctionnalité dans l'amigaOS est particuliérement réussie, et tient dans ces 3 fichiers:
- devs:narrator.device
- Le narrator device gére une pile de phrases à prononcer. On lui rajoute des phrases en entrée dans le device ou on lui spécicie la fréquence (note) de la voix, les channels audio à allouer ,des options d'informations a renvoyer en retour, et bien sur la phrase elle-même, qui est une chaine ASCII classique fini par un zero, mais... écrite en ARPABet. L'ARPABet est une version ASCII de l'écriture phonétique utilisés par les linguistes.
- Cette abstraction phonétique fait la force de ce device, car elle lui permet potentiellement de prononcer tout les accents !!
- libs:translator.library
- La translator.library ne fournit qu'une fonction, qui traduit une phrase écrite en anglais vers sa traduction en ARPABet. Sa facilité d'utilisation contraste avec sa puissance, en effet 700 régles de traductions sont utilisés pour permettre une lecture correcte des mots anglais, mais aussi des signes. '9' est traduit par 'nine' en phonétique, et l'intonation de la phrase est aussi traduite en ARPABet. A noter qu'il existe sur aminet des versions de substitution permettant d'autre accents par un outil de préférence.
- c:say
- Cette commande DOS permet juste la prononciation d'une phrase en anglais:
- > say "I am a good little doggy"
- Son code est trés minimal puisqu'elle contient juste un appel a la translator.library puis au narrator.device .
Les trésors cachés
Il est possible par option lors de la construction du message IO vers le device, de demander le retour d'informations en temps réel sur la phrase en train d'être prononcé (le narrator device s'utilise en asynchrone). Ainsi, on peut connaitre la largeur et la hauteur de le bouche virtuelle qui prononce la phrase, et rediriger cette information vers le visage d'un personnage animé par exemple. On peut également demander des évenements chaque fois qu'un mot commence à être prononcé.
Bon d'accord mais comment on programme ça ?
Il existe dans le developer CD un exemple particuliérement interessant puisque un .c contient des fonctions init et close générique pour utiliser le narrator.device et la translator.library. Inclure ce .c à votre projet est une bonne idée pour une intégration rapide.
