亚200毫秒语音 AI:连接 Twilio 与 OpenAI 实时 API

发布: (2026年3月15日 GMT+8 03:01)
5 分钟阅读
原文: Dev.to

Source: Dev.to

看起来您只提供了来源链接,而没有贴出需要翻译的正文内容。请把您想要翻译的文本粘贴在这里,我会按照要求将其翻译成简体中文并保留原有的格式。

传统语音 AI 的问题

经典流程是:

  1. 语音转文本 (STT) – 500 ms – 1 s
  2. LLM 推理 – 500 ms – 2 s
  3. 文本转语音 (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。

部署详情

ComponentDetails
ServerNode.js,月费 $10 的 VPS
PhoneTwilio(呼入 + 呼出)
AIOpenAI 实时 API(gpt-4o-realtime-preview
Process managerPM2
Domainrealtime.byldr.co(直接指向 VPS;不使用 Cloudflare 代理,因为 WebSocket 通过它表现不佳)
SSLLet’s Encrypt 证书

延迟与成本

  • 端到端延迟: 大约 200 ms,从用户话语结束到代理回复开始——足够快,能够产生对话感受。
  • 基础设施成本: 约 $15 / 月,加上按分钟计费的 API 使用费。
  • 价格说明: 音频 token 的费用显著高于文本 token;在高流量场景下,使用更便宜的语音转文字(如 Deepgram)的传统三步流水线可能更具成本效益,尽管延迟更高。

可靠性考虑

WebSocket 重连逻辑至关重要。Twilio Media Streams 可能会出现间歇性中断;如果任一套接字掉线,桥接必须优雅地重新启动,以避免呼叫者出现沉默。

结论

你不需要复杂的 MLOps 平台来构建真实感的语音 AI。一个普通的 VPS、两个 WebSocket 连接以及精心的音频管道即可实现低于 200 ms 的对话延迟和自然的代理人声音。

0 浏览
Back to Blog

相关文章

阅读更多 »