文本转语音与文本转对话 WebSocket
本指南介绍如何为流式语音选择合适的 WebSocket,以及两种协议的区别。
ElevenLabs 提供两类用于流式合成语音的 WebSocket 产品。每类都包含 单流 版本,以及可通过一个连接复用多个独立流的 多上下文 版本。它们解决的问题不同、接受的消息格式不同,面向的模型也不同。
应该使用哪个 WebSocket?
如果要为 每个连接中的一个音色 流式传输纯文本(音色在 URL 中固定),并且需要使用 Flash 或 Multilingual v2 等 非 v3 模型、可选 SSML、分块计划,或用于智能体式打断处理的 多上下文 版本,请使用 文本转语音(TTS)WebSocket。
如果需要 Eleven v3 的对话表现:富有表现力的传达效果、每个分块的 voice_id、轮次边界(new_turn),以及与服务器端 v3 相同的面向对话缓冲机制,请使用 文本转对话(TTD)WebSocket。
如果既需要上述 Eleven v3 对话表现,又需要在单个连接上运行多个并发或交错流,请使用 TTD 多上下文 WebSocket。例如,对话式智能体需要打断并重新开始对话,而无需每次都新建 socket。
如需 批量或 HTTP 流式 对话(一次调用提交完整请求),请使用创建对话或流式对话,而非 WebSocket。
对比
更适合使用 TTS WebSocket 的情况
- 已因延迟或语言覆盖范围集成 Flash 或 Multilingual v2。
- 希望每个连接使用一个旁白音色,并采用简单的每帧文本协议。
- 需要通过 多上下文 协调处理插话和并行话语(多上下文指南)。
有关 TTS WebSocket 的完整说明,请参阅实时生成音频。
更适合使用 TTD WebSocket 的情况
- 面向 Eleven v4 对话(表现力标签、自然对话节奏、多说话人台词)。
- 流式传输脚本化或由 LLM 生成的对话,可在每行切换说话音色,无需新建连接。
- 希望采用 WebSocket 风格的增量输入,并在服务器端使用仅限 v4 的对话生成。
如需实际操作说明,请参阅实时文本转对话。协议详情请参阅 API 参考文档。
多上下文 WebSocket
两种产品均提供 多上下文 版本,可通过单个 WebSocket 连接复用多个独立流。每个上下文由客户端选定的 context_id 标识,分别缓冲各自文本,并输出带有该 context_id 标记的音频分块。TTS 上下文共享连接 URL 中的 voice_id,而 TTD 上下文注册各自的音色和设置。当需要支持打断处理的并发或交错生成时,请使用此格式。例如,语音智能体需要取消正在生成的话语并开始新话语,而无需断开连接。
更适合使用 TTD 多上下文 WebSocket 的情况
- 既需要 Eleven v3 对话表现(富有表现力的传达效果、每个分块的
voice_id、轮次边界),又需要在一个连接上运行并发或交错流。 - 正在构建对话式智能体,需打断并重新开始对话,而无需每次都新建 socket。
- 希望通过一个已验证连接分发多个独立的 v3 对话会话,例如并行场景或说话人。
如需单流 TTD WebSocket,请参阅实时文本转对话。如需 TTS 多上下文 WebSocket,请参阅多上下文 WebSocket 指南。TTD 多上下文端点的协议详情请参阅 API 参考文档。