Speech Engine 快速入门
Speech Engine 快速入门
使用 ElevenLabs SDK 为聊天智能体添加语音功能。
本指南将带你使用 Speech Engine 构建语音智能体。首先设置服务器,将 LLM 连接到 ElevenLabs;然后接入浏览器客户端,让用户能与你的智能体进行语音对话。
使用 ElevenLabs Speech Engine skill 为聊天智能体添加语音功能:
Speech Engine 的工作原理
Speech Engine 将 LLM 连接到 ElevenLabs,让用户能与智能体对话并听到回应。ElevenLabs 负责语音转文本和文本转语音;服务器提供 LLM 逻辑。
每个 WebSocket 连接代表一段对话。用户说话时,ElevenLabs 会转录音频并将转录文本发送到服务器。服务器将其传给 LLM,再将响应流式传回。ElevenLabs 会将文本转为语音并在浏览器中播放。SDK 负责连接管理、轮次管理和打断检测。
前提条件
本教程使用 OpenAI 的 API 作为 LLM。需要在 OPENAI_API_KEY 环境变量中设置 OpenAI API 密钥。
服务器设置
公开服务器
Speech Engine 需要可从公网访问的 URL。使用 ngrok 公开本地服务器。服务器尚未构建完成,但 ngrok 必须先运行,以便获取下一步所需的 URL。
复制转发 URL(例如 https://abc123.ngrok.io)。
创建 Speech Engine 实例
使用 SDK 创建 Speech Engine 实例,并将附加 /ws 路径的 ngrok URL 作为 WebSocket URL 传入。
运行此脚本,并复制 Speech Engine ID(例如 seng_8k3m9xr4hjnfg983brhmhkd98n6),供下一步使用。
创建服务器
创建名为 server.py 或 server.mts 的文件,并填入以下内容。这会设置服务器,将 Speech Engine 挂载到 /ws 路径,并使用 OpenAI 生成响应。
onTranscript / on_transcript 回调会接收完整对话历史和当前会话。TypeScript SDK 还提供 AbortSignal,用户在响应过程中打断时会触发。将 signal 传给 OpenAI 调用,可在打断时自动取消 LLM 请求。
sendResponse() / send_response() 接受字符串、异步可迭代对象,或来自 OpenAI、Anthropic 或 Google Gemini 的流。SDK 会自动提取文本内容。
在上述示例中,用户的完整转录文本会传给 LLM。生产环境中应添加护栏,防范提示词注入或操纵尝试。
客户端设置
会话事件
配置智能体的首条消息
默认情况下,智能体会等待用户先说话。要让智能体在对话开始时问候用户,请在客户端启动会话时的 overrides 选项中设置首条消息。
连接建立后,智能体会立即说出首条消息。它不会触发服务器上的 onTranscript 回调——完全由 ElevenLabs 端处理。