Speech models — Swiss German / German / English, everywhere
Every voice surface (satellite speaker, mobile app, portal composer) transcribes through
the centralized Whisper container (Doc/Architecture/CentralizedSpeech). Since 2026-08-20
all Systemorph-operated instances run one model that covers all three languages:
The standard model
Flix-AI/flix-swissgerman-full —
a full fine-tune of openai/whisper-large-v3, Apache 2.0, trained on 1,367 hours of
Swiss German (broadcast subtitles, parliamentary proceedings, institutional YouTube, Swiss
films) under the Swiss text-and-data-mining research exception.
- Swiss German speech transcribes to Standard German text — that is the model's design, not a lossy approximation. Benchmarked honestly at 25.6% WER / 13.8% content WER (paper).
- Plain German and English are unregressed: A/B against the base model on control clips produced identical transcripts (verified 2026-08-20, alongside real Swiss German recordings where this model clearly beat the CC-BY-NC alternative).
- Apache 2.0 means commercial instances may serve it — this is what allowed Swiss German onto the paid cloud at all.
Where each deployment gets it
| Surface | Model build | Source |
|---|---|---|
memex.meshweaver.cloud (/api/speech/transcribe, serves the mobile app on the go) |
ggml q8_0 (1.7 GB) | meshweaverswissarchive/models/whisper/ggml-flix-swissgerman-q8_0.bin (read-only SAS in the deployment's values.memexcloud.yaml; init container downloads at pod start) |
| A local mesh (LocalMesh app; serves the mobile app at home) | via Speech.Endpoint → a local whisper-server |
Speech section in appsettings.json |
| The voice gateway (satellite speaker) | ggml f16 (2.9 GB, max fidelity) | local whisper-server, STT_URL env |
Quantization guidance from measurement: q8_0 is transparent (identical transcripts to f16 on real recordings); q5_0 measurably damages this fine-tune — do not ship it.
Swapping the model on an instance
The container is model-agnostic: it loads whatever model.url names, so a swap is one
line in the deployment values plus a pod roll — no image rebuild. Converting a Hugging
Face Whisper fine-tune to ggml: whisper.cpp/models/convert-h5-to-ggml.py (cast BF16
tensors to float first), then whisper-quantize … q8_0.
License notes (read before swapping)
- Flurin17/whisper-large-v3-turbo-swiss-german is CC-BY-NC 4.0 — personal and non-commercial use only. It must never be served from a commercially operated instance without a written grant from its author.
- Beware of relicensed conversions: a CTranslate2/ggml conversion of a CC-BY-NC model stays CC-BY-NC no matter what license its uploader attached — a derivative cannot shed its source license.
- The "Hey Memex" wake-word model (gateway repo,
clients/voice-gateway/wakeword/) is personal-use only (mixed-license training data); it runs on the device, not on any instance, so instance licensing is unaffected.