Language Coverage Differences Between STT Backends in Hugging Face Speech-to-Speech

The Hugging Face speech-to-speech repository supports three distinct STT backends with vastly different language coverage: Whisper handles 12 languages including English and major Asian languages, Parakeet TDT supports 25 European languages with automatic detection, and Paraformer is limited to Mandarin Chinese only.

The huggingface/speech-to-speech pipeline offers flexibility in choosing Speech-to-Text (STT) backends, but each implementation carries specific language constraints hardcoded in their respective handlers. Understanding these language coverage differences prevents transcription failures and ensures you select the appropriate model for your multilingual requirements.

Whisper-Based Backends: 12-Language Whitelist

The Whisper handler and its variants (whisper-mlx, mlx-audio-whisper, faster-whisper) enforce a strict language whitelist that limits recognition to 12 specific languages.

Supported Language List

In src/speech_to_speech/STT/whisper_stt_handler.py, the SUPPORTED_LANGUAGES constant explicitly defines the whitelist:

SUPPORTED_LANGUAGES = ["en", "fr", "es", "zh", "ja", "ko", "hi", "de", "pt", "pl", "it", "nl"]

This list covers English, major European languages (French, Spanish, German, Portuguese, Polish, Italian, Dutch), key Asian languages (Chinese, Japanese, Korean), and Hindi.

Language Detection Behavior

The handler implements a fallback mechanism when language detection occurs. If the detected language code falls outside the supported list, the system reverts to the last known valid language rather than attempting transcription. This prevents processing errors but means unsupported languages will not generate accurate transcripts.

Parakeet TDT: 25 European Languages with Auto-Detection

Parakeet TDT provides the broadest language coverage in the repository, supporting 25 European languages without requiring explicit language configuration.

Automatic Language Detection

Unlike the Whisper backend, Parakeet TDT relies on internal model predictions for language identification. The handler in src/speech_to_speech/STT/parakeet_tdt_handler.py propagates the model's automatic language detection results directly, eliminating the need for whitelist filtering.

European Language Coverage

The SUPPORTED_LANGUAGES array in the Parakeet handler lists 25 distinct European languages, making this backend the optimal choice for multilingual European applications. The model handles automatic language switching between these supported variants without manual intervention.

Paraformer: Mandarin Chinese Only

The Paraformer backend represents the most restrictive language scope, targeting specifically Mandarin Chinese (zh) transcription.

Model-Specific Limitations

The language limitation stems from the default model configuration in src/speech_to_speech/arguments_classes/paraformer_stt_arguments.py:

default_model_name = "paraformer-zh"

This default value indicates the shipped model targets Chinese specifically. While additional Paraformer models might exist upstream, the repository implements only the Chinese variant, effectively restricting this backend to Mandarin transcription. Feeding other languages into this backend will produce poor quality or nonsensical results.

Practical Implementation Examples

When configuring the pipeline, specify your desired backend via the stt parameter to match your language requirements.

Using Whisper for Multilingual Support

from speech_to_speech.s2s_pipeline import SpeechToSpeechPipeline

pipeline = SpeechToSpeechPipeline(
    stt="whisper",  # Select Whisper handler

    tts="kokoro",
    llm_backend="openai",
)
pipeline.run()

This configuration restricts transcription to the 12 languages defined in the whitelist; any detected language outside this set triggers the fallback behavior.

Enabling Parakeet TDT for European Languages

pipeline = SpeechToSpeechPipeline(
    stt="parakeet-tdt",  # Use Parakeet TDT handler

    tts="kokoro",
    llm_backend="openai",
)
pipeline.run()

This setup accommodates any of the 25 European languages with automatic language detection and switching.

Configuring Paraformer for Chinese

pipeline = SpeechToSpeechPipeline(
    stt="paraformer",  # Paraformer handler (Chinese only)

    tts="kokoro",
    llm_backend="openai",
)
pipeline.run()

Use this configuration exclusively for Mandarin Chinese input, as the underlying paraformer-zh model lacks training data for other languages.

Summary

Frequently Asked Questions

Which STT backend supports the most languages in the speech-to-speech repository?

Parakeet TDT supports the most languages, offering coverage for 25 European languages with built-in automatic language detection. This exceeds the Whisper backend's 12 languages and Paraformer's single-language limitation.

Can I use Whisper to transcribe languages not in its supported list?

No. The Whisper handler implements a whitelist in src/speech_to_speech/STT/whisper_stt_handler.py that filters out unsupported languages. When a language outside the 12-code list is detected, the system falls back to the previous valid language rather than attempting transcription.

Is Paraformer suitable for English or other non-Chinese languages?

No. The Paraformer backend defaults to the paraformer-zh model, which is trained specifically for Mandarin Chinese. Using it for English or other languages will result in poor transcription quality, as the model lacks training data for other linguistic patterns.

How does language detection differ between Parakeet TDT and Whisper?

Parakeet TDT uses automatic internal detection without filtering, allowing the model to freely identify and switch between any of its 25 supported European languages. Whisper uses explicit whitelist validation, where detected language codes are checked against the SUPPORTED_LANGUAGES array, and unsupported codes trigger a fallback mechanism rather than transcription.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →