sip-to-ai
aicc2025/sip-to-ai加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你是一家电话客服公司的技术负责人,正在为呼叫中心引入 AI 助手来降低人工成本。调研了一圈却发现:主流的语音 AI 方案要么需要复杂的 WebRTC 部署,要么依赖重型 C 语言库(如 FFmpeg),和公司现有的电话系统根本搭不上。
传统的电话交换系统(FreeSWITCH、Asterisk、OpenSIPS)使用的是标准 SIP/RTP 协议栈,这和 WebRTC 完全不是一个世界。
SIP-to-AI 正是为解决这个" protocol gap "而生——它是一个纯 Python 实现的 SIP-RTP 桥接器,直接把电话音频流导向 OpenAI Realtime API、Deepgram Voice Agent、Gemini Live 或 xAI Grok Voice,让企业现有的电话交换设备无需改造,就能拥有端到端实时 AI 语音对话能力。
近年来,以 OpenAI Realtime API 为代表的端到端实时语音模型火遍全球,但这些模型的输入输出默认都是基于 WebRTC 或自定义协议的音频流。而全球数十万家企业仍在运行基于 SIP(Session Initiation Protocol) 协议的传统电话系统——这是一套诞生于 1996 年的老标准,支撑着从中小企业电话交换机到大型呼叫中心的几乎所有商业语音通信。
两套协议体系之间的"翻译"工作,长期处于空白地带。SIP-to-AI 正是填补这个空白的轻量级桥梁。
这是本项目最具技术亮点的地方:完全不使用任何 C 扩展依赖,整个 SIP/RTP 协议栈完全基于 Python asyncio 从头实现。
核心实现在 app/sip_async/ 目录:
async_sip_server.py:基于 asyncio.TaskGroup 的异步 SIP 服务器,监听 UDP 端口接收 INVITE 请求,创建独立的 AsyncCall 实例处理每个通话。sip_protocol.py:SIP 消息解析器,支持 INVITE、BYE、ACK、CANCEL 等方法,以及 SDP(Session Description Protocol)协商。rtp_session.py:RTP 会话管理,实现 G.711 μ-law 编解码(使用 Python 标准库 audioop),精确的 20ms 帧时序控制(asyncio.sleep() 带漂移校正)。FreeSWITCH/Asterisk (SIP/RTP G.711 8kHz)
↕ SIP/RTP
SIP-to-AI 桥接器
↕ WebSocket
OpenAI Realtime / Deepgram / Gemini / Grok Voice
所有格式转换统一在 app/bridge/audio_adapter.py 中处理,采用环形缓冲区(StreamBuffer)实现流量控制。
app/ai/ 目录实现了四个 AI 服务的统一接口:
| AI 服务 | 文件 | 音频格式 | 备注 |
|---|---|---|---|
| OpenAI Realtime | openai_realtime.py | G.711 μ-law @ 8kHz(原生) | WebSocket 连接,server VAD |
| Deepgram Voice Agent | deepgram_agent.py | G.711 μ-law @ 8kHz | 支持 60db 第三方 TTS |
| Gemini Live | gemini_live.py | PCM16 16kHz/24kHz | 需重采样 |
| xAI Grok Voice | grok_voice.py | G.711 μ-law @ 8kHz | 支持思考模式 |
基类 duplex_base.py 定义了统一的协议接口(AiDuplexClient),所有实现遵循相同的数据流契约,便于扩展新的 AI 服务。
uv 包管理器(已在 pyproject.toml 中声明依赖)git clone <repo>
cd sip-to-ai
uv venv && source .venv/bin/activate
uv sync
cp .env.example .env
# 编辑 .env,填入 AI_VENDOR 和对应 API Key
uv run python -m app.main
服务启动后监听 SIP_DOMAIN:SIP_PORT,等待来电呼叫。每个来电自动创建一个独立的 AI 语音对话会话。
通过 agent_prompt.yaml 可以定义 AI 助手的角色、问候语和行为规则。例如示例中配置了一个"MyDeviceCare 手机维修客服"角色,支持多轮对话流程。
项目包含了完整的测试套件(tests/ 目录),涵盖:
test_bridge_end2end.py:端到端桥接路径测试test_rtp_media_path.py:RTP 媒体流测试test_codec.py:编解码测试test_ring_buffer.py:缓冲区测试test_gemini_live.py、test_grok_voice.py:各 AI 服务集成测试使用 pytest + pytest-asyncio + pytest-cov,代码质量门禁由 mypy(严格模式)+ ruff(lint + format)把控。
SIP-to-AI 的出现代表了一个重要趋势——在企业通信基础设施(已有数十年积累的 SIP 电话系统)和新一代 AI 能力之间,搭建最小阻力路径。不需要替换整个电话系统,不需要引入复杂的 WebRTC 中间件,只要一个纯 Python 桥接器,就能让企业客服热线、预约系统、电话机器人立刻拥有 GPT-4o 级别的语音交互能力。
这是一个典型的"缝合"项目,但它缝合得非常干净——纯 asyncio 实现、无 C 依赖、架构清晰、测试完善。对有电话系统运维经验的企业 IT 团队来说,SIP-to-AI 是一个值得关注的低成本 AI 升级方案。