亚200毫秒语音 AI:连接 Twilio 与 OpenAI 实时 API
Source: Dev.to
看起来您只提供了来源链接,而没有贴出需要翻译的正文内容。请把您想要翻译的文本粘贴在这里,我会按照要求将其翻译成简体中文并保留原有的格式。
传统语音 AI 的问题
经典流程是:
- 语音转文本 (STT) – 500 ms – 1 s
- LLM 推理 – 500 ms – 2 s
- 文本转语音 (TTS) – ~500 ms
这样累计会产生 1.5 – 3.5 秒 的空白时间,在代理回复之前。人类会注意到超过约 300 ms 的停顿。
OpenAI 实时 API
OpenAI 的实时 API 用单个 WebSocket 取代了三步管道,接受原始音频并流式返回音频。模型直接“听取”音频并“说出”回应,消除了转录往返。
Source:
将 Twilio 媒体流桥接到 OpenAI
当有呼叫打入 Twilio 号码时,Twilio 会打开一个 Media Stream——一个通过 WebSocket 发送原始音频数据包(µ‑law,8 kHz)的通道。我们的 Node.js 服务器充当一个轻量级桥梁:
Phone Call → Twilio → Media Stream WS → Our Server → OpenAI Realtime WS服务器的职责:
- 将来自 Twilio 的音频块转发给 OpenAI。
- 将 OpenAI 的音频响应回传给 Twilio。
- 进行最小化处理,以保持低延迟。
核心桥接代码(JavaScript)
// Twilio → OpenAI
twilioWs.on("message", (data) => {
const msg = JSON.parse(data);
if (msg.event === "media") {
openaiWs.send(JSON.stringify({
type: "input_audio_buffer.append",
audio: msg.media.payload // already base64 µ-law
}));
}
});
// OpenAI → Twilio
openaiWs.on("message", (data) => {
const event = JSON.parse(data);
if (event.type === "response.audio.delta") {
twilioWs.send(JSON.stringify({
event: "media",
streamSid: streamSid,
media: { payload: event.delta }
}));
}
});该循环几乎没有额外开销,就能实现音频的双向传输。
附加功能
转录
{
"input_audio_transcription": { "model": "whisper-1" }
}启用双方的异步转录,提供完整通话记录且不会增加响应延迟。
语音选择
OpenAI 提供了多种语音;作者选择了 ash,以获得更深沉、更自然的男性呈现代理。Realtime API 的语音质量超越传统 TTS。
中断处理(抢话)
Realtime API 能原生检测呼叫者在代理说话时抢话,立即停止播放——无需自定义 VAD。
部署详情
| Component | Details |
|---|---|
| Server | Node.js,月费 $10 的 VPS |
| Phone | Twilio(呼入 + 呼出) |
| AI | OpenAI 实时 API(gpt-4o-realtime-preview) |
| Process manager | PM2 |
| Domain | realtime.byldr.co(直接指向 VPS;不使用 Cloudflare 代理,因为 WebSocket 通过它表现不佳) |
| SSL | Let’s Encrypt 证书 |
延迟与成本
- 端到端延迟: 大约 200 ms,从用户话语结束到代理回复开始——足够快,能够产生对话感受。
- 基础设施成本: 约 $15 / 月,加上按分钟计费的 API 使用费。
- 价格说明: 音频 token 的费用显著高于文本 token;在高流量场景下,使用更便宜的语音转文字(如 Deepgram)的传统三步流水线可能更具成本效益,尽管延迟更高。
可靠性考虑
WebSocket 重连逻辑至关重要。Twilio Media Streams 可能会出现间歇性中断;如果任一套接字掉线,桥接必须优雅地重新启动,以避免呼叫者出现沉默。
结论
你不需要复杂的 MLOps 平台来构建真实感的语音 AI。一个普通的 VPS、两个 WebSocket 连接以及精心的音频管道即可实现低于 200 ms 的对话延迟和自然的代理人声音。