cClaude.rocks ☕ Le blog

[Nouvelles technologies, sciences et coups de gueule…]

Menu
đŸ˜€ Ce billet a Ă©tĂ© Ă©ditĂ© le : 2021-01-07

Attention, ce billet est insuffisant pour configurer de maniùre satisfaisante la synthùse vocale de votre Linux, mais c’est une base qui peut vous aider dans vos propres recherches.

Vos commentaires sont les bienvenus



ඏ

Les solutions de synthĂšses vocale sous Linux sont plutĂŽt en retard comparĂ© Ă  ce que l’on trouve sous d’autres plateformes.

Sur le fond, il n’y a pas de raison, la plupart des solutions utilisĂ©es sur les autres plateformes Ă©tant open-source. D’oĂč mon hypothĂšse, c’est un problĂšme d’intĂ©gration et de configuration.

AprÚs un temps de recherche non négligeable, je suis arrivé à une qualité trÚs respectable en utilisant les paquets existant dans les dépÎts standard. Voici, les informations nécessaires pour utiliser la synthÚse vocale sous Linux.

festival

Voici un synthétiseur vocal (ou TTS, pour Text To Speech) qui semble prometteur, mais qui ne supporte pas encore la langue française.

Pour l’installer :

sudo apt install festival festvox-kallpc16k
  • festival est un synthĂ©tiseur vocal,
  • festvox-kallpc16k une voix pour festival, attention le français ne fait pas partie des langues supportĂ©es pour le moment.

Festival s’utilise comme suit :

echo "Hello, I speak English" | festival --tts

eSpeak et Mbrola

Pour le couple eSpeak-Mbrola, vous aurez besoin des paquets suivant :

sudo apt install espeak mbrola mbrola-en1 mbrola-fr1 mbrola-fr4
  • espeak est un synthĂ©tiseur vocal multi-langue, que l’on utilisera uniquement pour la conversion phonĂ©tique,
  • mbrola est un synthĂ©tiseur vocal multi-langue qui offre un meilleur rendu que espeak mais qui ne prend pas en charge la conversion phonĂ©tique. Ce synthĂ©tiseur et les voix françaises prĂ©sentent dans les dĂ©pĂŽts standards sont depuis dĂ©but 2019 sous licence GNU GPL3 Afero,
  • mbrola-en1 une voix masculine pour l’anglais (utile seulement ici pour la comparaison),
  • mbrola-fr1 une voix masculine pour le Français,
  • mbrola-fr4 une voix fĂ©minine pour le Français.

La commande eSpeak permet de faire « parler » votre ordinateur trÚs simplement :

espeak "Hello, I speak English"

Pour de l’anglais n’est pas si mal, bien que le rĂ©sultat soit une caricature de voix de robot. Par contre si on met du français, c’est catastrophique :

espeak "salut ceci est du français" # Exemple à ne pas suivre


Il faudra donc préciser la langue à un moment donné.

Changeons de modÚle de voix :

espeak -v mb-en1 "Hello, I speak English"

En anglais, c’est dĂ©jĂ  beaucoup plus naturel comme voix.

Passons au Français :

espeak -v mb-fr1 "Bonjour, je parle français."

Il y a un gros progrĂšs, c’est au moins comprĂ©hensible, mais on doit pouvoir faire mieux, non ?

Il faut savoir qu’il existe diffĂ©rentes solutions pour faire du TTS sur Linux. Ces solutions ne sont pas forcĂ©ment concurrentes, et toute l’idĂ©e est quelque part de pouvoir standardiser la mĂ©thode d’appel. C’est ce que la suite de ce billet va montrer.

La commande eSpeak permet d’obtenir des phonĂšmes d’un texte donnĂ©e.

espeak -v fr "Bonjour, Ceci est un essai. Je parle français ?" -x -q

On peut mĂȘme adapter les phonĂšmes au synthĂ©tiseur :

