5.1 KiB
5.1 KiB
Speech-to-text backends
This document summarizes the speech-to-text implementations in speech_to_speech/STT, including language support, language abbreviations, and pipeline options. Run examples from the repository root in an environment with the speech dependencies installed.
Available STT Modes (--stt)
whisper→STT/whisper_stt_handler.pywhisper-mlx→STT/lightning_whisper_mlx_handler.pymlx-audio-whisper→STT/mlx_audio_whisper_handler.pyfaster-whisper→STT/faster_whisper_handler.pyparakeet-tdt→STT/parakeet_tdt_handler.pyparaformer→STT/paraformer_handler.py
Language Support by Handler
1) Whisper (--stt whisper)
- Handler:
WhisperSTTHandler - Language input flag:
--language(from shared Whisper args) - Supports fixed language (e.g.
en) orauto - Internal supported language list:
en,fr,es,zh,ja,ko,hi,de,pt,pl,it,nl
- Behavior:
- Detects language from token output
- If detected language is outside the supported list, it falls back to the previous language
2) Lightning Whisper MLX (--stt whisper-mlx)
- Handler:
LightningWhisperSTTHandler - Uses same shared
--languageargument as Whisper - Internal supported language list:
en,fr,es,zh,ja,ko,hi,de,pt,pl,it,nl
- Behavior:
- If
--language auto, model auto-detects each utterance - If detected language is unsupported, falls back to last supported language
- If
3) MLX Audio Whisper (--stt mlx-audio-whisper)
- Handler:
MLXAudioWhisperSTTHandler - Model flag:
--mlx_audio_whisper_model_name - Language still comes from shared
--languageflag (wired in pipeline) - Internal supported language list:
en,fr,es,zh,ja,ko,hi,de,pt,pl,it,nl
- Behavior:
- Uses fixed language unless
--language auto - Falls back to last known supported language when needed
- Uses fixed language unless
4) Faster-Whisper (--stt faster-whisper)
- Handler:
FasterWhisperSTTHandler - Language flag:
--faster_whisper_stt_gen_language - Default language:
en - Note:
- This handler passes generation kwargs directly to
faster_whisper.WhisperModel.transcribe(...) - Effective language coverage depends on selected Faster-Whisper/OpenAI Whisper model
- This handler passes generation kwargs directly to
5) Parakeet TDT (--stt parakeet-tdt)
- Handler:
ParakeetTDTSTTHandler - Language flag:
--parakeet_tdt_language(optional) - Supports auto language detection when language not specified
- Declared supported language list (25 European languages):
en,de,fr,es,it,pt,nl,pl,ru,uk,cs,sk,hu,ro,bg,hr,sl,sr,da,no,sv,fi,et,lv,lt
- Backend behavior:
- On macOS/MPS: MLX (
mlx-community/parakeet-tdt-0.6b-v3) - On CUDA/CPU: nano-parakeet (
nvidia/parakeet-tdt-0.6b-v3)
- On macOS/MPS: MLX (
6) Paraformer (--stt paraformer)
- Handler:
ParaformerSTTHandler - Model flag:
--paraformer_stt_model_name - Default model:
paraformer-zh - No dedicated language flag in current args class
- Practical support:
- Depends on selected FunASR model checkpoint
- Default setup is Chinese-oriented (
zh)
Language Abbreviations (ISO-style codes seen in STT handlers)
| Code | Language |
|---|---|
en |
English |
fr |
French |
es |
Spanish |
zh |
Chinese |
ja |
Japanese |
ko |
Korean |
hi |
Hindi |
de |
German |
pt |
Portuguese |
pl |
Polish |
it |
Italian |
nl |
Dutch |
ru |
Russian |
uk |
Ukrainian |
cs |
Czech |
sk |
Slovak |
hu |
Hungarian |
ro |
Romanian |
bg |
Bulgarian |
hr |
Croatian |
sl |
Slovenian |
sr |
Serbian |
da |
Danish |
no |
Norwegian |
sv |
Swedish |
fi |
Finnish |
et |
Estonian |
lv |
Latvian |
lt |
Lithuanian |
auto |
Per-utterance automatic language detection |
Usage Examples
Whisper (Transformers)
python -m speech_to_speech.s2s_pipeline --stt whisper --language es
python -m speech_to_speech.s2s_pipeline --stt whisper --language auto
Whisper MLX (LightningWhisperMLX)
python -m speech_to_speech.s2s_pipeline --stt whisper-mlx --language auto --device mps
MLX Audio Whisper
python -m speech_to_speech.s2s_pipeline --stt mlx-audio-whisper \
--mlx_audio_whisper_model_name mlx-community/whisper-large-v3-turbo \
--language auto
Faster-Whisper
python -m speech_to_speech.s2s_pipeline --stt faster-whisper \
--faster_whisper_stt_model_name large-v3 \
--faster_whisper_stt_gen_language en
Parakeet TDT
python -m speech_to_speech.s2s_pipeline --stt parakeet-tdt --parakeet_tdt_device auto
python -m speech_to_speech.s2s_pipeline --stt parakeet-tdt --parakeet_tdt_language es
With live transcription (MLX or CUDA/nano-parakeet backend):
python -m speech_to_speech.s2s_pipeline --stt parakeet-tdt \
--enable_live_transcription \
--live_transcription_update_interval 0.25
Paraformer
python -m speech_to_speech.s2s_pipeline --stt paraformer --paraformer_stt_model_name paraformer-zh