kikiri-tts-german-wyoming
Docker app from Marco T's Kikiri TTS Repository
Overview
Readme
View on GitHubKikiri TTS German + Wyoming
![]()
Lokaler deutscher Text-to-Speech-Server auf Basis von Kikiri/Kokoro mit Wyoming-Unterstützung für Home Assistant. Das Projekt ist auf hochwertige deutsche Sprachausgabe und lokalen CPU-Betrieb ausgelegt und wurde unter anderem auf einem Intel N100 getestet.
Funktionen
- Deutsche neuronale TTS-Ausgabe
- Wyoming-Anbindung für Home Assistant
- OpenAI-kompatible TTS-API
- Standardstimmen
martinundvictoria - Unterstützung zusätzlicher kompatibler Stimmen
- Automatischer Download fehlender Modelle
- Modelle dauerhaft außerhalb des Docker-Images speicherbar
- CPU-Betrieb ohne dedizierte GPU
- Deutsche Textnormalisierung
- Stabiler Non-Streaming-Betrieb
- Adaptive Audioausgabe für geringere wahrgenommene Latenz
- Optional konfigurierbare Synthesebeschleunigung mit tonhöhenneutraler Rückdehnung
- Konservativer Fallback, wenn eine kontinuierliche adaptive Ausgabe nicht sicher möglich ist
Home Assistant / Wyoming
Für Home Assistant wird der Container über die Wyoming-Integration eingebunden:
Host: IP-Adresse des Unraid-/Docker-Servers
Port: 10203
Home Assistant erkennt anschließend die vom Server angebotenen deutschen TTS-Stimmen.
Der Wyoming-Dienst soll sich als Kikiri TTS German + Wyoming identifizieren und nicht als generischer OpenAI-TTS-Dienst. Falls nach einem Update noch eine alte Bezeichnung angezeigt wird, die bestehende Wyoming-Integration in Home Assistant neu laden bzw. bei Bedarf neu hinzufügen.
Ports
| Port | Funktion |
|---|---|
10203/tcp |
Wyoming TTS für Home Assistant |
8881/tcp |
interner OpenAI-kompatibler TTS-Server |
Normalerweise muss nur Port 10203 veröffentlicht werden.
Stimmen und Modelle
Die Sprachmodelle sind absichtlich nicht Bestandteil des Git-Repositories oder Docker-Images. Beim Start werden konfigurierte fehlende Modelle heruntergeladen und unter /app/models gespeichert.
Standardmäßig stehen zur Verfügung:
martinvictoria
Für dauerhafte Speicherung sollte /app/models als Volume eingebunden werden, beispielsweise unter Unraid:
/mnt/user/appdata/kikiri-tts-german-wyoming/models -> /app/models
Zusätzliche Stimmen
Weitere kompatible Kikiri-/Kokoro-Stimmen können über KOKORO_EXTRA_VOICES ergänzt werden:
name|huggingface-repository|model-datei|voice-datei
Mehrere Definitionen werden mit ; getrennt.
Beispiel Bernd:
bernd|kikiri-tts/kikiri-german-bernd|kokoro_german_bernd.pth|bernd.pt
Beispiel Thorsten:
thorsten|Thorsten-Voice/Kokoro|model.pth|voices/thorsten.pt
Danach die gewünschten Stimmen beispielsweise konfigurieren als:
KOKORO_VOICES=martin,victoria,bernd,thorsten
KOKORO_PRELOAD=martin,victoria,bernd,thorsten
Kompatible Stimmen können außerdem manuell als eigener Modellordner bereitgestellt werden:
models/
└── meine_stimme/
├── model.pth
└── voice.pt
Modell und Voicepack müssen zur verwendeten Kikiri-/Kokoro-Architektur kompatibel sein. Bei einer auf einem eigenen Modell feinabgestimmten Stimme reicht das Voicepack allein nicht aus.
Adaptive Ausgabe und Synthese-Speed
Die optimierte Ausgabe kann Audio bereits wiedergeben, während nachfolgendes Audio weiter synthetisiert wird. Die Planung verwendet verfügbare Audiodaten und konservative Sicherheitsreserven; wenn eine kontinuierliche Ausgabe nicht sicher erscheint, muss auf den stabilen Fallback zurückgegriffen werden.
KIKIRI_TTS_SYNTH_SPEED steuert die optionale Synthesebeschleunigung.
| Wert | Bedeutung |
|---|---|
1.00 |
Originalgeschwindigkeit und höchste Referenzqualität |
1.20 |
auf Intel N100 erfolgreich als schnellerer Home-Assistant-Kompromiss getestet |
1.00–1.25 |
vorgesehener Einstellbereich |
Dezimalwerte wie 1.175 sind zulässig. Bei Werten über 1.00 wird die schnellere Synthese anschließend tonhöhenneutral auf eine natürliche Wiedergabedauer zurückgedehnt. Der notwendige Stretch-Faktor wird aus den tatsächlichen Audiodauern bestimmt und nicht einfach aus dem eingestellten Speed abgeleitet.
1.20 ist keine allgemeine Empfehlung für jede CPU und jede Stimme. Bei hörbaren Qualitätsunterschieden sollte ein niedrigerer Wert verwendet werden. 1.00 bleibt die Qualitätsreferenz.
Umgebungsvariablen
Wichtige Einstellungen sind unter anderem:
KOKORO_THREADS=4
KOKORO_PRELOAD=martin,victoria
KOKORO_VOICES=martin,victoria
KOKORO_EXTRA_VOICES=
WYOMING_TTS_CONCURRENT_REQUESTS=1
KIKIRI_TTS_SYNTH_SPEED=1.00
KIKIRI_TTS_MODE=adaptive ist der Standard für Wyoming. Mit KIKIRI_TTS_MODE=non_streaming wird die vollständige Antwort vor der Wiedergabe erzeugt. Die HTTP-API liefert weiterhin eine vollständige WAV-Datei. Ein ausdrücklich gesetzter HTTP-Request-Parameter speed ungleich 1.0 behält seine bisherige native Speed-Bedeutung; normale Requests verwenden KIKIRI_TTS_SYNTH_SPEED mit Rückdehnung.
Die variable Synthesegeschwindigkeit wird beim Containerstart gelesen. Eine Änderung benötigt kein neues Image; unter Unraid den geänderten Container über Anwenden neu erstellen. Ungültige Werte werden mit einer Fehlermeldung abgelehnt. Es wird immer nur ein Synthese-Worker verwendet; HTTP und Wyoming teilen sich die geladenen Modelle. Die adaptive RTF-Historie wird pro Speed und Stimme geführt und nach dem Neuerstellen eines Containers konservativ neu aufgebaut.
Docker Build
docker build -t kikiri-tts-german-wyoming:latest .
Docker Start
docker run -d \
--name kikiri-tts-german-wyoming \
--restart unless-stopped \
-p 10203:10203 \
-v /mnt/user/appdata/kikiri-tts-german-wyoming/models:/app/models \
-e KOKORO_THREADS=4 \
-e KOKORO_PRELOAD=martin,victoria \
-e KOKORO_VOICES=martin,victoria \
-e KIKIRI_TTS_SYNTH_SPEED=1.00 \
ghcr.io/marco-taylor/kikiri-tts-german-wyoming:latest
Für Unraid empfiehlt sich die Installation über Community Applications, sobald die aktuelle Version veröffentlicht ist.
Intel N100
Das Projekt wurde auf einem Intel N100 mit vier CPU-Kernen praktisch getestet. Für diesen Rechner ist KOKORO_THREADS=4 ein sinnvoller Ausgangspunkt.
Die Qualitätsreferenz ist:
KIKIRI_TTS_SYNTH_SPEED=1.00
Für geringere Latenz wurde außerdem erfolgreich mit Home Assistant getestet:
KIKIRI_TTS_SYNTH_SPEED=1.20
Die tatsächliche Leistung hängt von Stimme, Textlänge und gleichzeitiger Systemlast ab.
Projektpflege und Image-Größe
Modelle, Test-WAVs, Benchmarks, lokale virtuelle Umgebungen und temporäre Entwicklungsartefakte gehören nicht in das Produktionsimage oder Git-Repository. Vor Releases sollten .gitignore, .dockerignore, Docker-Layer und Runtime-Abhängigkeiten geprüft werden, damit nur für den Betrieb benötigte Daten ausgeliefert werden.
Credits und Upstream-Projekte
Kikiri TTS German + Wyoming ist ein unabhängiges Community-Projekt und baut auf mehreren Open-Source-Komponenten auf:
- Kikiri TTS – deutsche TTS-Grundlage
- Kokoro – zugrunde liegende TTS-Technologie
- Misaki – Grapheme-to-Phoneme-Verarbeitung
- Wyoming Protocol – Integration von Sprachdiensten mit Home Assistant
- wyoming_openai – Wyoming-/OpenAI-kompatible TTS-Anbindung
Modelle und Abhängigkeiten können eigenen Lizenz- und Nutzungsbedingungen unterliegen. Diese sind bei der Verwendung zusätzlicher Stimmen oder Modelle separat zu beachten.
Kikiri TTS German + Wyoming ist ein unabhängiges Community-Projekt und nicht mit Kikiri, Kokoro, Home Assistant oder Unraid verbunden oder von diesen offiziell unterstützt.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/marco-taylor/kikiri-tts-german-wyoming:latestRuntime arguments
- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Wyoming-Protokoll-Port für Home Assistant
- Target
- 10203
- Default
- 10203
- Value
- 10203
Persistenter Speicher für heruntergeladene Kikiri-Sprachmodelle
- Target
- /app/models
- Default
- /mnt/user/appdata/kikiri-tts-german-wyoming/models
- Value
- /mnt/user/appdata/kikiri-tts-german-wyoming/models
Anzahl der von Kokoro verwendeten CPU-Threads
- Target
- KOKORO_THREADS
- Default
- 4
- Value
- 4
Verfügbare Stimmen. Fehlende Modelle werden automatisch heruntergeladen.
- Target
- KOKORO_VOICES
- Default
- martin,victoria
- Value
- martin,victoria
Stimmen, die beim Start des TTS-Servers direkt in den Speicher geladen werden
- Target
- KOKORO_PRELOAD
- Default
- martin,victoria
- Value
- martin,victoria
Zusätzliche Stimmdefinitionen im Format name|repository|model|voice. Mehrere Stimmen werden durch Semikolon getrennt.
- Target
- KOKORO_EXTRA_VOICES
Maximale Anzahl gleichzeitig verarbeiteter Wyoming-TTS-Anfragen
- Target
- WYOMING_TTS_CONCURRENT_REQUESTS
- Default
- 1
- Value
- 1
Anzahl der OpenMP-CPU-Threads
- Target
- OMP_NUM_THREADS
- Default
- 4
- Value
- 4
Anzahl der MKL-CPU-Threads
- Target
- MKL_NUM_THREADS
- Default
- 4
- Value
- 4
Anzahl der OpenBLAS-CPU-Threads
- Target
- OPENBLAS_NUM_THREADS
- Default
- 4
- Value
- 4
Anzahl der NumExpr-CPU-Threads
- Target
- NUMEXPR_NUM_THREADS
- Default
- 4
- Value
- 4
1.00 bietet die originale/höchste Qualität. Werte über 1.00 können auf langsameren CPUs die Reaktionszeit reduzieren. Die Ausgabe wird anschließend tonhöhenneutral auf natürliche Wiedergabegeschwindigkeit zurückgedehnt. 1.20 wurde erfolgreich auf einem Intel N100 mit Home Assistant getestet. Empfohlener Bereich 1.00–1.20; Maximum 1.25. Dezimalwerte wie 1.175 sind zulässig.
- Target
- KIKIRI_TTS_SYNTH_SPEED
- Default
- 1.00
- Value
- 1.00