Voyons comment configurer un synthétiseur de synthèse vocale ad hoc, local (hors ligne) en utilisant , piper-whistle et des tubes nommés. piper Pour configurer Piper sur un système basé sur GNU/Linux, je vais décrire une architecture générale utilisant des canaux nommés, qui est suffisamment simple pour permettre la synthèse vocale à l'échelle du système, avec un peu de configuration manuelle, l'aide de Piper. -sifflet et quelques compromis mineurs (c'est simple, mais il ne prend pas en charge le traitement vocal parallèle). Pour commencer, récupérons le dernier piper autonome construit à partir de son ( au moment de la rédaction de ces lignes). Après avoir téléchargé l'archive compressée, nous allons créer une structure de répertoires pour notre configuration Piper. Le répertoire racine doit se trouver dans avec les sous-répertoires suivants : référentiel hébergé sur github 2023.11.14-2 /opt/wind (hébergera le piper construit) /opt/wind/piper (contiendra les canaux nommés) /opt/wind/channels Après la décompression, l'exécutable piper devrait être disponible sur , ainsi que les bibliothèques qui l'accompagnent et . /opt/wind/piper/piper espeak-ng-data Pour gérer les modèles vocaux utilisés par Piper, je recommanderais d'utiliser Piper-Whistle, un utilitaire de ligne de commande écrit en python, qui facilite le téléchargement et la gestion des voix. Vous pouvez obtenir le dernier fichier de roue sur sa page de version ou . Après avoir installé le fichier wheel, récupérons une voix pour générer de la parole. Mettons d'abord à jour la base de données en appelant . Pour le discours anglais, j'aime bien la voix féminine appelée alba. En utilisant Whistle, nous pouvons obtenir la liste de toutes les voix anglaises (GB) disponibles en utilisant . La voix est à l'index 2. Donc, pour installer, appelez simplement . gitlab github piper_whistle -vR piper_whistle list -l en_GB -i 2 piper_whistle install en_GB 2 Ensuite, créons les canaux nommés nécessaires. La structure résultante ressemblera à ceci : (accepte la charge utile JSON) /opt/wind/channels/speak (lu par Piper) /opt/wind/channels/input (écrit par Piper) /opt/wind/channels/ouput Pour créer un canal nommé, vous pouvez utiliser la commande suivante : mkfifo -m 755 /opt/wind/channels/input Enfin, nous créons trois processus dans des shells séparés : tty0 : tail -F /opt/wind/channels/speak | tee /opt/wind/channels/input tty1 : /opt/wind/piper/piper -m $(piper_whistle path alba@medium) --debug --json-input --output_raw < /opt/wind/channels/input > /opt/wind/channels/output tty2 : aplay --buffer-size=777 -r 22050 -f S16_LE -t raw < /opt/wind/channels/output Le processus sur tty0 garantit que le tuyau reste ouvert, même une fois le traitement par piper ou terminé. De cette façon, nous pouvons mettre en file d’attente les requêtes TTS et ensuite les lire ou les enregistrer. aplay Puisque piper-whistle offre des fonctionnalités supplémentaires si vous utilisez la structure ci-dessus, nous pouvons désormais générer de la parole via . Sur les systèmes avec X11, vous pouvez générer une version parlée du texte dans votre presse-papiers via . piper_whistle speak "This is quite neat" piper_whistle speak "$(xsel --clipboard --output)"