Skip to content

PyAI Dub / Your recording, translated

The same story.
A new audience.

Bring the work you’ve already made to listeners in another language. Dub transcribes your recording, translates the speech and returns a dubbed audio track through one workflow.

11 output languages. Source and output chosen separately. Audio ready to download when the job is done.

One recording, two languagesListen

English

The source recording

Hindi / हिन्दी

The finished Dub audio

A synthetic English Cast recording and the Hindi result from that recording’s completed Dub API job. Recorded samples; playback does not submit a new job.

Start with audio or video
Transcribe, translate and voice
Keep the finished audio

From source to speech

One recording.
A clear path through.

Start with the recording and choose who should hear it next. Dub keeps the processing in one job, with a status you can follow and a result you can keep.

01

Bring your recording

Upload audio or video. Choose its source language, its output language and the speaker setup.

02

Follow the transformation

One asynchronous job handles transcription, translation and voice rendering. Track its progress as it runs.

03

Hear the finished piece

Download the dubbed WAV after the job completes. Listen through and review before publishing.

Choose who hears it next

Your source language.
Your next audience.

Choose the recording’s source and the new output independently. The paired demo above is one actual English-to-Hindi result; the Console shows current availability.

Start in8 languages

  • English
  • Spanish
  • French
  • German
  • Hindi
  • Italian
  • Portuguese
  • Dutch

Make it heard in11 languages

  • English
  • Spanish
  • French
  • German
  • Hindi
  • Italian
  • Portuguese
  • Chinese
  • Japanese
  • Korean
  • Russian

Supported language configuration is subject to serving availability. Review a finished dub before using it in your content.

A recording has a shape

Start with
the right source.

A solo narration, an interview and a mixed conversation need different speaker information. Tell Dub how the recording is arranged so the job has the right starting point.

  • One speaker: Dub can transcribe automatically.
  • Two separate audio channels: one speaker per channel can be transcribed automatically.
  • Multiple speakers mixed in mono: supply a transcript with speaker labels and timestamps.
See recording requirements
The API workflow
01

Submit once

Send the recording and language choices. Keep the returned job_id and status_url.

02

Track the job

Poll the status URL until done. Stop and inspect the error if the job reports error.

03

Download and review

After completion, fetch the audio with the same product key and save the finished WAV.

From listening to building

Change the language.
Take the request.

Choose a public recording, source language, output language and timing. Copy the generated request into your application to start your own asynchronous dubbing job.

Choose a language. Build your Dub request.

Configure an asynchronous dubbing job from a public media URL. The copied examples submit the job; polling and download follow.

Use a publicly reachable recording you have permission to process.

Uncheck for stereo audio with one speaker per channel. For multiple speakers mixed in mono, add a speaker-labelled transcript in the console.

POST /v1/dub

const form = new FormData();
form.append("source_url", "https://pyai.com/audio/dub/english-source.mp3");
form.append("source_lang", "en");
form.append("target_lang", "hi");
form.append("timing", "natural");
form.append("single_speaker", "true");

const response = await fetch("https://api.pyai.com/v1/dub", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.PYAI_API_KEY}`,
  },
  body: form,
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());

// Initial submission only. Keep the returned job_id and status_url.
// Poll GET /v1/dub/jobs/{job_id} with the same key until status is done; stop on error.
// After done, download GET /v1/dub/jobs/{job_id}/audio with the same key to dubbed.wav.
// GET /healthz/dub reports current output-language availability.

Code updates here without sending a request. Run the copied example on your server with PYAI_API_KEY.

Copy the code to use these settings, or explore the full product workspace.

The builder generates a submission example without uploading or processing media. Use a product key with the dub:render scope, poll the returned job and download after completion. Full submission, polling and download guide ↗

Before your first dub

Good questions.
Clear answers.

Dub is $0.2/min of source audio per output language, billed per second. Failed jobs cost nothing. Current inclusions and account terms are on the pricing page.

Explore pricing and terms

Starting with a script instead of a recording? Use Speak for immediate synthesis or Cast for a directed performance.

Explore Cast
How much does Dubbing cost?

Dubbing costs $0.2/min of source audio per output language, billed per second. Original voice matching, text editing, downloads and subtitles are included. Regeneration bills only the selected passages. Failed jobs cost nothing.

What is PyAI Dub?

Dub turns a source recording into another language through an asynchronous API job. It transcribes the recording, translates the speech and produces downloadable audio.

Which languages can I dub into?

Dub supports English, Spanish, French, German, Hindi, Italian, Portuguese, Chinese, Japanese, Korean, and Russian output. The console shows currently available languages.

Which source languages can I upload?

English, Spanish, French, German, Hindi, Italian, Portuguese, and Dutch. Choose the recording's source language and the desired output language independently.

Do I need to provide a transcript?

For one speaker, set single_speaker=true and Dub transcribes the recording. Recordings with a separate speaker on each of two audio channels can also be transcribed automatically. Mixed mono recordings with multiple speakers need a transcript with speaker labels and timestamps.

Does Dub stream in real time?

No. Submit the recording, poll the returned status URL, then download the result when the job reports done. Use Speak for live text-to-speech.

When should I use Dub instead of Cast or Speak?

Use Dub to translate an existing recording into another language. Use Cast to direct a voiceover from a script, and Speak to synthesize text directly.

How do I start with the API?

Use a product key with the dub:render scope. For a single-speaker recording, upload audio to POST /v1/dub with source_lang=en, target_lang=hi and single_speaker=true. The guide includes submission, polling and download examples.

Made once. Heard somewhere new.

Let your recording
go a little further.

Upload a recording, choose the next language and listen to the finished result in your PyAI workspace.