Hoppa till navigering

Förfina och generera om en dubbning

Redigera källtranskriptet och översättningarna och generera sedan om ljudet för ett språk.

Guide · Förutsätter att du har skapat ett dubbningsprojekt och genererat minst ett språk, enligt Snabbstart för dubbning.

Slutpunkterna för transkriptredigering och omgenerering som används i den här guiden är endast tillgängliga för företagsarbetsytor. Kontakta säljteamet för åtkomst.

En dubbning är bara så korrekt som transkriptet den bygger på. Den här guiden beskriver de två ställen där du kan göra korrigeringar – källtranskriptet och ett språks översättning – samt hur du omgenererar ljudet när du är nöjd.

Så fungerar revideringar

Varje projekt och varje språk har en egen revision-räknare, som båda börjar på 0.

  • Att redigera källtranskriptet ökar projektets revision. Själva transkriberingen gör det inte.
  • Att redigera en översättning ökar det språkets revision. Det påverkar inte källan eller något annat språk.
  • Ett språk rapporterar också output_revision: den revidering som det aktuella ljudet genererades från. När output_revision ligger efter revision är det nedladdade ljudet inaktuellt och språkets status blir stale.

Korrigera om möjligt källtranskriptet innan du lägger till språk. Översättningar skapas från källan, så om du först rättar källan börjar varje språk med rätt text. Om du redigerar källan efter att ett språk har skapats markeras språket som stale och måste omgenereras.

Redigera källtranskriptet

Läs källtranskriptet för att hämta varje segments stabila id och redigera, lägg sedan till eller ta bort segment.

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

När du redigerar tidssättning måste end_s vara större än start_s. Nya segment kräver alla fyra fält (text, speaker_id, start_s, end_s); servern tilldelar segmentets id.

Förfina en översättning

Ett språktrankript kopplar ihop varje källsegment med dess översättning. Segmentens id-värden matchar källtranskriptet, så du kan jämföra översättningar med originaltexten. Redigera ett enskilt segments översättning för att åsidosätta maskinöversättningen. Skicka null för att rensa en översättning och markera segmentet för ny översättning.

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

Att redigera en översättning höjer språkets revision. Om språket redan var klart blir det stale och behåller sitt tidigare ljud tills du omgenererar.

Omgenerera ljudet

Efter att du har redigerat källtranskriptet eller en översättning omgenererar du språket för att skapa en ny dubbning från det aktuella transkriptet. Omgenerering debiteras som en generering.

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)

Omgenerering returnerar 409 Conflict om projektet inte är ready eller språket inte är i ett stabilt tillstånd, till exempel när det redan genererar. När språket åter når completed är output_revision lika med revision och det nedladdade ljudet återspeglar dina ändringar.

Du kan styra hur starkt de dubbade talarna klonar källrösterna med röstinställningen cloning_strength (0 till 10, standardvärde 7) när du lägger till ett språk. Se API- referensen för skapa språkmål.