ナビゲーションにスキップ

複数のリクエストを連結する

このガイドでは、複数のテキストチャンクや生成にわたって音声の韻律を維持する方法を説明します。

ハウツーガイド · ElevenAPI クイックスタートを完了していることを前提としています。

大量のテキストをオーディオに変換すると、チャンクが切り替わる際に韻律が急に変化することがあります。複数の段落やセクションにまたがるテキストを変換する場合は、特に目立つことがあります。複数のチャンクにわたって音声の韻律を維持するには、リクエスト連結機能を使用できます。

この機能では、すでに生成された内容と今後生成される内容をコンテキストとして提供できるため、テキスト全体で一貫した音声と韻律を維持できます。

リクエスト連結はeleven_v3モデルでは利用できません。

リクエスト連結を使用しない場合の例:

同じ例でリクエスト連結を使用した場合:

リクエスト連結の使い方

リクエスト連結は、ElevenLabs SDKを使うと簡単に利用できます。

このガイドでは、APIキーとSDKの設定が完了していることを前提としています。まだの場合は、 先にクイックスタートを完了してください。

1

複数のリクエストを連結する

使用する言語に応じてexample.pyまたはexample.mtsという名前の新しいファイルを作成し、次のコードを追加します:

previous_request_idsに指定できるリクエストIDは最大3件です。4件以上指定すると 400エラーが返されます。直近の3件のIDを、現在のリクエストに最も近いものが最後になる順で渡してください。

import os
from io import BytesIO
from elevenlabs.client import ElevenLabs
from elevenlabs.play import play
from dotenv import load_dotenv
load_dotenv()
ELEVENLABS_API_KEY = os.getenv("ELEVENLABS_API_KEY")
elevenlabs = ElevenLabs(
api_key=ELEVENLABS_API_KEY,
)
paragraphs = [
"The advent of technology has transformed countless sectors, with education ",
"standing out as one of the most significantly impacted fields.",
"In recent years, educational technology, or EdTech, has revolutionized the way ",
"teachers deliver instruction and students absorb information.",
"From interactive whiteboards to individual tablets loaded with educational software, ",
"technology has opened up new avenues for learning that were previously unimaginable.",
"One of the primary benefits of technology in education is the accessibility it provides.",
]
request_ids = []
audio_buffers = []
for paragraph in paragraphs:
# Usually we get back a stream from the convert function, but with_raw_response is
# used to get the headers from the response
with elevenlabs.text_to_speech.with_raw_response.convert(
text=paragraph,
voice_id="T7QGPtToiqH4S8VlIkMJ",
model_id="eleven_v4",
# The API accepts at most 3 previous request IDs
previous_request_ids=request_ids[-3:]
) as response:
request_ids.append(response._response.headers.get("request-id"))
# response._response.headers also contains useful information like 'character-cost',
# which shows the cost of the generation in characters.
audio_data = b''.join(chunk for chunk in response.data)
audio_buffers.append(BytesIO(audio_data))
combined_stream = BytesIO(b''.join(buffer.getvalue() for buffer in audio_buffers))
play(combined_stream)
2

コードを実行する

python example.py

連結されたオーディオが再生されます。

よくある質問

前のリクエストのIDを条件付けに使用するには、そのリクエストの処理が完全に終了している必要があります。ストリーミングの場合は、レスポンス本文からオーディオを最後まで読み取る必要があります。

違いは、使用するモデル、音声、音声設定によって異なります。

使用するリクエストIDは、2時間以内に発行されたものにしてください。

はい。ただし、プライバシー要件を強化しているエンタープライズユーザーは除きます。

次のステップ