Comparaison de synthèses vocales françaises

Voici une petite comparaison des différentes synthèses vocales que j’ai testées et qui sont les plus intéressantes. Mon but est d’obtenir une voix compréhensible avec un effet “robotique” voire légèrement métallique (un peu à la Wall-E).

    • Espeak + Mbrola + Sox

      Espeak + Mbrola + Sox

Cette solution consiste à créer un fichier de phonèmes avec Espeak, le transformer en fichier audio avec la voix demandée avec Mbrola puis le jouer avec Sox en lui appliquant des effets.
Mbrola permet d’obtenir des voix françaises très claires, avec des intonations (par exemple lorsque l’on pose une question ou que l’on s’exclame). Sox permet, quant à lui, d’appliquer de multiples effets, notamment le trémolo et l’écho qui apportent l’effet robotique recherché.
Petit bémol, cette solution oblige d’installer Espeak, Mbrola et Sox et d’écrire un fichier Shell si l’on souhaite l’exécuter en Java.

    • MaryTTS

      MaryTTS - Femme

      MaryTTS - Homme

MaryTTS est une librairie Java qui est composée d’un serveur qui s’occupe de tout le traitement de transformation “Text-to-speech” et de classes clientes qui requêtent le serveur. Il est possible de faire tourner tout ça en standalone sans avoir besoin de démarrer le serveur séparément mais je n’ai pas réussi à le faire fonctionner.
Les voix françaises sont assez claires mais mangent parfois la fin de certains mots ce qui rend certaines phrases incompréhensibles. Le point positif est qu’il est très facile d’appliquer l’effet “robotique” qui est un effet directement accessible sans avoir besoin de faire des paramétrages dans tous les sens.

    • Web Speech API (via Chrome)

      Web Speech API

Sous Chrome, la synthèse vocale de la Web Speech API utilise la synthèse vocale de Google. Pour l’utiliser, j’ai été obligé de passer par des Web Sockets pour intéragir avec une page Javascript sous Chrome (exemple dans ce poste).
La voix obtenue est une voix de femme, très claire, voire trop parfaite et sexy pour ce que je souhaite faire. En effet, une fois la synthèse vocale demandée, c’est Chrome qui prend le contrôle et qui lit le résultat audio obtenu. Il n’est donc pas possible de lui appliquer l’effet “robotique” recherché.

Pour conclure, la solution “MaryTTS” aurait été la plus appropriée pour mon projet développé en Java, mais le fait que certaines fin de phrases soient mangées me rebute un peu. Peut-être qu’il y a moyen d’améliorer cela car cette librairie est bien fournie et il possible de faire énormément de choses avec, mais je n’ai pas eu le temps (ou le courage ?) d’approfondir. Je pense donc m’orienter vers la solution “Espeak-Mbrola-Sox” avec laquelle j’arrive à obtenir l’effet souhaité. De plus, avec les nombreux paramétrages possibles entre Espeak, Mbrola et Sox, l’échantillon des voix synthétisables est assez vaste.

PS : Pour les impatients, avant que je fasse un tutoriel plus poussé pour expliquer l’installation des différents outils et voix, voici la ligne de commande pour obtenir la voix de robot avec Espeak, Mbrola et Sox sous Ubuntu :

espeak -v mb-fr4 -q -s150  --pho "Je suis une voix de synthèse en cours d'expérimentation. Arrives-tu à me comprendre ?" | mbrola  -t 1.2 -f 1.3  -e -C "n n2" /usr/share/mbrola/voices/fr4 - -.au | play  -t au  - pitch 200 tremolo 500  echo 0.9 0.8 33 0.9

Nicolas

Développeur JAVA, je suis passionné de robotique depuis quelques années, notamment tout ce qui concerne la partie programmation (vision artificielle, synthèse et reconnaissance vocale, intelligence artificielle, ...).

8 commentaires :

  1. Je suis bluffé par le niveau de réalisation déjà atteint. Un grand Bravo et merci également car tes articles me sont d’une grande utilité pour démarrer un projet quasi-similaire (je ne savais pas trop par où commencer pour réaliser un robot avec Java). Bonne continuation et n’hésites pas à nous faire partager l’avancement de ton projet.

    • Merci pour tes encouragements.
      Actuellement, j’ai un peu de mal à trouver du temps pour me consacrer à mon projet mais je pense bientôt faire un article sur la détection de mouvements.
      Toi non plus, n’hésite pas à partager tes trouvailles d’autant plus que ton projet est en Java.

      Nicolas

  2. salut, je suis très impressionné par le travail abbatu, mais je profite poser une petite question,moi j’utilise si_vox et sphinx4 français pour mon projet en java FX,mon seul problème je n’arrive pas à exécuter mon .jar mais si j’enlève ces deux librairie tout marche,comment corriger cela.au fait moi je veux réaliser une application desktop d’abord. Aidez moi svp. merci de me répondre si possible

    • Bonjour,

      As-tu une exception au lancement de ton programme ? Si oui, pourrais-tu la mettre en commentaire ?
      As-tu bien ajouté les 2 librairies dans ton classpath au lancement de ton programme ?
      Je n’ai jamais utilisé JavaFX. Il se peut que cela soit dû à une spécificité de JavaFX. Mais sans plus d’information, je ne pourrais pas t’aider.

      Nicolas

  3. Bonjour, je n’ai pas d’exception, le programme marche bien quand j’utilise l’IDE intellij idea, mais c’est juste au niveau du build que ça cloche. C’est vrai cela pourrait être dû à java FX.je vais essayer java simplement, au cas où ça marche pas, je reviens. merci de m’avoir repondu

  4. Je rapel que je suis sur windows 8 64bit, jre1.8

  5. bonjour, enfin j’ai puis résoudre le problème côté SI_VOX, j’ai mis le dossier donnée dans le même répertoire que le .jar exporté et ça marche.merci

Répondre à Cédric Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *