context_id 区分。multilingual_v2、flash_v2_5。建立连接 → 初始化 Context → 发送文本 → flush → close_context → 等待 Context finalwss://api.voicelibrary.co/enterprise/v1/tts/{voice_id}/websocket/multiwss://api.us.voicelibrary.co/enterprise/v1/tts/{voice_id}/websocket/multiwss://api.eu.voicelibrary.co/enterprise/v1/tts/{voice_id}/websocket/multiwss://api.jp.voicelibrary.co/enterprise/v1/tts/{voice_id}/websocket/multi{voice_id},并在 WebSocket 握手 Header 中传入:api-key: <YOUR_API_KEY>flash_v2_5、multilingual_v2;不支持 myvocal_v3dedicated_concurrencypcm_16000,可选值见下方参数表20,范围 1..180en、zh;必须与所选模型实际支持的语言一致0..4294967295;相同配置下用于提升生成一致性,不保证音频逐字节相同format。若 SDK 中的对应选项名为 output_format,请通过该选项设置音频格式,避免重复设置不同值。wss://api.voicelibrary.co/enterprise/v1/tts/{voice_id}/websocket/multi?model_id=flash_v2_5&priority=dedicated_concurrency&format=pcm_16000&idleTimeout=20&language_code=zhcontext_id 必填且不能为空。voice_settings、previous_text、next_text、generation_config 属于初始化消息。voice_settings 只应出现在该 Context 的第一条消息中。close_context 不是隐式 flush。未先 flush 就关闭表示打断或取消,不能保证输出剩余缓冲音频。{
"context_id": "ctx_001",
"text": " ",
"previous_text": "上一句,可选",
"next_text": "下一句,可选",
"voice_settings": {
"stability": 0.5,
"similarity_boost": 0.75,
"style": 0.3,
"use_speaker_boost": true
},
"generation_config": {
"synthesisSchedule": [120, 160, 250, 290]
}
}stability、similarity_boost、style 的取值范围均为 0..1。{
"context_id": "ctx_001",
"text": "Hello world.",
"flush": false
}{
"context_id": "ctx_001",
"text": "",
"flush": true
}{
"context_id": "ctx_001",
"close_context": true
}is_final=true 或 isFinal=true。close_context=true。这会结束当前 Context;尚未 flush 的文本可能无法完整输出。{
"context_id": "ctx_001",
"text": ""
}{
"close_socket": true
}{
"context_id": "ctx_001",
"audio": "BASE64_AUDIO_DATA",
"is_final": false
}{
"context_id": "ctx_001",
"is_final": true
}context_id / contextId 和 is_final / isFinal。audio 可以为空、缺失或为 null,仍表示该 Context 成功完成。audio 为 Base64;也可能收到二进制帧。只有在服务端协议能关联到 Context 时,才能把直接二进制音频路由给对应 Context。timestamps 或 alignment。error 和 message。客户端应能处理未列出的错误码,并保留错误信息用于排查。connect -> initialize context -> send text -> flush -> close_context -> wait context final