すべてのプロダクト
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)

リファレンス

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