All apps · 0 apps
moonshine-stt-wyoming
Docker app from Ellenbogen's Repository
Overview
Readme
View on GitHubMoonshine STT Wyoming
Lokale, CPU-basierte Speech-to-Text-Erkennung für Home Assistant über das Wyoming-Protokoll, basierend auf der offiziellen Moonshine Voice Runtime.
Das Projekt ist für Linux amd64 ausgelegt und wurde mit
Deutsch / small-streaming-de auf einem Intel N100 praktisch getestet.
Standardkonfiguration: small-streaming-de · Deutsch · 1 Thread · TCP-Port 10300
Das Docker-Image ist öffentlich über GHCR verfügbar. Das Projekt wurde für Unraid Community Applications eingereicht; bis zur Aufnahme kann das enthaltene Unraid-Template verwendet werden.
Docker-Image: ghcr.io/marco-taylor/moonshine-stt-wyoming:latest
Funktionen
- lokale Spracherkennung ohne externen STT-Dienst
- direkte Anbindung an Home Assistant über Wyoming
- CPU-only – keine GPU erforderlich
- für Intel N100 geeignet
- persistente Modelle außerhalb des Containers
- automatischer Download ausschließlich des ausgewählten fehlenden Modells
- 13 registrierte Streaming-Modelle für 8 Sprachen
- schreibgeschütztes Container-Root-Dateisystem im Unraid-Template
- keine Weboberfläche und keine Cloud-Anmeldung erforderlich
Installation unter Unraid
Nach der Aufnahme in Community Applications kann die App direkt über den
Unraid-CA-Katalog installiert werden. Bis dahin steht das Template im Repository unter
templates/moonshine-stt-wyoming.xml zur Verfügung.
Empfohlene Standardwerte:
| Einstellung | Wert |
|---|---|
| Wyoming Port | 10300/TCP |
| Modell | small-streaming-de |
| Sprache | de |
| Auto Download | 1 |
| Threads | 1 |
| Modellordner | /mnt/user/appdata/moonshine-stt-wyoming/models |
Beim ersten Start wird das ausgewählte Modell heruntergeladen und anschließend im
persistenten Modellordner wiederverwendet. Vor der Installation prüfen, ob Host-Port
10300 bereits von einem anderen Wyoming-Dienst verwendet wird. Einen vorhandenen
Dienst nicht stoppen; bei Bedarf einen anderen freien Host-Port verwenden.
Eine ausführlichere Beschreibung befindet sich in der Unraid-Installationsanleitung.
Home Assistant verbinden
In Home Assistant:
- Einstellungen → Geräte & Dienste → Integration hinzufügen
- Wyoming Protocol auswählen.
- Die LAN-IP des Unraid-Servers eintragen.
- Port 10300 eintragen.
- Moonshine anschließend als STT-Dienst in der gewünschten Assist-Pipeline auswählen.
Die Sprache der Assist-Pipeline muss zur Sprache des ausgewählten Moonshine-Modells passen. Für erste Versuche empfiehlt sich eine separate Assist-Pipeline, damit eine bestehende Sprachkonfiguration unverändert bleibt.
Modelle und Sprachen
Die Runtime enthält einen festen Katalog mit 13 Streaming-Modellen für:
Arabisch · Deutsch · Englisch · Spanisch · Japanisch · Tagalog · Vietnamesisch · Chinesisch
Für Deutsch ist die Standardkonfiguration:
MOONSHINE_MODEL=small-streaming-de
MOONSHINE_LANGUAGE=de
Optional steht auch tiny-streaming-de zur Auswahl. In der aktuellen Projektversion
wurde small-streaming-de praktisch getestet. Die weiteren registrierten Modelle
sind strukturell unterstützt, wurden von diesem Projekt jedoch nicht in gleichem Umfang
praktisch validiert.
Der vollständige Katalog mit Modell-IDs und Quellen befindet sich unter Modelle und Sprachen.
Docker / GHCR
Das veröffentlichte Image kann auf Linux amd64 direkt aus GHCR gestartet werden:
mkdir -p models
docker pull ghcr.io/marco-taylor/moonshine-stt-wyoming:latest
docker run -d \
--name moonshine-stt-wyoming \
--restart unless-stopped \
--read-only \
--cap-drop ALL \
--security-opt no-new-privileges \
--user "$(id -u):$(id -g)" \
--tmpfs /tmp:rw,nosuid,size=16m \
--mount "type=bind,src=$PWD/models,dst=/app/models" \
--publish 10300:10300 \
-e MOONSHINE_MODEL=small-streaming-de \
-e MOONSHINE_LANGUAGE=de \
-e MOONSHINE_AUTO_DOWNLOAD=1 \
-e MOONSHINE_THREADS=1 \
ghcr.io/marco-taylor/moonshine-stt-wyoming:latest
Der Modellordner muss für den verwendeten Containerbenutzer les- und bei aktiviertem Auto-Download schreibbar sein.
Konfiguration
| Variable | Standard | Beschreibung |
|---|---|---|
MOONSHINE_MODEL |
small-streaming-de |
Ausgewähltes Modell |
MOONSHINE_LANGUAGE |
de |
Sprache des Modells |
MOONSHINE_MODEL_DIR |
/app/models |
Persistenter Modellpfad |
MOONSHINE_AUTO_DOWNLOAD |
1 |
Fehlendes Modell automatisch laden |
MOONSHINE_THREADS |
1 |
Empfohlene Einstellung für Deutsch/Small auf N100 |
WYOMING_HOST |
0.0.0.0 |
Bind-Adresse |
WYOMING_PORT |
10300 |
Interner Wyoming-Port |
WYOMING_STT_CONCURRENT_REQUESTS |
1 |
Anzahl zugelassener STT-Streams |
MAX_AUDIO_SECONDS |
30 |
Maximale Audiodauer pro Anfrage |
LOG_LEVEL |
INFO |
Log-Level |
LOG_TRANSCRIPTS |
false |
Erkannte Texte protokollieren |
STT_DEVICE |
cpu |
Gerät; dieses Image verwendet CPU |
Modell und Sprache müssen zusammenpassen. Es wird immer genau ein ausgewähltes Modell geladen; es gibt keine automatische Spracherkennung oder gleichzeitige Vorladung mehrerer Sprachmodelle.
Modelle und Updates
Modelle werden unter /app/models/<Modell-ID>/ gespeichert. Dadurch bleiben sie bei
Container- und Image-Updates erhalten, solange der persistente Mount beibehalten wird.
Bei aktiviertem Auto-Download gilt:
- vorhandenes vollständiges Modell → direkt wiederverwenden
- fehlendes Modell → ausgewähltes Modell herunterladen
- unvollständiges oder beschädigtes Modell → Startfehler statt stiller Überschreibung
Mit MOONSHINE_AUTO_DOWNLOAD=0 sind automatische Modelldownloads deaktiviert.
Vollständig vorhandene kompatible Modelle können dadurch auch offline verwendet werden.
Details zur manuellen Modellinstallation stehen in der Modellübersicht.
Intel N100
Für Deutsch / Small ist MOONSHINE_THREADS=1 die empfohlene Einstellung.
Diese Kombination wurde auf einem Intel N100 praktisch getestet und erreichte bei den
verwendeten sauberen deutschen Testaufnahmen eine Verarbeitung schneller als Echtzeit.
Die tatsächliche Erkennungsqualität und Latenz hängen unter anderem von Mikrofon, Umgebungsgeräuschen, Sprecher und verwendeten Begriffen ab.
Sicherheit
Das mitgelieferte Unraid-Template verwendet unter anderem:
- unprivilegierten Benutzer
99:100 - schreibgeschütztes Root-Dateisystem
no-new-privileges- entfernte Linux-Capabilities
- begrenztes
/tmp-Tmpfs - keinen privileged-Modus
- keine GPU- oder Host-Geräte
Wyoming stellt hier keine eigene Authentifizierung oder TLS-Verschlüsselung bereit. Den Dienst deshalb nur in einem vertrauenswürdigen LAN verwenden und Port 10300 nicht öffentlich ins Internet weiterleiten.
Fehlerbehebung
| Problem | Prüfen |
|---|---|
| Port 10300 belegt | Anderen freien Host-Port verwenden |
| Sprache passt nicht | Modell und Sprache gemeinsam konfigurieren |
| Modell fehlt | Auto-Download aktivieren oder Modell vollständig bereitstellen |
| Modell beschädigt/unvollständig | Modellordner und richtige Revision prüfen |
| Permission denied | Rechte des persistenten Modellordners prüfen |
| Download schlägt fehl | Internetzugang, Speicherplatz und Schreibrechte prüfen |
| Noch nicht bereit | Modelldownload und Initialisierung abwarten und Logs prüfen |
| Anfrage meldet busy | Laufende STT-Anfrage zuerst abschließen |
| Audio wird abgewiesen | 16 kHz, Mono, PCM16 und Audiodauer prüfen |
| Hohe N100-Latenz | Für Deutsch/Small MOONSHINE_THREADS=1 verwenden |
Dokumentation
Weitere technische Informationen:
Lizenz
Dieses Projekt steht unter der Apache License 2.0. Siehe LICENSE und NOTICE.
Moonshine, Wyoming sowie weitere verwendete Pakete und native Bibliotheken unterliegen ihren jeweiligen Lizenzen. Die zugehörigen Hinweise befinden sich in THIRD_PARTY_NOTICES.md.
Install moonshine-stt-wyoming on Unraid in a few clicks.
Find moonshine-stt-wyoming in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/marco-taylor/moonshine-stt-wyoming:latestRuntime arguments
- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--user=99:100 --read-only --cap-drop=ALL --security-opt=no-new-privileges --tmpfs /tmp:rw,noexec,nosuid,size=16m --restart=unless-stopped --log-opt max-size=10m --log-opt max-file=2
Template configuration
Host-Port für Home Assistant. Standard 10300. Vor Start auf Belegung prüfen. Der interne Container-Port bleibt 10300.
- Target
- 10300
- Default
- 10300
- Value
- 10300
Persistenter Modellordner. Modelle bleiben bei Image-Updates erhalten. Für Downloads Schreibrechte für UID/GID 99:100 erforderlich; kein automatisches Ändern vorhandener Dateirechte.
- Target
- /app/models
- Default
- /mnt/user/appdata/moonshine-stt-wyoming/models
- Value
- /mnt/user/appdata/moonshine-stt-wyoming/models
Small Streaming Deutsch ist Standard. Bei Modellwechsel auch das Sprachfeld passend zum Suffix einstellen. Nur das ausgewählte fehlende Modell wird installiert; niemals zusätzliche Modelle.
- Target
- MOONSHINE_MODEL
- Default
- small-streaming-de|medium-streaming-en|small-streaming-en|small-streaming-es|small-streaming-ja|tiny-streaming-ar|tiny-streaming-de|tiny-streaming-en|tiny-streaming-es|tiny-streaming-ja|tiny-streaming-tl|tiny-streaming-vi|tiny-streaming-zh
- Value
- small-streaming-de
Muss zur Sprache des ausgewählten Modells passen (Suffix im Modellnamen). Deutsch de bleibt Standard. Falsche Kombinationen verweigern den Start; beide Felder gemeinsam ändern.
- Target
- MOONSHINE_LANGUAGE
- Default
- de|ar|en|es|ja|tl|vi|zh
- Value
- de
1: ausschließlich fehlendes ausgewähltes Modell beim Start herunterladen. 0: Offline-Betrieb; fehlendes Modell führt zu verständlichem Startfehler. Gültige vorhandene Modelle werden nie erneut heruntergeladen.
- Target
- MOONSHINE_AUTO_DOWNLOAD
- Default
- 1|0
- Value
- 1
1: empfohlener Einzelthread-Modus auf Intel N100. 4: Runtime-Automatik, kein garantierter harter Thread-Zähler; auf diesem N100 langsamer.
- Target
- MOONSHINE_THREADS
- Default
- 1|4
- Value
- 1
Auf Intel N100 bei 1 belassen. Erlaubt 1–8 Streams; native Inferenz bleibt seriell.
- Target
- WYOMING_STT_CONCURRENT_REQUESTS
- Default
- 1
- Value
- 1
Standard 10300. Normalerweise nicht ändern. Bei Änderung muss auch das Container-Ziel der Portzuordnung angepasst werden.
- Target
- WYOMING_PORT
- Default
- 10300
- Value
- 10300
Standard /app/models. Muss zum Container-Ziel des persistenten Modell-Mounts passen.
- Target
- MOONSHINE_MODEL_DIR
- Default
- /app/models
- Value
- /app/models
Maximale Länge einer Anfrage in Sekunden; Standard 30, höchstens 300.
- Target
- MAX_AUDIO_SECONDS
- Default
- 30
- Value
- 30
Standard INFO. Audiodaten werden niemals protokolliert.
- Target
- LOG_LEVEL
- Default
- INFO|WARNING|ERROR|DEBUG
- Value
- INFO
Standard false schützt erkannte Sprachinhalte. Nur für bewusste Diagnose aktivieren.
- Target
- LOG_TRANSCRIPTS
- Default
- false|true
- Value
- false