Hallo zusammen,
Jetzt, wo man die Stimme in Gladys anpassen kann, stelle ich euch Phonon TTS vor, eine Integration, die Gladys eine offline-Stimme gibt. Die Texte eurer Szenen „Spiele eine Benachrichtigung“ werden direkt auf eurer Gladys-Maschine synthetisiert, ohne Cloud-Dienst oder Abonnement. All das ist möglich dank der Open-Source-Modelle von Gradium, über die ich bereits hier gesprochen habe Service Gradium AI
Die Integration ist in der Beta (Version 0.1.x). Sie funktioniert bei mir, aber sie wurde auf wenigen Maschinen getestet: Es kann Bugs geben, und einige Dinge werden sich noch ändern. Vermeidet es vorerst, sie für kritische Ankündigungen (Alarmanlage, Sicherheit…) zu verwenden.
Der Ansatz
Seit Gladys 5.3 kann man die Stimme von Gladys auswählen, indem man eine externe Integration vom Typ „Stimme“ (TTS) installiert. Hier habt ihr eine, die
- lokal läuft, damit die gesprochenen Texte nicht aus dem Haus gelangen;
- ohne Internet funktioniert, sobald sie installiert ist;
- auch für einen Raspberry Pi recht leicht bleibt (siehe Tabelle).
Die Modelle Phonon von Gradium erfüllen diese drei Bedingungen. Es sind kleine Modelle (40 und 31 Millionen Parameter), die auf einem einfachen Prozessor laufen, ohne Grafikkarte.
Wie es funktioniert:
- Die Integration (ein Node.js-Container basierend auf dem SDK der Gladys-Integrationen) empfängt die Syntheser Anfragen von Gladys;
- sie steuert einen Untercontainer, das offizielle Bild
ptts-openai-servervon Gradium, das den Ton in MP3 generiert; - beim ersten Start lädt sie nur das Modell (~75 Mo) und die gewählte Stimme von Hugging Face herunter. Danach wird kein Internet mehr benötigt.
Was ihr auswählen könnt:
- 7 Modelle: Phonon 40m auf Französisch, Englisch, Deutsch, Spanisch, Portugiesisch und mehrsprachig, und Phonon 31m auf Englisch;
- 102 Stimmen aus dem Phonon-Katalog, die Originalstimme des Modells oder eine benutzerdefinierte Stimme, die in Gradium Studio erstellt oder geklont wurde.
Warum eine separate Website zum Testen der Stimmen?
bertrandda.github.io/gladys-phonon
Mit 102 Stimmen macht es keinen Sinn, zufällig aus einer Dropdown-Liste auszuwählen. Der Konfigurationsbildschirm von Gladys zeigt jedoch nur eine feste Liste an: Man kann dort keine Probe hören. Außerdem lädt die Integration nur die ausgewählte Stimme herunter, um Speicherplatz zu sparen. Das Ausprobieren der Stimmen eine nach der anderen in Gladys würde also jedes Mal ein Herunterladen erfordern.
Die Demo-Seite ermöglicht es:
- eine Probe jeder Stimme zu hören, die von Phonon 40m oder 31m ausgesprochen wird;
- nach Sprache und Geschlecht zu filtern oder nach einer Stimme zu suchen;
- den genauen Namen zu sehen, der in der Liste der Integration ausgewählt werden muss (unten auf jeder Karte).
Alle Stimmen funktionieren mit allen Modellen, aber sie klingen besser in ihrer eigenen Sprache.
Installation
Voraussetzungen
- Gladys 5.3 oder neuer
- etwa 1 GB Speicher und 150 MB Festplatte frei für den Sprachmotor
- für die 40m-Modelle: ein kostenloser Hugging Face-Account, auf dem Sie die Bedingungen des Modells akzeptieren (z. B. gradium/phonon-40m-fr; die Validierung erfolgt sofort), und ein Lese-Token. Phonon 31m (Englisch) benötigt keinen Account.
Schritte
- Ich habe die Integration noch nicht offiziell veröffentlicht, installiert sie also im Entwicklermodus (Integrationen › Integration installieren › Entwicklermodus), indem ihr
https://github.com/bertrandda/gladys-phononin die GitHub-Repository-URL einfügt. - Im Tab Konfiguration der Integration wählt ihr ein Modell aus (keines ist standardmäßig ausgewählt, und nichts wird heruntergeladen, bis ihr eines ausgewählt habt). Fügt dann den Hugging Face-Token ein, wählt die Stimme aus und speichert.
- Wartet auf den Status Bereit (Herunterladen, dann Starten des Motors).
- Macht Phonon TTS zur Stimme von Gladys: Integrationen › Künstliche Intelligenz › Stimme.
Vollständige Dokumentation: docs/fr.md
Erste Messungen
Der verwendete Indikator ist die Generierungsgeschwindigkeit: die Dauer der erzeugten Sprache geteilt durch die Rechenzeit.
| Maschine | Generierungsgeschwindigkeit |
|---|---|
| MacBook M5 | ×13: ein Satz von 5 s ist in weniger als einer halben Sekunde fertig |
| Raspberry Pi 4 | ×0,8: etwas langsamer als Echtzeit, es dauert etwa 6 s, um einen Satz von 5 s zu generieren |
Gladys wartet maximal 30 Sekunden auf eine Synthese. Auf einem Raspberry Pi 4 wird ein Text von mehr als ~20 s Sprache daher abgeschnitten, und nur sein Anfang wird ausgesprochen. Für kurze Benachrichtigungen ist das kein Problem. Mit einer leistungsfähigeren Maschine könnt ihr viel weiter gehen, auf meinem MacBook dauert die Ballade des Duells von Cyrano de Bergerac, ~52s Audio, ~4s.
Eine erste mögliche Verbesserung des Kerns für ein besseres Nutzererlebnis könnte sein, den Stream zwischen der externen Integration und Gladys zu ermöglichen und so den Audio-Start zu beschleunigen, während die Generierung parallel fortgesetzt wird.
Euer Feedback ist willkommen 
Das ist der Sinn dieser Beta! Um die Rückmeldungen vergleichen und untersuchen zu können, welche Maschinen das Modell am besten ausführen lassen, gebt bitte, wenn möglich, an:
Maschine und CPU: (z. B. Raspberry Pi 5 8 GB, Mini-PC Intel N100 16 GB, VM 2 vCPU…)
Phonon-Modell und Gewicht: (z. B. Phonon 40m · Französisch, q8)
Stimme:
Antwortzeit: (2 oder 3 Ergebnisse der Aktion „Stimme testen“, mit einem kurzen und einem langen Satz)
Gefühl (in den Szenen „Sprich über einen Lautsprecher“): (Qualität und Natürlichkeit der Stimme, Aussprache von Zahlen, Uhrzeiten und Eigennamen, Verzögerung, bis der Lautsprecher spricht, Bugs…)
Um die Antwortzeiten zu messen, gibt die Aktion Stimme testen im Konfigurations-Tab direkt die beiden Zahlen an (ihr werdet nichts hören). Zum Beispiel:
OK: 4,2 s Sprache (33 KB MP3) generiert in 5,2 s von Phonon 40m · Französisch → ×0,8
Bekannte Grenzen
- Ein Modell spricht nur eine Sprache (die des Modells oder die für das Mehrsprachige gewählte).
- Die Phonon-40m-Modelle sind unter der Lizenz CC BY-NC 4.0 (nur nicht-kommerzielle Nutzung).
Vielen Dank im Voraus für eure Tests!
Für diejenigen, die keine Maschine haben, um den Dienst auszuführen, wird bald ein weiterer Gradium-Dienst folgen, der über ihre Server läuft, ich werde darüber hier sprechen Service Gradium AI