音声合成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}/stream | HTTPでaudio binaryを受信 |
WSS | /v1/text-to-speech/{voice_id}/stream-input | WebSocketでテキストを送信してaudio chunkを受信 |
voice_idはGET /v1/voicesのレスポンスから選択します。output_formatは
mp3_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_id | path | string | はい | 使用する音声ID |
output_format | query | string | いいえ | mp3_44100_128またはwav_24000 |
text | body | string | はい | 合成するテキスト |
language_code | body | string | いいえ | en、ko、ja、zhのいずれか |
instruct | body | string | いいえ | 話し方に関する自然言語の指示 |
成功すると、audio/mpegまたはaudio/wavのContent-Typeを持つbinary responseを
返します。
WebSocket Streaming API
output_formatとlanguage_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でflushをtrueに設定します。
{"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.statusとerror.messageを含むJSONが返される場合が
あります。
HTTPのエラーコードと再試行の基準は音声合成APIを 参照してください。