What Is the Default ASR Engine for Dubbing in VoiceStudio?

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 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 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:

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 Core ASR backend service Contains line 424 default configuration; manages engine selection logic and WhisperX fallback
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 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 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 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, dub_generate.py, and 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 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 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 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 module centralizes engine selection, making WhisperX available to any component requesting ASR services without explicit engine preference.

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 →