すべてのプロダクト
Search
ドキュメントセンター

Intelligent Media Services:TTS 標準インターフェイス

最終更新日:Nov 09, 2025

リアルタイムワークフローを使用すると、標準プロトコルを使用して音声合成 (TTS) モデルにアクセスできます。

自己開発 TTS モデルの標準インターフェイス

自己開発の音声合成 (TTS) モデルをワークフローに追加するには、インターネット経由でアクセス可能な HTTP ストリーミングサービスを実装する必要があります。このサービスは、定義された入力および出力仕様に従って TTS モデルをカプセル化する必要があります。

  1. オーケストレーションコンソールで、音声合成 (TTS) ノードに次のパラメーターを設定します。

名前

タイプ

必須

説明

例

リクエスト URL

String

はい

自己開発モデルの HTTPS エンドポイント。

https://www.abc.com

トークン

String

いいえ

サービスの権限付与トークン。

AUJH-pfnTNMPBm6iWXcJAcWsrscb5KYaLitQhHBLKrI

サンプルレート

Integer

はい

サンプルレート (Hz)。有効な値:

  • 8000

  • 16000

  • 24000

  • 48000

48000

説明

このインターフェイスは、S16LE フォーマットのモノラルオーディオデータのみをサポートします。データを送信する前に、サポートされているフォーマットにリサンプリングしてください。

  1. リアルタイムワークフローが実行されると、サービスはフォームデータを POST リクエストにアセンブルします。このリクエストは、設定した自己開発 TTS モデルの HTTPS エンドポイントに送信されます。次の表にリクエストパラメーターを示します。

名前

タイプ

必須

説明

例

Text

String

はい

音声合成用のテキスト。

Hello

VoiceId

String

いいえ

音声。

yourVoiceId

SampleRate

Integer

はい

サンプルレート (Hz)。

48000

Token

String

いいえ

サービスの権限付与トークン。

AUJH-pfnTNMPBm6iWXcJAcWsrscb5KYaLitQhHBLKrI

ExtendData

String

はい

カスタム TTS 拡張データ。これには、インスタンス ID と、インスタンスの開始時に指定するユーザー定義のビジネスデータが含まれます。

{'InstanceId':'68e00b6640e*****3e943332fee7','ChannelId':'123','SentenceId':'3',UserData':'{"aaaa":"bbbb"}'}

  • InstanceId

String

はい

インスタンス ID。

68e00b6640e*****3e943332fee7

  • ChannelId

String

はい

チャネル ID。

123

  • SentenceId

Int

はい

Q&A ペア ID。

説明

単一のユーザーの問い合わせに対して、エージェントはその応答に同じ ID を使用します。

3

  • Emotion

String

いいえ

音声の感情。有効な値:

  • neutral

  • happy

  • sad

説明

このパラメーターを指定しない場合、合成された音声には感情の属性がありません。

happy

  • UserData

String

いいえ

インスタンスの起動時に渡されるカスタムビジネスデータ。

{"aaaa":"bbbb"}

説明

生成された PCM オーディオストリームを、対応する音声とサンプルレートとともに、HTTP ストリーミング応答を介してセグメントでサービスに送信します。その後、サービスはオーディオデータを後続のノードにリアルタイムでプッシュします。

カスタム TTS サーバー

Python

次のサンプルコードは、TTS サーバーをカスタマイズする方法を示しています。

from aiohttp import web


async def stream_audio(request):
    data = await request.json()
    text = data.get('Text', "")
    token = data.get('Token', None)
    sample_rate = data.get('SampleRate', 48000)
    extend_data = data.get('ExtendData', "")
    print(f"text:{text}, token:{token}, sample_rate:{sample_rate}, extend_data:{extend_data}")
    # TODO: トークンが有効かどうかを確認します。

    response = web.StreamResponse(
        status=200,
        reason='OK',
        headers={'Content-Type': 'audio/mpeg'}
    )

    # 応答を開始します。
    await response.prepare(request)

    # generate_tts_data は、オーディオデータを生成するコルーチンです。
    async for chunk in generate_tts_data(text, sample_rate):
        await response.write(chunk)

    # 応答を完了します。
    await response.write_eof()

    return response


async def generate_tts_data(text: str, sample_rate: int):
    # TODO: TTS サービスを呼び出して、対応するサンプルレートでオーディオデータを生成します。
    # 例: ファイルからオーディオデータを読み取ります。
    file_path = '/your_dir/sample.pcm'
    with open(file_path, 'rb') as f:
        while True:
            chunk = f.read(4096)  # 毎回 4 KB のデータを読み取ります。
            if not chunk:
                break
            yield chunk

app = web.Application()
app.add_routes([web.post('/stream-audio', stream_audio)])

if __name__ == '__main__':
    web.run_app(app)

リファレンス

コンソールでリアルタイムワークフローテンプレートを作成する