En ce qui concerne la communication avec MBrola, notre serveur lance son exécution et
attend que celle-ci se termine pour informer Pure Data que le fichier sonore est accessible.
Les fonctions java suivantes nous permettent de réaliser cette tâche.
Choix du type de voix pour la génération sonore
MBrola permet d’utiliser différentes types de voix pour créer un fichier son à partir
d’un texte. Par exemple il est possible de choisir parmi plusieurs voix d’hommes ou plusieurs
voix de femmes. Nous avons jugé utile de permettre à l’utilisateur de choisir la voix désirée
directement dans Pure Data. Pour cela il lui suffit de spécifier le type de voix directement
dans le texte qu’il souhaite transformer. En plaçant entre crochet le nom correspondant à la
voix (fr1 à fr7) à la manière d’une option, celle-ci sera reconnue par le serveur qui va adapter
l’appel à MBrola de sorte que la voix utilisée soit la bonne. Bien sûr si l’utilisateur ne spécifie
aucune voix, c’est la voix par défaut qui est utilisée.
Option spécifiant que la voix 2 doit être utilisée
3 Transformation d’un texte en fichier sonore.
MBrola n’étant qu’un synthétiseur vocal, il prend en entrée des fichiers .pho et non des
fichiers texte.
Ces fichiers contiennent une série de phonèmes avec des paramètres telle que la hauteur, la
durée….
Notre second problème a donc été de trouver un moyen de faire cette conversion de manière
simple et rapide.
Nous avons trouvé sur le net un script perl Text2phone qui appel MBrola en lui passant les
phonèmes à synthétisé avec un peu de prosodie.
En modifiant ce fichier, nous avons maintenant un script text2phone qui prend en entrée un
fichier texte que le serveur java a sauvegardé sur le disque sous le nom temp.txt et qui nous
donne un fichier temp.wav.
Après des tests, nous nous sommes rendu compte que le fichier de sortie était en 16000Hz.
Ce qui faisait que Pure Data jouait ce fichier trop vite puisqu’il le lisait en 44100Hz.
Nous avons donc modifié un petit peu le serveur pour qu’il lance après la production du
fichier temp.wav le fichier temp2.wav qui lui est en 44100Hz.
Pour cela nous utilisons un utilitaire présent sous linux qui permet de faire des conversions
entre fichiers sonore : SOX. Ce dernier donne le signal au serveur java
//Lancement de MBrola via le script text2phone
Process proc=Runtime.getRuntime().exec("perl ./text2phone "+option+" temp.txt");
//Attente de la fin de l’execution de MBrola
proc.waitFor();