Kroko-STT-German-Wyoming

Kroko-STT-German-Wyoming

Docker app from Marco T 's kroko's Repository

Overview

Kroko STT German Wyoming: lokale deutsche Streaming-Spracherkennung fuer Home Assistant mit Rust, sherpa-onnx und Wyoming. Ausschliesslich Deutsch, CPU-only, linux/amd64. Ein Thread und classic sind die empfohlenen N100-Standards. VOR DER INSTALLATION: Modellanleitung unter ReadMe lesen. Die vier hashgeprueften Dateien encoder.onnx, decoder.onnx, joiner.onnx und tokens.txt muessen im Unterordner classic des gewaehlten Modellverzeichnisses liegen. Kein automatischer Modelldownload. Ohne diese Dateien startet der Dienst nicht; fehlende Dateien oder falsche Pruefsummen werden im Log genannt. Modelle werden extern bereitgestellt und read-only unter /models eingebunden. Ihre Lizenzen sind unabhaengig vom Apache-2.0-Projektcode; eine freie Weiterverteilung der Classic-Gewichte wird nicht behauptet. Community-64 und Community-128 sind nur manuell vorbereitete Alternativen. Immer nur ein Modell wird geladen; ein Wechsel erfordert Aendern von KROKO_MODEL und Neuerstellen des Containers. Vor Start einen freien Hostport waehlen. Keine Weboberflaeche, GPU oder Audioaufzeichnung. Wyoming besitzt keine eigene Authentifizierung/TLS; nur im vertrauenswuerdigen LAN verwenden. LOG_LEVEL=info protokolliert finale Transkripte; warn reduziert dies.

External, pinned models

Use only artifacts whose four SHA256 values match src/server/models.rs. The directory names are profiles; MODEL_DIR is their parent. The loader does not download models, extract archives, or automatically upgrade exports.

Classic original source: https://huggingface.co/csukuangfj/sherpa-onnx-streaming-zipformer-de-kroko-2025-08-06/tree/887db3d083240198c2d2b99fb66cfcfe6948ced8

Classic für eine frische Unraid-Installation vorbereiten

Vor dem ersten Containerstart ausfuehren. Es gibt keinen automatischen Modelldownload. Die Lizenz der Gewichte ist unabhaengig von Apache-2.0; fuer Classic wird keine freie Weiterverteilungsfreigabe behauptet. Du musst die Bedingungen der Originalquelle vor dem Download prüfen und akzeptieren. Bei unklaren Nutzungsrechten hole eine Klärung vom Rechteinhaber ein. Die Befehle laden nur fuer deinen eigenen lokalen Modellordner direkt von der gepinnten Upstream-Quelle; das Projekt liefert keine Gewichte aus.

Die Dateien in dieser Revision heissen bereits encoder.onnx, decoder.onnx, joiner.onnx und tokens.txt. Kein Archiv, Konverter oder weiteres Runtime-Paket ist fuer Classic erforderlich. Folgende Befehle im Unraid-Terminal ausfuehren (benoetigt curl und sha256sum, beide auf dem getesteten Unraid vorhanden):

(
set -eu
umask 022
model_dir=/mnt/user/appdata/kroko-stt-german-wyoming/models/classic
source_url=https://huggingface.co/csukuangfj/sherpa-onnx-streaming-zipformer-de-kroko-2025-08-06/resolve/887db3d083240198c2d2b99fb66cfcfe6948ced8
mkdir -p "$model_dir"
# Vorhandene Dateien und Downloads niemals stillschweigend ersetzen.
for file in encoder.onnx decoder.onnx joiner.onnx tokens.txt; do
  for path in "$model_dir/$file" "$model_dir/$file.download"; do
    if [ -e "$path" ] || [ -L "$path" ]; then
      echo "Abbruch: Datei bereits vorhanden: $path" >&2
      exit 1
    fi
  done
done
for file in encoder.onnx decoder.onnx joiner.onnx tokens.txt; do
  curl --fail --location --retry 3 --proto '=https' --proto-redir '=https' \
    "$source_url/$file" -o "$model_dir/$file.download"
done
cd "$model_dir"
sha256sum --check <<'SHA256'
6e83993d6967ec7a3498b055b7e85ace85b5d64d1b1e8773cb29a43a11f5edb5  encoder.onnx.download
94a29592b403c53fa2231b478637da1ab4abcef7f5e46e432098416a4a3ed562  decoder.onnx.download
28356bff070aea51ab1d725a3278e81d19f9300f860d3248a7014292264df15a  joiner.onnx.download
86e8370994ff2c01149ba8c4f8709aa93cdc18914b27a717e291e96faf39a6eb  tokens.txt.download
SHA256
for file in encoder.onnx decoder.onnx joiner.onnx tokens.txt; do
  # Noclobber verhindert auch ein Überschreiben bei einem parallelen Download.
  (set -C; cat "$file.download" > "$file")
  chmod 644 "$file"
  rm -- "$file.download"
done
chmod 755 "$model_dir" "$(dirname "$model_dir")"
echo "Classic bereit: vier SHA256-Prüfungen erfolgreich; Modelle lesbar für UID 99 / GID 100."
)

