Affiner et régénérer un doublage

Modifiez la transcription source et les traductions, puis régénérez l’audio d’une langue.

Guide pratique · Suppose que vous avez créé un projet de doublage et généré au moins une langue, comme indiqué dans le guide de démarrage rapide du doublage.

Les points de terminaison de modification et de régénération des transcriptions utilisés dans ce guide ne sont disponibles que pour les Workspaces Enterprise. Contactez notre équipe commerciale pour y accéder.

La précision d’un doublage dépend de la transcription sur laquelle il repose. Ce guide présente les deux endroits où vous pouvez apporter des corrections, la transcription source et la traduction d’une langue, ainsi que la façon de régénérer l’audio une fois satisfait du résultat.

Fonctionnement des révisions

Chaque projet et chaque langue possèdent leur propre compteur revision, qui commence à 0.

  • Modifier la transcription source incrémente la revision du projet. La transcription elle-même ne l’incrémente pas.
  • Modifier une traduction incrémente la revision de cette langue. Cela n’affecte ni la source ni les autres langues.
  • Une langue indique également output_revision : la révision à partir de laquelle son audio actuel a été généré. Lorsque output_revision est inférieur à revision, l’audio téléchargé n’est plus à jour et le statut de la langue devient stale.

Corrigez la transcription source avant d’ajouter des langues lorsque c’est possible. Les traductions sont produites à partir de la source ; la corriger d’abord permet à chaque langue de partir du bon texte. Modifier la source après avoir créé une langue marque cette langue comme stale et nécessite une régénération.

Modifier la transcription source

Lisez la transcription source pour obtenir l’id stable de chaque segment, puis modifiez, ajoutez ou supprimez des segments.

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

Lors de la modification des timings, end_s doit être supérieur à start_s. Les nouveaux segments nécessitent les quatre champs (text, speaker_id, start_s, end_s) ; le serveur attribue l’id du segment.

Affiner une traduction

La transcription d’une langue associe chaque segment source à sa traduction. Les valeurs id des segments correspondent à la transcription source, ce qui vous permet d’aligner les traductions sur le texte original. Modifiez la traduction d’un seul segment pour remplacer la traduction automatique. Transmettez null pour effacer une traduction et marquer ce segment pour une nouvelle traduction.

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

Modifier une traduction incrémente la revision de la langue. Si la langue était déjà terminée, elle devient stale et conserve son audio précédent jusqu’à sa régénération.

Régénérer l’audio

Après avoir modifié la transcription source ou une traduction, régénérez la langue pour produire un nouveau doublage à partir de la transcription actuelle. La régénération est facturée comme une génération.

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)

La régénération renvoie un 409 Conflict si le projet n’est pas ready ou si la langue n’est pas dans un état stable, par exemple lorsqu’elle est déjà en cours de génération. Lorsque la langue atteint à nouveau l’état completed, output_revision est égal à revision et l’audio téléchargé reflète vos modifications.

Vous pouvez contrôler à quel point les locuteurs doublés clonent les voix sources avec le paramètre vocal cloning_strength (de 0 à 10, 7 par défaut) lors de l’ajout d’une langue. Consultez le Guide de l’API create language target.