複数の言語に吹き替える

1つのプロジェクトに複数のターゲット言語を追加し、各吹き替えをダウンロードします。

ハウツーガイド · ダビングクイックスタートで示したように、ダビングプロジェクトを作成済みであることを前提としています。

1つのプロジェクトには1つの元トランスクリプトが含まれ、必要な数だけ言語ターゲットを追加できます。各言語は独立して生成され、それぞれにステータスと出力があるため、元データを一度翻訳するだけで、すべての吹き替えを生成できます。

複数の言語を追加する

吹き替える言語ごとに言語ターゲットを1つ追加します。各ターゲットは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で追加してください。

言語は、esやfr-CAなどのBCP-47タグで指定します。使用できるすべての値については、対応言語と方言を参照してください。

各言語を個別に追跡する

言語は並行して生成され、完了時刻も異なります。1つずつポーリングするのではなく、プロジェクトの言語を一覧表示してそれぞれのステータスを確認してください。

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は発行から約1時間で期限切れになります。URLの期限切れでダウンロードに失敗した場合は、language.getで言語を再度取得して新しいURLを取得してください。

言語の生成に失敗した場合は、新しいプロジェクトを作成するのではなく、同じプロジェクトでlanguage.createを使用して再度追加してください。プロジェクトとそのトランスクリプトは再利用できるため、失敗した言語だけが再生成されます。