Alle vier Prüfungen müssen OK melden. set -e bricht bei einem Download- oder Prüfsummenfehler ab, bevor Dateien unter ihren Laufzeitnamen installiert werden. Die Klammern begrenzen die Shell-Einstellungen auf diesen Befehlsblock. Bei Fehlern nicht starten: .download-Dateien sind keine installierten Modelle. Der Block überschreibt keine vorhandenen Dateien. Nach einem abgebrochenen Versuch nur die selbst angelegten unvollständigen .download-Dateien prüfen, bevor du den Block erneut ausführst; vorhandene Modelle nicht blind löschen. Die Befehle koennen keine Lizenzrechte erteilen. Sie richten keine automatische Weiterverteilung ein. Falls vorhandene Elternordner den Zugriff verhindern, deren Durchsuchbarkeit für UID 99 / GID 100 gezielt prüfen; weder pauschal Appdata-Rechte ändern noch chmod 777 verwenden. Der Block setzt ausschließlich die beiden eingebundenen Modellordner auf 755 und die vier Dateien auf 644. Ein chown auf UID 99 / GID 100 ist dafür nicht nötig.

Erwartete Struktur:

/mnt/user/appdata/kroko-stt-german-wyoming/models/
  classic/
    encoder.onnx
    decoder.onnx
    joiner.onnx
    tokens.txt

Im Unraid-Template diesen uebergeordneten models-Ordner read-only nach /models mappen und KROKO_MODEL=classic belassen. Vor Apply einen freien Hostport auswaehlen; Container-Port bleibt 10321/tcp. Anschliessend auf healthy warten und Home Assistant manuell ueber Wyoming mit Unraid-IP und Hostport verbinden. Keine WebUI. Ein vorhandener Dienst darf nicht verdraengt werden.

Wenn du bereits die vier richtigen Dateien besitzt, ist kein Download noetig: am gewaehlten Ziel in classic/ bereitstellen und mit den vier obigen Hashes (ohne .download-Suffix) pruefen. Beim Umzug nie bestehende Dateien blind ersetzen. Bei fehlendem Ordner/Datei oder SHA256-Abweichung bricht der Dienst mit dem konkreten Pfad im Log ab. Modelle bleiben bei Container-/Image-Updates erhalten.

Manuell vorbereitete Community-Alternativen

Community original source: https://huggingface.co/Banafo/Kroko-ASR/tree/d45212aeb212dd66083dd22710c9954f40ff8cc1

The pinned classic source already provides the validated INT8 encoder/decoder/joiner as encoder.onnx, decoder.onnx, joiner.onnx; tokens remain tokens.txt. Names alone do not establish compatibility: the startup hash check is authoritative.

Community downloads are Kroko-DE-Community-64-L-Streaming-001.data and Kroko-DE-Community-128-L-Streaming-001.data. Their original SHA256 values are:

File SHA256
64-L .data 0013d4b3e1216b4e0c15f18f345aa58ca8bb2cdbeff7a7d55a513f6b400862a5
128-L .data 8d39babf998aba69446b1c1e3ac780bf5f90887ad95b0d60eb4bd79d63998462

They are containers, not ONNX files. Our local compatibility work extracted the original encoder/decoder/joiner bytes and vocabulary without changing ONNX graphs. Only the extracted four validated files are runtime inputs. The raw .data file is not required by the server. This public source preparation does not distribute an extraction tool or grant permission to distribute the resulting model files. Use the independently prepared, hash-verified files; obtain clarification of model terms before sharing them. See docs/licensing.md.

