डब को सुधारें और फिर से जनरेट करें

स्रोत ट्रांसक्रिप्ट और अनुवाद संपादित करें, फिर किसी भाषा का ऑडियो दोबारा जनरेट करें।

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

इस गाइड में इस्तेमाल किए गए ट्रांसक्रिप्ट एडिटिंग और रीजनरेशन एंडपॉइंट सिर्फ़ एंटरप्राइज़ वर्कस्पेस के लिए उपलब्ध हैं। ऐक्सेस के लिए सेल्स से संपर्क करें।

डब की सटीकता उसके आधार ट्रांसक्रिप्ट जितनी ही होती है। इस गाइड में उन दो जगहों के बारे में बताया गया है जहाँ आप सुधार कर सकते हैं — सोर्स ट्रांसक्रिप्ट और किसी भाषा का अनुवाद — और संतुष्ट होने पर ऑडियो को फिर से कैसे जनरेट करें।

संशोधन कैसे काम करते हैं

हर प्रोजेक्ट और हर भाषा अपने अलग revision काउंटर को ट्रैक करते हैं, जिनकी शुरुआत 0 से होती है।

  • सोर्स ट्रांसक्रिप्ट में बदलाव करने पर प्रोजेक्ट का revision बढ़ता है। सिर्फ़ ट्रांसक्रिप्शन से यह नहीं बढ़ता।
  • अनुवाद में बदलाव करने पर उस भाषा का revision बढ़ता है। इसका सोर्स या किसी दूसरी भाषा पर असर नहीं पड़ता।
  • भाषा output_revision भी बताती है: वह संशोधन जिससे उसका मौजूदा ऑडियो जनरेट हुआ था। जब output_revision, revision से पीछे हो, तो डाउनलोड किया गया ऑडियो पुराना होता है और भाषा का स्टेटस stale हो जाता है।

जहाँ संभव हो, भाषाएँ जोड़ने से पहले सोर्स ट्रांसक्रिप्ट सुधारें। अनुवाद सोर्स से बनाए जाते हैं, इसलिए पहले सोर्स ठीक करने पर हर भाषा सही टेक्स्ट से शुरू होती है। भाषा मौजूद होने के बाद सोर्स में बदलाव करने पर वह भाषा stale हो जाती है और उसे फिर से जनरेट करना पड़ता है।

सोर्स ट्रांसक्रिप्ट एडिट करें

हर सेगमेंट का स्थायी id पाने के लिए सोर्स ट्रांसक्रिप्ट पढ़ें, फिर सेगमेंट एडिट, जोड़ें या हटाएँ।

import os
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs
load_dotenv()
elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
# Replace with your project's ID
project_id = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"
# Read the source transcript
transcript = elevenlabs.dubbing.project.transcript.get(project_id)
first_segment = transcript.segments[0]
# Correct a segment's text
elevenlabs.dubbing.project.transcript.update_segment(
project_id,
segment_id=first_segment.id,
text="Welcome to our latest product demo.",
)
# Add a segment (reuse an existing speaker_id so it is dubbed with that voice)
added = elevenlabs.dubbing.project.transcript.create_segment(
project_id,
text="Thanks for watching.",
speaker_id=first_segment.speaker_id,
start_s=40.0,
end_s=42.0,
)
# Delete the segment we just added
elevenlabs.dubbing.project.transcript.delete_segment(
project_id,
segment_id=added.segment.id,
)

टाइमिंग एडिट करते समय end_s, start_s से बड़ा होना चाहिए। नए सेगमेंट के लिए सभी चार फ़ील्ड (text, speaker_id, start_s, end_s) ज़रूरी हैं; सर्वर सेगमेंट का id असाइन करता है।

अनुवाद बेहतर करें

भाषा का ट्रांसक्रिप्ट हर सोर्स सेगमेंट को उसके अनुवाद के साथ जोड़ता है। सेगमेंट के id मान सोर्स ट्रांसक्रिप्ट से मेल खाते हैं, इसलिए आप अनुवादों को मूल टेक्स्ट के साथ मिला सकते हैं। मशीन अनुवाद को ओवरराइड करने के लिए किसी एक सेगमेंट का अनुवाद एडिट करें। अनुवाद हटाने और उस सेगमेंट को फिर से अनुवाद के लिए चिह्नित करने हेतु null पास करें।

project_id = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"
language_id = "lang_1001kwkyxp0je6ktn4knsfrasx5s"
# Read the language's translations
target = elevenlabs.dubbing.project.language.transcript.get(project_id, language_id)
first_segment = target.segments[0]
# Refine a single translation
elevenlabs.dubbing.project.language.transcript.update_segment(
project_id,
language_id,
segment_id=first_segment.id,
translation="Bienvenido a nuestra última demostración de producto.",
)

अनुवाद एडिट करने पर भाषा का revision बढ़ता है। अगर भाषा पहले ही पूरी हो चुकी थी, तो वह stale हो जाती है और रीजनरेट करने तक अपना पिछला ऑडियो बनाए रखती है।

ऑडियो फिर से जनरेट करें

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

import time
# Regenerate from the current transcript
elevenlabs.dubbing.project.language.transcript.regenerate(project_id, language_id)
# Poll until the new output is ready
while True:
language = elevenlabs.dubbing.project.language.get(project_id, language_id)
if language.status == "completed":
break
if language.status == "failed":
raise RuntimeError("Regeneration failed")
time.sleep(5)
print("Fresh output at", language.outputs.lossless_audio)

अगर प्रोजेक्ट ready नहीं है या भाषा स्थिर स्थिति में नहीं है, जैसे कि वह पहले से जनरेट हो रही हो, तो रीजनरेट करने पर 409 Conflict मिलता है। भाषा के फिर से completed होने पर output_revision, revision के बराबर होता है और डाउनलोड किया गया ऑडियो आपके बदलावों को दिखाता है।

भाषा जोड़ते समय आप cloning_strength वॉइस सेटिंग (0 से 10, डिफ़ॉल्ट 7) से यह नियंत्रित कर सकते हैं कि डब किए गए स्पीकर सोर्स वॉइस की कितनी मज़बूती से क्लोनिंग करें। क्रिएट लैंग्वेज टार्गेट API रेफरेंस देखें।