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

> Explore STT backend language coverage in Hugging Face speech-to-speech. Compare Whisper 12 languages, Parakeet TDT 25 European languages, and Paraformer for Mandarin.

- Repository: [Hugging Face/speech-to-speech](https://github.com/huggingface/speech-to-speech)
- Tags: comparison
- Published: 2026-07-10

---

**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`](https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/STT/whisper_stt_handler.py), the `SUPPORTED_LANGUAGES` constant explicitly defines the whitelist:

```python
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`](https://github.com/huggingface/speech-to-speech/blob/main/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`](https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/arguments_classes/paraformer_stt_arguments.py):

```python
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

```python
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

```python
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

```python
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

- **Whisper backends** enforce a 12-language whitelist (`en`, `fr`, `es`, `zh`, `ja`, `ko`, `hi`, `de`, `pt`, `pl`, `it`, `nl`) with fallback logic for unsupported detections, as implemented in [`src/speech_to_speech/STT/whisper_stt_handler.py`](https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/STT/whisper_stt_handler.py).
- **Parakeet TDT** offers the widest coverage with 25 European languages and automatic language detection without whitelist restrictions, defined in [`src/speech_to_speech/STT/parakeet_tdt_handler.py`](https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/STT/parakeet_tdt_handler.py).
- **Paraformer** is constrained to Mandarin Chinese only due to the default `paraformer-zh` model specified in [`src/speech_to_speech/arguments_classes/paraformer_stt_arguments.py`](https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/arguments_classes/paraformer_stt_arguments.py).
- Select backends based on your specific language requirements: Whisper for mixed English/Asian languages, Parakeet TDT for European multilingual scenarios, and Paraformer exclusively for Chinese transcription.

## 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`](https://github.com/huggingface/speech-to-speech/blob/main/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.