kikiri-tts-german-wyoming

kikiri-tts-german-wyoming

Docker app from Marco T's Kikiri TTS Repository

Overview

Lokaler deutscher Text-to-Speech-Server für Home Assistant auf Basis von Kikiri/Kokoro mit Wyoming-Unterstützung. Funktionen: • Deutsche Text-to-Speech-Ausgabe • Wyoming-Protokoll für Home Assistant • Stimmen Martin und Victoria • Automatischer Download fehlender Sprachmodelle • Persistente Speicherung der Modelle außerhalb des Containers • Unterstützung zusätzlicher Stimmen • Einstellbare CPU-Thread-Anzahl • OpenAI-kompatible TTS-API Fehlende Modelle werden beim Start automatisch heruntergeladen. Die Modelle werden persistent unter /app/models gespeichert und bleiben bei Container-Updates erhalten. Weitere Informationen und die Anleitung zum Hinzufügen zusätzlicher Stimmen befinden sich in der README auf GitHub.

Kikiri TTS German + Wyoming

Kikiri TTS

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 martin und victoria
  • 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:

  • martin
  • victoria

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

Unraid with Docker support. Network access is required for the initial download of voice models.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/marco-taylor/kikiri-tts-german-wyoming:latest
Last Updated2026-11-12
First Seen2026-09-28

Runtime arguments

Network
bridge
Shell
sh
Privileged
false

Template configuration

Wyoming-PortPorttcp

Wyoming-Protokoll-Port für Home Assistant

Target
10203
Default
10203
Value
10203
Kikiri-ModellePathrw

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
CPU-ThreadsVariable

Anzahl der von Kokoro verwendeten CPU-Threads

Target
KOKORO_THREADS
Default
4
Value
4
Installierte StimmenVariable

Verfügbare Stimmen. Fehlende Modelle werden automatisch heruntergeladen.

Target
KOKORO_VOICES
Default
martin,victoria
Value
martin,victoria
Vorgeladene StimmenVariable

Stimmen, die beim Start des TTS-Servers direkt in den Speicher geladen werden

Target
KOKORO_PRELOAD
Default
martin,victoria
Value
martin,victoria
Zusätzliche StimmenVariable

Zusätzliche Stimmdefinitionen im Format name|repository|model|voice. Mehrere Stimmen werden durch Semikolon getrennt.

Target
KOKORO_EXTRA_VOICES
Gleichzeitige TTS-AnfragenVariable

Maximale Anzahl gleichzeitig verarbeiteter Wyoming-TTS-Anfragen

Target
WYOMING_TTS_CONCURRENT_REQUESTS
Default
1
Value
1
OpenMP-ThreadsVariable

Anzahl der OpenMP-CPU-Threads

Target
OMP_NUM_THREADS
Default
4
Value
4
MKL-ThreadsVariable

Anzahl der MKL-CPU-Threads

Target
MKL_NUM_THREADS
Default
4
Value
4
OpenBLAS-ThreadsVariable

Anzahl der OpenBLAS-CPU-Threads

Target
OPENBLAS_NUM_THREADS
Default
4
Value
4
NumExpr-ThreadsVariable

Anzahl der NumExpr-CPU-Threads

Target
NUMEXPR_NUM_THREADS
Default
4
Value
4
TTS Synthesis SpeedVariable

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