Speech-to-Text
Transcription via /v1/audio/transcriptions (Whisper-large-v3-turbo via speaches on station).
Datei-Upload + Live-Mikro mit chunked-Recording. Echte sub-300ms-Realtime via
WebRTC ist BACKLOG (Phase 3.8).
1 · Transcribe Uploaded File
2 · Record & Full Transcribe
3 · Chunked Transcription
4 · Streaming Transcription
Upload
Drop a WAV / MP3 / FLAC / M4A / OGG file here, or click to choose.
no file selected
Parameters
Static Catalog der akzeptierten STT-Modelle:
GET /v1/audio/models?type=stt (B.6 fix 2026-05-02). Allowlist erzwungen serverseitig — unbekannte Slugs → HTTP 400 statt silent-default.Explizite Sprache verbessert Erkennungsqualität deutlich gegenüber auto-detect.
0 = greedy (deterministic). Höher = mehr Sampling-Varianz. Standard: 0.
Whisper nutzt das als Kontext-Hint für Vokabular-Bias.
idle
Result
No result yet — upload a file and click Transcribe.
Raw response (debug)
—
Mic capture — full mode
Audio wird bis Stop gesammelt, dann komplett zu
POST /v1/audio/transcriptions hochgeladen.
Server-seitige long-form-Transkription mit eigenem VAD-Filter (faster-whisper). Beste Qualität,
aber Wartezeit nach Stop ≈ Audio-Länge × 0.3.
Auto-Stop nach dieser Zeit damit eine vergessene Aufnahme nicht endlos wächst.
idle
silence
Live waveform (10 s history)
Result
Mikro starten → nach Stop erscheint hier das vollständige Transkript.
Mic capture — chunked mode
Browser-Mikro → Chunks →
POST /v1/audio/transcriptions pro Chunk.
VAD-Modus schneidet bei Sprech-Pause >600 ms (adaptiv).
Niedrige Latenz, Transkripte erscheinen fortlaufend.
Für sub-300 ms-Realtime → Tab 4 · Streaming.
Hard-Cap. Bei VAD wird bei 75 % der Länge der Silence-Trigger auf 250 ms reduziert.
idle
silence
Live waveform — 10 s Historie + Phasen
Phasen-Hintergründe:
silence,
pre-speech,
speech,
post-speech.
Rote vertikale Linien = Chunk-Boundaries. Rechts: VU-Meter mit Pegel + VAD-Schwelle + Noise-Floor.
Live transcript
Mikro starten → hier erscheinen Transkripte fortlaufend.
Chunks (debug)
—
Realtime-Stream (sub-300ms)
Browser-Mikro → MediaRecorder (WebM/Opus, 250 ms timeslice) → WebSocket
/ws/audio/stream → rust-api proxy → WhisperLiveKit (AlignAtt-Policy,
large-v3-turbo). Auth via Sec-WebSocket-Protocol: bearer.<TOKEN>.
Server-side ffmpeg dekodiert WebM in Echtzeit; Antworten als JSON
mit committed lines (stabil) und buffer_transcription (tentativ,
kann sich noch ändern).
Pro Verbindung an den Server durchgereicht (
?language=<code>). auto lässt Whisper aus dem ersten Audio-Chunk die Sprache selbst erkennen — kostet ~300 ms beim Start, sonst bei festem Code direkt los. Whisper-large-v3-turbo unterstützt ~99 Sprachen; die Liste hier ist eine pragmatische Top-Auswahl.
disconnected
silence
Live waveform — 10 s Historie + Phasen (browser-seitig, rein optisch)
Rein visuelle Threshold — die Server-VAD ist im Stream-Pfad authoritativ (WhisperLiveKit AlignAtt). Adaptiv-Mode passt die Browser-Visualisierung an die Mikro-Umgebung an.
Rolling-Buffer der letzten 10 s. Farb-Phasen wie im Live-Record-Tab. Im Stream-Pfad ist die Server-VAD authoritativ (WhisperLiveKit AlignAtt) — diese Browser-Anzeige ist rein optisch, sie steuert keine Chunk-Boundaries (es gibt keine Browser-side Chunks im Stream-Pfad, nur ein kontinuierlicher WebM-Stream).
Live transcript
Stream starten → committed lines (volle Farbe) und tentatives Buffer (gedimmt) erscheinen hier.
Server messages (debug)
—
Audio history — items, — MB
Alle Audio-Files + Transkripte werden lokal in IndexedDB gespeichert (browser-only — never leaves your device unless you click 'Upload debug trace').
Tab 1 (upload), Tab 2 (full), Tab 3 (chunked) und Tab 4 (streaming) hängen jeweils ihre Items hier an.
Pro Item: Download audio · Download trace.json · Copy trace JSON · Re-transcribe · Upload debug trace (zu unserem Server) · Delete.
Quota-Warnung ab 500 MB — kein Auto-Delete (Q3-a).
no items yet — use a tab above to record/upload audio