Bonjour à tous,
Maintenant qu’on peut personnaliser la voix dans Gladys, je vous présente Phonon TTS, une intégration qui donne à Gladys une voix hors ligne. Les textes de vos scènes « Jouer une notification » sont synthétisés directement sur votre machine Gladys, sans service cloud ni abonnement. Tout ceci est possible grâce aux modèles Open source de Gradium dont j’ai déjà parlé ici Service Gradium AI
L’intégration est en beta (version 0.1.x). Elle fonctionne chez moi, mais elle a été testée sur peu de machines : il peut y avoir des bugs, et des choses vont encore changer. Évitez pour l’instant de l’utiliser pour des annonces critiques (alarme, sécurité…).
La démarche
Depuis Gladys 5.3, on peut choisir la voix de Gladys en installant une intégration externe de type « voix » (TTS). Ici vous en avez une qui
- tourne en local, pour que les textes prononcés ne sortent pas de la maison ;
- fonctionne sans Internet une fois installée ;
- reste assez légère même pour un Raspberry Pi (voir tableau).
Les modèles Phonon de Gradium remplissent ces trois conditions. Ce sont de petits modèles (40 et 31 millions de paramètres) qui tournent sur un simple processeur, sans carte graphique.
Comment ça fonctionne :
- l’intégration (un conteneur Node.js basé sur le SDK des intégrations Gladys) reçoit les demandes de synthèse de Gladys ;
- elle pilote un sous-conteneur, l’image officielle
ptts-openai-serverde Gradium, qui génère l’audio en MP3 ; - au premier lancement, elle télécharge depuis Hugging Face uniquement le modèle (~75 Mo) et la voix choisis. Ensuite, plus besoin d’Internet.
Ce que vous pouvez choisir :
- 7 modèles : Phonon 40m en français, anglais, allemand, espagnol, portugais et multilingue, et Phonon 31m en anglais ;
- 102 voix du catalogue Phonon, la voix d’origine du modèle, ou une voix personnalisée créée ou clonée dans Gradium Studio.
Pourquoi un site à part pour tester les voix ?
bertrandda.github.io/gladys-phonon
Avec 102 voix, choisir au hasard dans une liste déroulante n’a pas de sens. Or l’écran de configuration de Gladys n’affiche qu’une liste fixe : on ne peut pas y écouter d’extrait. De plus, l’intégration télécharge seulement la voix sélectionnée, pour économiser le disque. Essayer les voix une par une dans Gladys demanderait donc un téléchargement à chaque fois.
La page de démonstration permet de :
- écouter un extrait de chaque voix, prononcé par Phonon 40m ou 31m ;
- filtrer par langue et par genre, ou chercher une voix ;
- voir le nom exact à choisir dans la liste de l’intégration (en bas de chaque carte).
Toutes les voix fonctionnent avec tous les modèles, mais elles sonnent mieux dans leur propre langue.
Installation
Prérequis
- Gladys 5.3 ou plus récent
- environ 1 Go de mémoire et 150 Mo de disque libres pour le moteur vocal
- pour les modèles 40m : un compte Hugging Face gratuit, sur lequel vous acceptez les conditions du modèle (par exemple gradium/phonon-40m-fr ; la validation est immédiate), et un token en lecture. Phonon 31m (anglais) n’a pas besoin de compte.
Étapes
- Je n’ai pas encore officiellement lancé l’intégration donc installez-la donc en mode développeur (Intégrations › Installer une intégration › Mode développeur) en collant
https://github.com/bertrandda/gladys-phonondans l’url du dépôt GitHub. - Dans l’onglet Configuration de l’intégration, choisissez un modèle (aucun n’est sélectionné par défaut, et rien n’est téléchargé tant que vous n’en avez pas choisi un). Collez ensuite le token Hugging Face, choisissez la voix et enregistrez.
- Attendez l’état Prêt (téléchargement, puis démarrage du moteur).
- Faites de Phonon TTS la voix de Gladys : Intégrations › Intelligence artificielle › Voix.
Documentation complète : docs/fr.md
Premières mesures
L’indicateur utilisé est la vitesse de génération : la durée de parole produite divisée par le temps de calcul.
| Machine | Vitesse de génération |
|---|---|
| MacBook M5 | ×13 : une phrase de 5 s est prête en moins d’une demi-seconde |
| Raspberry Pi 4 | ×0,8 : un peu plus lent que le temps réel, il faut environ 6 s pour générer une phrase de 5 s |
Gladys attend une synthèse 30 secondes au maximum. Sur un Raspberry Pi 4, un texte de plus de ~20 s de parole sera donc coupé, et seul son début sera prononcé. Pour des notifications courtes, ça passe sans problème. Avec une machine plus puissante vous pouvez aller bien plus loin, sur mon macbook la balade du duel de Cyrano de Bergerac, ~52s d’audio généré en ~4s.
Une première amélioration possible du core pour un meilleur ressenti utilisateur pourrai être d’autoriser le stream entre l’intégration externe et Gladys et ainsi avoir l’audio qui se lance rapidement tout en continuant la génération en parallèle.
Vos retours sont les bienvenus 
C’est le but de cette beta ! Pour pouvoir comparer les retours et étudier quelles machines permette le mieux de faire tourner le modèle, merci d’indiquer si possible :
Machine et CPU : (ex. Raspberry Pi 5 8 Go, mini-PC Intel N100 16 Go, VM 2 vCPU…)
Modèle Phonon et poids : (ex. Phonon 40m · Français, q8)
Voix :
Temps de réponse : (2 ou 3 résultats de l'action « Tester la voix », avec une phrase courte et une phrase longue)
Ressenti (dans les scène `Parler sur une enceinte`) : (qualité et naturel de la voix, prononciation des nombres, des heures et des noms propres, délai avant que l'enceinte parle, bugs…)
Pour mesurer les temps de réponse, l’action Tester la voix de l’onglet Configuration donne directement les deux chiffres (vous n’entendrez rien). Par exemple :
OK : 4,2 s de parole (33 Ko de MP3) générées en 5,2 s par Phonon 40m · Français → ×0,8
Limites connues
- Un modèle ne parle qu’une langue (celle du modèle, ou celle choisie pour le multilingue).
- Les modèles Phonon 40m sont sous licence CC BY-NC 4.0 (usage non commercial uniquement).
Merci d’avance pour vos tests !
Pour ceux qui n’ont pas de machine pour faire tourner le service, une autre service Gradium passant par leurs serveurs suivra bientôt, j’en parlerai ici Service Gradium AI