Synthétiseur vocal eSpeak

eSpeak, écrit en C++, est un logiciel de synthèse vocale pour l'anglais et certaines autres langues, dont le français.
Il utilise une méthode de synthèse différente des autres moteurs libres de synthèse vocale, et a un son assez différent. Il n'est peut-être pas aussi naturel ou "fluide", mais certains trouvent l'articulation plus claire et plus facile à écouter sur de longues périodes.

Il peut être lancé en ligne de commande pour lire un texte depuis un fichier.

  • Comprend différentes voix, dont les caractéristiques peuvent être modifiées.
  • Peut produire une sortie vocale sous forme de fichier WAV.
  • Peut traduire un texte en codes de phonèmes, afin qu'il soit adapté en donnée d'entrée pour un autre moteur de synthèse vocale.
  • Plus de 40 langues sont comprises.
  • Taille compacte, le programme et ses données totalisent environ 350 ko.

Ce synthétiseur vocal est installé par défaut sur Ubuntu, si vous souhaitez l'utiliser sur une variante d'Ubuntu il vous suffira d'installer le paquet espeak.

Il suffit ensuite de donner votre texte en pâture à Espeak, soit par l'intermédiaire d'un fichier texte :

espeak -v fr -f texte.txt

soit directement en ligne de commande :

espeak -v fr "Votre texte à lire..."

ou encore par un "pipe" sur la sortie standard :

echo "Lis mon texte" | espeak -v fr

L'option -v définit la langue/voix à utiliser. D'autres options peuvent être utiles, comme l'option -s qui permet de définir le nombre de mots par minutes, ou -p qui règle la hauteur (grave/aigu) de la voix. Pour plus d'options :

espeak --help

Malheureusement, le rendu d'Espeak n'est pas exceptionnel. Il est possible d'obtenir de meilleurs résultats, notamment en le combinant avec Mbrola.

Combinaison MBROLA avec espeak

MBROLA ne fait pas directement la transformation de texte en voix. Il traite des fichiers de phonèmes. Une autre application, capable de décomposer du texte en phonème est donc nécessaire. Les voix de Mbrola donnent un rendu plus naturel que les voix de eSpeak (lesquelles sont très "robotiques"), d'où l'intérêt de combiner les deux. Si les bonnes Mbrola voix ont été installé vous pouvez les utiliser directement avec eSpeak:

espeak -v mb/mb-fr1 -f votre_fichier_texte

La voix féminine fr4 reste masculine si on n'utilise pas la commande mbrola.

Pour plus d'information sur les options disponibles :

man mbrola

Création de fichier avec phonème

On peut aussi traduire un texte en phonèmes, en passant à l'option -v les arguments mb/mb-fr1 (voix masculine) ou mb/mb-fr4 (voix féminine). On crée un fichier de phonème dans un format compatible avec Mbrola avec la commande:

espeak -v mb/mb-fr4 -f votre_fichier_texte --pho --phonout=bonjour.pho

Par exemple, le fichier qui contenait le mot bonjour, donne à la sortie le fichier bonjour.pho, qui suit :

; bO~Z'ur

b	65

o~	35	 0 94 20 95 40 96 59 97 80 99 100 99

Z	65

u	40	 0 117 80 109 100 109

R	65

Le fichier .pho (qui est un fichier texte éditable) comprendre sur chaque ligne : un phonème suivi de sa durée suivi éventuellement d'indications de hauteur.

Pour faire ensuite parler l'ordinateur, il suffit de lire les phonèmes avec MBROLA et de rediriger la sortie soit :

  • vers un lecteur audio :
    mbrola /usr/share/mbrola/voices/fr1 texte.pho -.au | aplay
  • vers un fichier wav :
    mbrola /usr/share/mbrola/voices/fr1 texte.pho texte.wav

Ou bien en une commande on peut aussi directement envoyer à Mbrola la sortie standard :

espeak -v mb/mb-fr1 -f votre_fichier_texte --pho | mbrola /usr/share/mbrola/voices/fr1 - -.au | aplay

Si vous recevez le message d'erreur "bt_audio_service_open: connect() failed: Connection refused (111)", enlevez le paquet bluez-alsa (support bluetooth audio).

Si vous avez lors du lancement une dizaine d'erreurs testant des périphériques bluetooth etc comme ceci :

ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started

Une première solution (peut être pas optimale ?) consiste alors à lancer espeak ainsi :

espeak -v en "Hello i am espeak" --stdout|paplay

(après avoir installé paplay via pulseaudio-utils : source)

Pour supprimer cette application, il suffit de supprimer son paquet. Selon la méthode choisie, la configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés. merci

Site officiel d'Espeak.


Contributeurs principaux : L'Africain

  • espeak.txt
  • Dernière modification: Le 08/08/2023, 23:39
  • par Benjamin Loison