Dubbing
Translate and dub audio/video content into other languages while preserving the original speaker's voice characteristics.
Creating a Dub
From URL
dub, err := client.Dubbing().Create(ctx, &elevenlabs.DubbingRequest{
SourceURL: "https://example.com/video.mp4",
TargetLanguage: "es", // Spanish
Name: "My Video - Spanish",
})
Request Options
| Option |
Description |
SourceURL |
URL to video/audio file |
TargetLanguage |
Target language code |
Name |
Name for the dubbing project |
SourceLanguage |
Source language (auto-detected if not set) |
NumSpeakers |
Number of speakers (auto-detected if not set) |
Watermark |
Add watermark to output |
StartTime |
Start time in seconds |
EndTime |
End time in seconds |
Checking Status
status, err := client.Dubbing().GetStatus(ctx, dubbingID)
fmt.Printf("Status: %s\n", status.Status)
fmt.Printf("Target Languages: %v\n", status.TargetLanguages)
Dubbing Status Values
| Status |
Description |
dubbing |
In progress |
dubbed |
Complete |
failed |
Failed |
Downloading Dubbed Audio
audio, err := client.Dubbing().GetDubbedFile(ctx, dubbingID, "es")
if err != nil {
log.Fatal(err)
}
f, _ := os.Create("dubbed_spanish.mp4")
defer f.Close()
io.Copy(f, audio)
Deleting a Dub
err := client.Dubbing().Delete(ctx, dubbingID)
Supported Languages
Common language codes:
| Code |
Language |
en |
English |
es |
Spanish |
fr |
French |
de |
German |
it |
Italian |
pt |
Portuguese |
pl |
Polish |
hi |
Hindi |
ja |
Japanese |
ko |
Korean |
zh |
Chinese |
Workflow Example
// 1. Create dubbing job
dub, err := client.Dubbing().Create(ctx, &elevenlabs.DubbingRequest{
SourceURL: "https://example.com/course-intro.mp4",
TargetLanguage: "es",
Name: "Course Intro - Spanish",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Dubbing ID: %s\n", dub.DubbingID)
// 2. Poll for completion
for {
status, _ := client.Dubbing().GetStatus(ctx, dub.DubbingID)
if status.Status == "dubbed" {
fmt.Println("Dubbing complete!")
break
} else if status.Status == "failed" {
log.Fatal("Dubbing failed")
}
fmt.Printf("Status: %s, waiting...\n", status.Status)
time.Sleep(30 * time.Second)
}
// 3. Download dubbed file
audio, _ := client.Dubbing().GetDubbedFile(ctx, dub.DubbingID, "es")
f, _ := os.Create("intro_spanish.mp4")
io.Copy(f, audio)
f.Close()
Best Practices
- Check source quality - Better input = better output
- Specify speaker count - Helps with voice separation
- Review output - AI dubbing may need manual review
- Consider cultural context - Some content may need localization beyond translation