FunAudioLLM SenseVoice transcriber. Resamples each AudioFrame to 16 kHz, decodes it, strips the event and emotion markers, and emits a clean String (empty on silence). For timestamped output prefer transcribe_audio_faster_whisper.
Typical backends
Only speech segments reach the transcriber, whose multilingual text drives an LLM follow-up.
A recorded file is transcribed and the clean text posted as JSON.
Caveats
- Hard constraintThe
language setting accepts only its enumerated codes; any other value drifts to undefined internal behaviour and usually a degraded transcript.
- Hard constraintThe
model must name a real SenseVoice checkpoint; an unknown id fails to load at startup.
- CompatibilityThe model loads custom code from its source repository at startup; pin the repository revision and cache it for production stability.
- I/O contractThe post-processing strips the embedded event, emotion, and language markers (laughter, music, and similar) from the text, so they are not recoverable downstream; the single output is a String.
- I/O contractEmpty input returns the empty string without running the model, and the model also returns the empty string when it detects silence.
- CostFirst-run downloads are a few hundred megabytes; pre-seed the model cache for offline deployments. This is one of the lighter multilingual options.
- State lifetimeConfiguration is read at startup and there is no runtime sync, so changing
model, device, or language requires a restart.