je voulais lire un livre mais lire c'est dur, alors j'ai mis en place un lecteur d'écranpour le faire à ma place. les voix par défaut sur linux sont assez nulles, donc j'ai cherché mieux — voici cette histoire.
j'ai testé coqui-ai et piper. coqui-ai était trop lent pour être utilisable, donc je suis restée sur piper.
voici un échantillon de la voix coqui-ai :
et un échantillon de la voix piper :
note que ce n'est absolument pas safeà utiliser au quotidien. c'est inadapté si tu dépends de ton text-to-speech pour ne pas casser.
comment ?
prérequis et premiers tests
d'abord il te faut des outils text-to-speech sur ton système. en général installer les paquets espeak-ng orca devraitsuffire — ils tirent toutes les dépendances requises et s'intègrent avec les environnements de bureau populaires.
ensuite, récupère une release de piper et une voix depuis la page des releases piper. prends les binaires amd64 ou arm64selon ton architecture et l'une des voix. la première release contient les liens de téléchargement des voix. j'ai pris en-us-amy-lowparce que c'était la première.
décompresse la release piper et la voix où tu veux ; j'ai mis les deux dans le même dossier. les prérequis sont bons. on supposera que tu as aussi pris en-us-amy-low pour les commandes plus bas — sinon, remplace par celle que tu as choisie.
vérifie que speech-dispatcher fonctionne :
idéalement tu obtiens une sortie audio (avec une voix horrible).
teste piper depuis le dossier où tu as tout extrait :
echo "it's that shrimple" \
| ./piper --model en-us-amy-low.onnx --output_file - \
| paplay--output_file -dit à piper d'envoyer l'audio brut sur stdout, et on pipe ça dans paplay (la version pulseaudio de aplay) — ça devrait marcher sur la plupart des distros, même sur pipewire.
si ces commandes ont marché, on passe au câblage. crée un nouveau module pour speech-dispatcher :
ajoute ces deux lignes :
GenericExecuteSynth "echo '$DATA' | /home/user/Documents/piper/piper --model /home/user/Documents/piper/en-us-amy-low.onnx --output_raw | $PLAY_COMMAND"
AddVoice "en" "FEMALE1" "en_UK/apope_low"la première ligne est la commande piper du dessus avec des variables plutôt que des valeurs en dur. $DATA est rempli par speech-dispatcher et $PLAY_COMMANDtombe sur aplay/paplay sur la plupart des systèmes. ce qui t'importe, c'est les chemins absolusvers l'exécutable piper et le modèle de voix — remplace-les.
la deuxième ligne apprend la voix à speech-dispatcher pour qu'on puisse la sélectionner plus tard.
tu peux passer par une interface graphique comme orca --setup pour choisir piper-genericcomme moteur et la nouvelle voix. ou bien le faire à l'échelle système en éditant :
ajoute ces trois lignes :
DefaultVoiceType "FEMALE1"
DefaultLanguage "en"
DefaultModule piper-genericsauvegarde et quitte.
pour finir
c'est à peu près tout — en supposant que toutes les briques de linux décident de coopérer.
relance spd-say pour confirmer :
maintenant tout ce qui s'intègre avec speech-dispatcher (donc pas mal de choses sur linux — firefox, calibre, tts système-wide) utilise ton nouveau module piper. enfin plus de voix microsoft sam.
la suite ?
pour rendre tout ça vraiment utilisable il reste quelques trucs à régler :
- ajuster la vitesse d'élocution
- fiabiliser le setup
- packager tout ça comme un paquet speech-dispatcher installable via un gestionnaire de paquets
et globalement peaufiner ce post.
bref, mercipour ton temps — j'espère que ça aura été utile.