> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

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

> **Note**
>
> **कैसे करें गाइड** · इसमें माना गया है कि आपने एक डबिंग प्रोजेक्ट बनाया है और कम से कम एक भाषा जनरेट की है,
> जैसा कि [डबिंग क्विकस्टार्ट](/docs/hi/eleven-api/guides/cookbooks/dubbing) में दिखाया गया है।

> **Warning**
>
> इस गाइड में इस्तेमाल किए गए ट्रांसक्रिप्ट एडिटिंग और रीजनरेशन एंडपॉइंट सिर्फ़
> एंटरप्राइज़ वर्कस्पेस के लिए उपलब्ध हैं। ऐक्सेस के लिए [सेल्स](https://elevenlabs.io/contact-sales) से संपर्क करें।

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

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

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

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

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

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

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

```python
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,
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import "dotenv/config";

const elevenlabs = new ElevenLabsClient();

// Replace with your project's ID
const projectId = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3";

// Read the source transcript
const transcript = await elevenlabs.dubbing.project.transcript.get(projectId);
const firstSegment = transcript.segments[0];

// Correct a segment's text
await elevenlabs.dubbing.project.transcript.updateSegment(projectId, firstSegment.id, {
  text: "Welcome to our latest product demo.",
});

// Add a segment (reuse an existing speakerId so it is dubbed with that voice)
const added = await elevenlabs.dubbing.project.transcript.createSegment(projectId, {
  text: "Thanks for watching.",
  speakerId: firstSegment.speakerId,
  startS: 40.0,
  endS: 42.0,
});

// Delete the segment we just added
await elevenlabs.dubbing.project.transcript.deleteSegment(projectId, added.segment.id);
```

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

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

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

```python
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.",
)
```

```typescript
const projectId = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3";
const languageId = "lang_1001kwkyxp0je6ktn4knsfrasx5s";

// Read the language's translations
const target = await elevenlabs.dubbing.project.language.transcript.get(projectId, languageId);
const firstSegment = target.segments[0];

// Refine a single translation
await elevenlabs.dubbing.project.language.transcript.updateSegment(
  projectId,
  languageId,
  firstSegment.id,
  { translation: "Bienvenido a nuestra última demostración de producto." }
);
```

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

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

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

```python
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)
```

```typescript
// Regenerate from the current transcript
await elevenlabs.dubbing.project.language.transcript.regenerate(projectId, languageId);

// Poll until the new output is ready
let language = await elevenlabs.dubbing.project.language.get(projectId, languageId);
while (language.status !== "completed") {
  if (language.status === "failed") throw new Error("Regeneration failed");
  await new Promise((resolve) => setTimeout(resolve, 5000));
  language = await elevenlabs.dubbing.project.language.get(projectId, languageId);
}

console.log("Fresh output at", language.outputs!.losslessAudio!);
```

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

> **Note**
>
> भाषा जोड़ते समय आप `cloning_strength` वॉइस सेटिंग (0 से 10, डिफ़ॉल्ट 7) से यह नियंत्रित कर सकते हैं कि
> डब किए गए स्पीकर सोर्स वॉइस की कितनी मज़बूती से क्लोनिंग करें। [क्रिएट लैंग्वेज टार्गेट](/docs/hi/api-reference/dubbing/language-targets/create-language-target) API
> रेफरेंस देखें।