Fuer Community-Alternativen zuerst die vier separat vorbereiteten, passenden Dateien in community-64/ bzw. community-128/ unter dem models-Ordner ablegen und gegen die Hashes in src/server/models.rs pruefen. Die .data-Datei allein genuegt nicht; der v0.1.0-Server entpackt sie nicht. Das Dropdown im CA-Template installiert keine Modelle. Fuer neue Nutzer ist daher Classic mit der obigen direkten Downloadanleitung der vollstaendig dokumentierte Standardweg.

Classic and community-64 use encoder decode_chunk_len=128, T=141 and a 1.28-second feature step. Community-128 uses decode_chunk_len=256, T=269, a 2.56-second feature step. These are algorithmic model steps, not network chunk sizes. All accept 16 kHz mono PCM16 through this server with 80-dimensional features. The profiles use different validated final padding lengths.

The documented community container format is: a little-endian uint32 JSON-header length, that header (type=zipformer2, free=true), followed by four little-endian uint32 length-prefixed blocks in encoder/decoder/joiner/tokens order. Reject truncated data, non-free/encrypted packages and trailing bytes. Verify both the download checksum and each extracted file against the profile hashes. The format was checked against Banafo's official ModelData.cc. No custom inference runtime is needed once the exact components are extracted.

Requirements

linux/amd64. Vor dem ersten Start das ausgewaehlte Modell anhand der ReadMe extern vorbereiten und SHA256 pruefen. Modellordner muessen fuer UID/GID 65532 lesbar und durchsuchbar sein. Keine Modellgewichte im Image. Hostport darf keinen bestehenden Dienst verdraengen.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/marco-taylor/kroko-stt-german-wyoming:latest
Last Updated2026-10-06
First Seen2026-10-06

Runtime arguments

Network
bridge
Privileged
false
Extra Params
--user=65532:65532 --read-only --cap-drop=ALL --security-opt=no-new-privileges --restart=unless-stopped

Template configuration

Wyoming-STT-PortPorttcp

Freier Host-TCP-Port fuer Home Assistant. Standard 10321; interner Container-Port bleibt 10321. Bestehende Dienste nicht ersetzen.

Target
10321
Default
10321
Value
10321
Kroko-Modelle (vorher vorbereiten)Pathro

Persistenter uebergeordneter Modellordner, read-only. Fuer classic werden classic/encoder.onnx, classic/decoder.onnx, classic/joiner.onnx und classic/tokens.txt benoetigt. Vor Apply die Modellanleitung unter ReadMe befolgen. Kein automatischer Download.

Target
/models
Default
/mnt/user/appdata/kroko-stt-german-wyoming/models
Value
/mnt/user/appdata/kroko-stt-german-wyoming/models
Kroko-ModellVariable

classic ist Standard. Alternativen nur bei manuell vorbereiteten, hashgeprueften Dateien in community-64/ oder community-128/. Nur die Auswahl wird geladen. Wechsel erfordert Neuerstellen, nicht nur docker restart.

Target
KROKO_MODEL
Default
classic|community-64|community-128
Value
classic
CPU-ThreadsVariable

Standard 1, fuer Intel N100 empfohlen. Erlaubt 1 bis 4; keine GPU erforderlich.

Target
NUM_THREADS
Default
1
Value
1
SpracheVariable

Ausschliesslich Deutsch. de ist Standard; keine Unterstuetzung weiterer Sprachen.

Target
LANGUAGE
Default
de
Value
de
LogstufeVariable

info protokolliert finale Transkripte, debug zusaetzlich interne Partials. warn oder error reduzieren Sprachinhalte in Logs. Audio wird nicht gespeichert.

Target
LOG_LEVEL
Default
info|warn|error|debug
Value
info
ZeitzoneVariable

Standard Europe/Berlin.

Target
TZ
Default
Europe/Berlin
Value
Europe/Berlin
Modellpfad im ContainerVariable

Uebergeordneter Modellpfad. Passend zum read-only Mount auf /models belassen.

Target
MODEL_DIR
Default
/models
Value
/models
Listener im ContainerVariable

Auf 0.0.0.0 belassen, damit Wyoming ueber das Portmapping erreichbar ist.

Target
HOST
Default
0.0.0.0
Value
0.0.0.0
Interner Wyoming-PortVariable

Auf 10321 belassen. Der Hostport wird separat im Portmapping gewaehlt.

Target
PORT
Default
10321
Value
10321