Phone Voice Agent

📞 实时 AI 电话代理,一键搭建语音客服

基于 Twilio + Deepgram + ElevenLabs 的实时 AI 电话代理,支持语音识别、LLM 对话与流式语音合成,适合快速搭建语音客服或测试语音 AI 能力。

收藏
11.4k
安装
2.8k
版本
1.0.0
CLS 安全性认证2026-05-12
点击查看完整报告 >

使用说明

核心用法

Phone Agent 是一个本地 FastAPI 服务器,充当实时语音桥梁,将电话通话与 AI 对话能力连接起来。使用时需配置 Twilio 电话号码、Deepgram(语音识别)、OpenAI(对话逻辑)、ElevenLabs(语音合成)四项服务,通过 ngrok 暴露本地端口完成公网映射,即可实现:接听来电 → 实时转录用户语音 → LLM 生成回复 → 流式 TTS 播报的完整闭环。

显著优点

1. 实时性强:采用 WebSocket 双向流式传输,延迟可控在 1-2 秒内,接近自然对话节奏
2. 模块化架构:STT/LLM/TTS 三组件解耦,可独立替换供应商(如将 Deepgram 换成 Whisper,ElevenLabs 换成 Azure TTS)

3. 开箱即用:提供完整的 scripts/server.py 和依赖清单,无需从零编写信令处理

4. 可定制性高:支持修改 system prompt 更换人设、切换 voice ID 调整音色、升级模型平衡成本与智能程度

潜在缺点与局限性

  • 基础设施依赖重:需同时维护 4 个外部 API 密钥和 ngrok 隧道,任一服务故障即导致全链路中断
  • 成本叠加:Twilio 通话费 + Deepgram 转录费 + OpenAI tokens + ElevenLabs 字符费,长对话成本显著高于纯文本交互
  • 网络稳定性敏感:本地开发依赖 ngrok,生产环境需部署至云服务器并处理 WebSocket 高并发
  • 无内置记忆:默认实现未提及对话历史持久化,多轮上下文依赖单次 session 内存

适合人群

  • 希望快速验证语音 AI 产品原型的开发者
  • 需要搭建简单电话客服或预约系统的中小企业
  • 对实时语音交互技术栈(WebSocket + 流式 TTS)感兴趣的学习者

常规风险

  • API 密钥泄露:若 .env 文件权限配置不当或误提交至代码仓库,可能导致密钥被盗刷
  • 电话欺诈滥用:Twilio 号码若被恶意利用进行骚扰或诈骗,可能引发法律追责
  • 隐私合规:通话录音涉及个人语音生物特征,需确保符合 GDPR/《个人信息保护法》等法规

安全解读

核心功能

Phone Agent Skill 是一个实时AI电话代理系统,通过FastAPI本地服务器桥接Twilio电话网络与多个AI云服务,实现端到端的语音对话能力。核心流程为:Twilio来电 → WebSocket音频流传输 → Deepgram实时语音转写 → OpenAI LLM生成回复 → ElevenLabs流式语音合成 → 播放回用户。

显著优点

  • 低延迟实时交互:采用WebSocket全双工通信,配合流式STT/TTS,实现接近真人的对话体验
  • 模块化架构:STT、LLM、TSS三个核心能力解耦,可独立替换供应商(如将GPT-4切换为Claude,或更换语音音色)
  • 开发友好:一键启动本地服务器,配合ngrok即可快速测试,无需部署复杂基础设施
  • 通话记录留存:自动保存转录文本到本地,便于后续分析和质检

潜在局限与风险

  • 多依赖脆弱性:同时依赖5个外部云服务(Deepgram/OpenAI/ElevenLabs/Twilio/Brave),任一服务故障或限流即导致中断
  • 成本累积风险:实时电话流持续产生API调用费用,长时间通话或高并发场景成本显著
  • 隐私合规挑战:语音数据流经第三方云服务,需确保用户知情同意;本地存储的通话记录缺乏自动清理机制
  • 网络暴露需求:必须使用ngrok等工具暴露本地端口,增加攻击面
  • 无内置防护:缺少速率限制、输入验证和连接数控制,存在资源耗尽风险

适合人群

  • 快速原型验证语音AI能力的开发者
  • 需要搭建智能客服、预约系统、电话调查等场景的技术团队
  • 具备一定DevOps经验、能妥善管理多API密钥的用户

常规风险提示

部署前务必配置环境变量权限(600)、使用独立Twilio测试号码、设置通话时长上限,并定期清理本地通话记录。生产环境建议添加服务健康检查和降级策略。

Phone Voice Agent 内容

scripts文件夹
tasks文件夹
手动下载zip · 18.0 kB
requirements.txttext/plain
请选择文件