espeak -v mb-fr4 "Bonjour, Ceci est un essai. Je parle français ?" -x -q

Du coup, on peut utiliser une séquence du type :

espeak -v mb-fr1 -q --pho --phonout=/tmp/phoneme.pho "Bonjour, Ceci est un essai. Je parle français ?"
mbrola -t 1.7 -e -C "n n2" /usr/share/mbrola/fr1/fr1 /tmp/phoneme.pho /tmp/bonjour.wav # converti les phonĂšmes en fichier son
aplay /tmp/bonjour.wav # joue le son.

La premiÚre commande génÚre les phonÚmes, la seconde construit un fichier son et la troisiÚme joue le son.

Voici comment on peut faire la mĂȘme chose en utilisant un pipeline de commandes consistant Ă  prendre le rĂ©sultat de la commande prĂ©cĂ©dente comme valeur d’entrĂ©e de la suivante.

espeak -v mb-fr1 -q --pho "Bonjour, Ceci est un essai. Je parle français ?" # utilise la sortie standard

Du coup, on peut faire en 2 lignes :

espeak -v mb-fr1 -q --pho "Bonjour, Ceci est un essai. Je parle français ?" | mbrola -t 1.7 -e -C "n n2" /usr/share/mbrola/fr1/fr1 - /tmp/bonjour.wav
aplay --file-type wav /tmp/bonjour.wav # force le type

Pour passer en un seul pipeline, on va utiliser une astuce de la commande mbrola consistant Ă  typer la sortie standard -.au.

espeak --pho -v mb-fr1 "Bonjour, Ceci est un essai. Je parle français ?" -q  | mbrola -t 1.5 -e -C "n n2" /usr/share/mbrola/fr1/fr1 - -.au | aplay

On peut changer la voix en utilisant :

espeak --pho -v mb-fr4 "Bonjour, Ceci est un essai. Je parle français ?" -q  | mbrola -t 1.5 -e -C "n n2" /usr/share/mbrola/fr4/fr4 - -.au | aplay

Ici on utilise eSpeak et Mbrola sans utiliser de fichier intermĂ©diaire, on verra plus loin un usage concret de ce type d’écriture.


pico2wave

pico2wave est une autre solution de TTS basĂ© sur l’algorithme « Hidden Markov Model » (HMM). Il s’agit de la solution gĂ©nĂ©ralement utilisĂ©e par les applications Android, l’installation se fait comme suit :

sudo apt install libttspico-utils

Et s’utilise :

pico2wave -l fr-FR -w /tmp/test.wav "Bonjour, je parle le français aussi bien que vous. Ou presque." && aplay /tmp/test.wav && rm /tmp/test.wav

Speech Dispatcher

Speech Dispatcher est un outil qui permet de choisir le module par défaut de votre systÚme pour la synthÚse vocale.

Speech Dispatcher offre un outil de configuration et d’aide au diagnostique. Bien qu’insuffisant en termes de possibilitĂ© de configuration spd-conf a le mĂ©rite de crĂ©er la structure de base.

spd-conf

La commande permettant de faire est spd-say :

spd-say "Bonjour, Ceci est un essai. Je parle français ?"

Le fichier de configuration de Speech Dispatcher pour l’utilisateur courant :

~/.config/speech-dispatcher/speechd.conf

Le fichier de configuration global que je vous dĂ©courage de modifier si vous n’avez pas de bonnes raisons :

/etc/speech-dispatcher/speechd.conf

On retrouve la mĂȘme hiĂ©rarchie dans ~/.config/speech-dispatcher/ et dans /etc/speech-dispatcher/.

Dans chacun de ces répertoires on trouvera un dossier modules, par exemple :

~/.config/speech-dispatcher/modules/pico-generic.conf
spd-say "Bonjour, Ceci est un essai. Je parle français ?"

Rédémarrer le service speech-dispatcherd

sudo systemctl restart speech-dispatcher.service

Références

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog