Salut tout le monde,
Je poste le synthétiseur vocal et le logiciel d'analyse en espérant qu'ils fonctionneront sans trop de problèmes chez vous. Je me suis aperçu que j'avais commencé de nouvelles versions de ces programmes il y a longtemps mais que je ne les avais jamais terminées. Le problème c'est que je n'ai plus les versions précédentes. J'ai donc dû remettre le nez dans le code source pour remettre le tout en état de marche mais je crains qu'il y ait des bugs qui n'existaient pas dans la version précédente. Si vous avez des problèmes n'hésitez pas à me demander.
Ce synthétiseur vocal est une réécriture après retro-ingénierie d'un vieux synthétiseur vocal pour le ST qui date de 1986 environ. J'ai passé un temps incalculable lorsque j'avais 16-17 ans à comprendre comment il fonctionnait à partir du code désassemblé. Après quelque temps j'ai réussi à avoir accès à quelques documentations scientifiques sur la synthèse vocale grâce à mon frère qui était alors à l'université. Cela m'a aidé à comprendre le fonctionnement du programme et à le réécrire intégralement. Il n'y a que les tables qui ont été conservées, quoique que légèrement modifiées dans certains cas.
Il s'agit d'un synthétiseur à formants (comme Klatt mais en plus simple), c'est-à-dire que la voix est synthétisée en modélisant physiquement le système vocal humain, par opposition aux synthétiseur à concaténation (comme Festival) qui se contentent de placer des échantillons les uns au bout des autres avec quelques transformations. L'avantage des synthétiseurs à formants c'est qu'ils utilisent très peu de mémoire et qu'ils sont très fléxibles. De nombreuses voix sont possibles en modifiant quelques paramètres. Les synthétiseurs à concaténation sont les plus courants aujourd'hui parce qu'ils produisent une voix généralement plus réaliste. Le problème c'est qu'ils demandent une grande quantité de travail pour fabriquer une voix et consomme beaucoup de mémoire par rapport à un synthétiseur à formants. Dans le cas de ce synthétiseur, la modélisation est rudimentaire mais suffisante pour obtenir une voix compréhensible.
La synthèse est effectuée en anglais mais on pourrait aussi la faire en français en ajoutant des tables de transcription phonétique. Cependant je ne ferai pas avec cette version. Je pense plutôt que je vais peut-être d'abord le réécrire en Java (parce qu'il est très rapide de développer en Java) et peut-être ensuite en C. De là quelqu'un pourra éventuellement l'optimiser pour un ordinateur Atari. Aujourd'hui les compilateurs C sont efficaces et il y a aura peu de travail à faire pour que ça tourne vite sur un Atari. Il faudra probablement juste une petite routine en assembleur de 100 à 200 lignes. Avec le DSP, on pourrait faire de la synthèse en temps réel sans problème : je pense qu'ils ne seraient pas utiliser à plus de 25-30 % au maximum. Le problème c'est que j'utilise beaucoup de multiplications et que tous les calculs sont actuellement effectués sur le 68030 qui n'aime justement pas beaucoup les multiplications (24 cycles si mes souvenirs sont bons) alors que le DSP lui les adore (2 cycles)
D'autre part il y a aussi un logiciel d'analyse. On peut aussi synthétiser des voix avec, mais en plus on peut les observer (signal et spectre). Je n'ai pas encore écris de documentation pour le programme d'analyse mais si vous ne comprenez pas comment cela fonctionne, demandez-moi. Ce programme est écris en GFA BASIC mais il utilise aussi des routines assembleur 68030 et DSP56001 pour l'affichage et le calcul du spectre. Vous devez vous placer en résolution monochrome 640*400 ou 640*480 pour l'utiliser (désolé).
Le synthétiseur vocal et le programme de test avec le code source:
Fichier joint : VOX.zip
Le programme d'analyse:
Fichier joint : ANALYSIS.zip
Les librairies utilitaires pour compiler (les memes que pour ScreenEye en fait):
Fichier joint : COMMON.zip
Voilà !
A+