メインコンテンツまでスキップ

音声合成Streaming API

音声合成Streaming APIはテキストとvoice_idを受け取り、MP3またはWAV音声を HTTP streamまたはWebSocket messageで返します。Base URLは https://api.kitschlabs.comです。

エンドポイント

方式Endpoint用途
POST/v1/text-to-speech/{voice_id}/streamHTTPでaudio binaryを受信
WSS/v1/text-to-speech/{voice_id}/stream-inputWebSocketでテキストを送信してaudio chunkを受信

voice_idGET /v1/voicesのレスポンスから選択します。output_formatmp3_44100_128またはwav_24000に対応しています。

HTTP Streaming API

通常の音声生成と同じJSON bodyを送信し、選択した形式のaudio binaryを streamで受信します。

curl --request POST \
"https://api.kitschlabs.com/v1/text-to-speech/<VOICE_ID>/stream?output_format=mp3_44100_128" \
--header "xi-api-key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"text": "今日も良い一日をお過ごしください。",
"language_code": "ja"
}' \
--output speech.mp3
フィールド位置必須説明
voice_idpathstringはい使用する音声ID
output_formatquerystringいいえmp3_44100_128またはwav_24000
textbodystringはい合成するテキスト
language_codebodystringいいえenkojazhのいずれか
instructbodystringいいえ話し方に関する自然言語の指示

成功すると、audio/mpegまたはaudio/wavのContent-Typeを持つbinary responseを 返します。

WebSocket Streaming API

output_formatlanguage_codeをquery parameterに指定して接続します。

wss://api.kitschlabs.com/v1/text-to-speech/<VOICE_ID>/stream-input?output_format=mp3_44100_128&language_code=ja

WebSocket handshakeでxi-api-keyヘッダーを送信するか、最初のJSON messageに xi_api_keyを含めて認証します。1つの音声として生成するテキストをmessageで 送信し、最後のmessageでflushtrueに設定します。

{"text":"今日も良い","xi_api_key":"<API_KEY>"}
{"text":"一日をお過ごしください。","flush":true}

サーバーはbase64 audio chunkを返します。

{"audio":"<BASE64_AUDIO_CHUNK>","isFinal":false}

1つの音声の送信が完了すると、最後のmessageを返します。

{"audio":null,"isFinal":true}

接続を終了するには、空のtextを送信します。

{"text":""}

textはstring、flushはbooleanである必要があります。不正なmessageや リクエストでは、error.statuserror.messageを含むJSONが返される場合が あります。

HTTPのエラーコードと再試行の基準は音声合成APIを 参照してください。