このドキュメントは英語の原文から自動翻訳されています。表現に不自然な箇所がある場合があります。正確な内容は英語の原文もあわせてご確認ください。
text を 1 リクエストあたり 300 文字 までに制限しています。これを超えると 400 Bad Request が返ります。より長いスクリプトを合成するには、次の 2 つの方法があります。
- SDK を利用する。 Python と TypeScript の SDK はいずれも、長い入力を自動的に分割し、各セグメントを生成して、オーディオを結合してくれます。入力が 2,000 文字であっても、最終的なクリップが 1 つ返ります。
- 自分でチャンク分割する。 REST API を直接呼び出す場合は、文の区切りでテキストを分割し、得られたオーディオを連結します。
300 文字制限の概要
| Layer | Behavior on >300 characters |
|---|---|
REST API (POST /v1/text-to-speech/{voice_id}) | 400 Bad Request を返します。 |
Python SDK (create_speech, stream_speech) | 300 文字で自動分割し、create_speech では並列生成(ストリーミングでは順次)してオーディオを結合します。 |
TypeScript SDK (createSpeech, streamSpeech) | 300 文字で自動分割し、順次生成してオーディオを結合します。 |
predict_duration | 自動チャンク分割されません — 同じ 300 文字制限が適用されます。 |
SDK の自動チャンク分割の流れ
- Python
- TypeScript
LONG_TEXT を文の区切り(次に単語の区切り、さらに 1 単語が長すぎる場合は文字の区切り)で分割し、最大 3 つの create_speech リクエストを並列実行し、中間ファイルのヘッダーを除去したうえで WAV / MP3 オーディオを結合します。長い入力のストリーミング
SDK はstream_speech / streamSpeech でも自動的にチャンク分割します。オーディオは単一の連続ストリームのようにイテレータへ渡されるため、呼び出し側は内部でいくつのセグメントが使われたかを知る必要はありません。
ストリーミングのパターンについては Stream speech を参照してください。
自分でチャンク分割する場合(cURL や生の HTTP)
REST API を直接呼び出す場合は、送信前にテキストを分割する必要があります。妥当な方針は次のとおりです。- 文末の句読点(
.、!、?、。、?)で分割する。 - それでも 300 文字を超える文がある場合は、カンマで、さらに単語境界で分割する。
- 各セグメントについて
POST /v1/text-to-speech/{voice_id}を呼び出し、返ってきたオーディオを出力ファイルに追記する。 - WAV を連結する場合は、2 つ目以降のセグメントから WAV ヘッダー(先頭 44 バイト)を除去すると、最終ファイルが 1 つのクリップとして再生されます。
ヒント
- 句読点は重要です。 自動チャンク分割は文の区切りを優先します。句読点が適切に打たれた入力ほど、きれいな分割と自然なつなぎになります。
- まずコストを見積もりましょう。
predict_durationは自動チャンク分割しませんが、自前でテキストを分割して長さを合計すれば、合計クレジットを見積もれます。 - レート制限に注意。 1 つの長い入力は複数の TTS リクエストになります — アカウントの レート制限 を確認し、必要に応じて呼び出し側で流量制御を行ってください。
関連項目
長文ナレーション
複数段落のナレーションを生成するエンドツーエンドの例。
レート制限
プランごとの 1 分あたりのリクエスト上限。