कई भाषाओं में डब करें

एक ही प्रोजेक्ट में कई लक्ष्य भाषाएं जोड़ें और हर डब डाउनलोड करें।

कैसे करें गाइड · इसमें माना गया है कि आपने डबिंग प्रोजेक्ट बना लिया है, जैसा कि डबिंग क्विकस्टार्ट में दिखाया गया है।

एक प्रोजेक्ट में एक स्रोत ट्रांसक्रिप्ट होता है और आप अपनी ज़रूरत के अनुसार कितनी भी लक्ष्य भाषाएं जोड़ सकते हैं। हर भाषा स्वतंत्र रूप से जनरेट होती है और उसका अपना स्टेटस व आउटपुट होता है, इसलिए आप स्रोत का अनुवाद एक बार करते हैं और उससे हर डब बनाते हैं।

कई भाषाएं जोड़ें

जिस भाषा में डब करना है, उसके लिए एक लक्ष्य भाषा जोड़ें। हर भाषा queued में शुरू होती है और प्रोजेक्ट के ready होने पर जनरेट होना शुरू हो जाती है।

import os
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs
load_dotenv()
elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
project_id = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"
target_languages = ["es", "fr", "de", "ja"]
languages = [
elevenlabs.dubbing.project.language.create(project_id, target_language=lang)
for lang in target_languages
]

आप project.create को target_language पास करके प्रोजेक्ट बनाते समय पहली भाषा को भी कतार में लगा सकते हैं। ऊपर दिखाए अनुसार language.create से आगे की भाषाएं जोड़ें।

भाषाएं BCP-47 टैग के रूप में दी जाती हैं, जैसे es या fr-CA। स्वीकार किए गए सभी मानों के लिए समर्थित भाषाएं और बोलियां देखें।

हर भाषा को अलग-अलग ट्रैक करें

भाषाएं समानांतर रूप से जनरेट होती हैं और अलग-अलग समय पर पूरी होती हैं। उन्हें एक-एक करके पोल करने के बजाय, हर भाषा का स्टेटस देखने के लिए प्रोजेक्ट की भाषाओं की सूची देखें।

import time
while True:
result = elevenlabs.dubbing.project.language.list(project_id)
pending = [l for l in result.languages if l.status in ("queued", "processing")]
if not pending:
break
print(f"{len(pending)} language(s) still generating...")
time.sleep(5)

हर पूरा हुआ डब डाउनलोड करें

जब कोई भाषा completed पर पहुंचती है, तो उसके outputs.lossless_audio में साइन किया हुआ डाउनलोड URL होता है। जो भाषा विफल रही हो उसे छोड़कर, हर डब डाउनलोड करें।

import requests
result = elevenlabs.dubbing.project.language.list(project_id)
for language in result.languages:
if language.status != "completed":
print(f"Skipping {language.target_language}: {language.status}")
continue
audio = requests.get(language.outputs.lossless_audio)
with open(f"dubbed_{language.target_language}.wav", "wb") as f:
f.write(audio.content)
print(f"Saved dubbed_{language.target_language}.wav")

साइन किए गए URL जारी होने के करीब एक घंटे बाद एक्सपायर हो जाते हैं। अगर URL एक्सपायर होने की वजह से डाउनलोड विफल हो जाए, तो नया URL पाने के लिए language.get से भाषा को फिर से पाएं।

अगर कोई भाषा जनरेट नहीं हो पाती है, तो नया प्रोजेक्ट बनाने के बजाय उसी प्रोजेक्ट में उसे फिर से language.create से जोड़ें। प्रोजेक्ट और उसका ट्रांसक्रिप्ट दोबारा इस्तेमाल किए जा सकते हैं, इसलिए सिर्फ़ विफल भाषा फिर से जनरेट होती है।