# What Is the Default ASR Engine for Dubbing in VoiceStudio?

> Discover the default ASR engine for dubbing in VoiceStudio. VoiceStudio uses WhisperX for seamless automatic speech recognition and dubbing.

- Repository: [Palash Debnath/VoiceStudio](https://github.com/debpalash/VoiceStudio)
- Tags: how-to-guide
- Published: 2026-09-05

---

**VoiceStudio uses WhisperX as the default Automatic Speech Recognition (ASR) engine for dubbing**, as explicitly configured in the backend ASR service.

Understanding the default ASR engine is essential for anyone working with VoiceStudio's dubbing pipeline. This guide examines the source code configuration, explains how WhisperX is selected by default, and provides practical examples for interacting with the dubbing API.

## How WhisperX Is Set as the Default ASR Engine

The default ASR designation is implemented in [`backend/services/asr_backend.py`](https://github.com/debpalash/VoiceStudio/blob/main/backend/services/asr_backend.py) at line 424, where the code comments and configuration establish WhisperX as the fallback ASR engine when no specific engine is requested for dubbing operations.

VoiceStudio's architecture separates ASR backend selection into a dedicated service layer. The [`asr_backend.py`](https://github.com/debpalash/VoiceStudio/blob/main/asr_backend.py) module manages:

- **Engine registration** — Maintains available ASR providers (WhisperX, alternative engines)
- **Default resolution** — Returns WhisperX when `use_default_asr=True` or when no engine preference is provided
- **Download-on-miss logic** — Handles model fetching when WhisperX binaries are not locally cached

This design ensures consistent behavior across dubbing requests without requiring explicit ASR configuration from API consumers.

## Working with the Default ASR in the Dubbing API

When submitting a dubbing request, you can either explicitly request WhisperX or rely on the default behavior. The following example demonstrates both approaches using VoiceStudio's HTTP API:

```python
import requests

BASE_URL = "http://localhost:8000"
TOKEN = "YOUR_AUTH_TOKEN"

# Approach 1: Explicitly request WhisperX

explicit_payload = {
    "audio_file": "path/to/source_video.mp4",
    "target_language": "es",
    "asr_engine": "whisperx",  # Explicit selection

    "profile": "standard"
}

# Approach 2: Use default ASR engine (WhisperX)

default_payload = {
    "audio_file": "path/to/source_video.mp4",
    "target_language": "es",
    "use_default_asr": True,  # Triggers WhisperX automatically

    "profile": "standard"
}

def submit_dubbing(payload):
    response = requests.post(
        f"{BASE_URL}/api/dub_generate",
        json=payload,
        headers={"Authorization": f"Bearer {TOKEN}"}
    )
    response.raise_for_status()
    return response.json()

# Both calls result in WhisperX being used for transcription

explicit_result = submit_dubbing(explicit_payload)
default_result = submit_dubbing(default_payload)
print("Dubbing job ID:", default_result["job_id"])

```

## Key Source Files Supporting Default ASR Selection

| File | Purpose | Implementation Details |
|------|---------|------------------------|
| [`backend/services/asr_backend.py`](https://github.com/debpalash/VoiceStudio/blob/main/backend/services/asr_backend.py) | Core ASR backend service | Contains line 424 default configuration; manages engine selection logic and WhisperX fallback |
| [`backend/api/routers/dub_generate.py`](https://github.com/debpalash/VoiceStudio/blob/main/backend/api/routers/dub_generate.py) | Dubbing API endpoint | Processes incoming requests, delegates to ASR backend, handles `use_default_asr` parameter |
| [`backend/api/routers/dub_core.py`](https://github.com/debpalash/VoiceStudio/blob/main/backend/api/routers/dub_core.py) | Dubbing pipeline orchestration | Integrates ASR transcripts into the full dubbing workflow |

## Why WhisperX Serves as the Default

Several technical factors influenced WhisperX's selection as VoiceStudio's default ASR engine:

- **Multilingual support** — WhisperX provides robust transcription across dozens of languages
- **Word-level timestamps** — Essential for accurate lip-sync alignment in dubbed output
- **Speaker diarization** — Enables proper voice assignment when multiple speakers are present
- **Active maintenance** — Regular updates and community support reduce integration risk

The default configuration in [`asr_backend.py`](https://github.com/debpalash/VoiceStudio/blob/main/asr_backend.py) can be overridden at runtime through explicit `asr_engine` parameters or environment-level configuration changes.

## Summary

- **WhisperX is the default ASR engine** for dubbing in VoiceStudio, as defined in [`backend/services/asr_backend.py`](https://github.com/debpalash/VoiceStudio/blob/main/backend/services/asr_backend.py) at line 424
- **Default behavior is triggered** by `use_default_asr: true` or by omitting explicit ASR engine selection
- **API consumers can override** the default by specifying `asr_engine: "whisperx"` or another supported engine
- **Three core files manage** the ASR-to-dubbing pipeline: [`asr_backend.py`](https://github.com/debpalash/VoiceStudio/blob/main/asr_backend.py), [`dub_generate.py`](https://github.com/debpalash/VoiceStudio/blob/main/dub_generate.py), and [`dub_core.py`](https://github.com/debpalash/VoiceStudio/blob/main/dub_core.py)

## Frequently Asked Questions

### Does VoiceStudio require WhisperX to be installed locally?

WhisperX can be automatically downloaded on first use. The [`asr_backend.py`](https://github.com/debpalash/VoiceStudio/blob/main/asr_backend.py) service implements download-on-miss logic (referenced at line 3259) that fetches required model files when they are not present in the local cache, enabling out-of-the-box functionality.

### Can I change the default ASR engine system-wide?

To change the default, you would modify the configuration in [`backend/services/asr_backend.py`](https://github.com/debpalash/VoiceStudio/blob/main/backend/services/asr_backend.py) at the default assignment line (424). Alternatively, containerized deployments can set environment variables that the ASR backend service checks before falling back to WhisperX.

### What happens if WhisperX fails during a dubbing job?

The dubbing pipeline in [`dub_core.py`](https://github.com/debpalash/VoiceStudio/blob/main/dub_core.py) handles ASR failures by propagating error states to the API response. Consumers receive detailed error messages indicating transcription failure, and partial results are not returned to prevent incomplete dubbing output.

### Is WhisperX used for all VoiceStudio features or only dubbing?

While this analysis focuses on dubbing, WhisperX serves as the default ASR across VoiceStudio's speech-to-text features. The [`asr_backend.py`](https://github.com/debpalash/VoiceStudio/blob/main/asr_backend.py) module centralizes engine selection, making WhisperX available to any component requesting ASR services without explicit engine preference.