voiceblender
开源语音AI中间件:统一控制SIP电话、WebRTC通话和WhatsApp,实现多方混音、录音和AI Agent接入
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
开源语音AI中间件:统一控制SIP电话、WebRTC通话和WhatsApp,实现多方混音、录音和AI Agent接入
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:一家客服中心同时接入了微信电话、传统固话、移动 App 和网页端的语音咨询,每一条通话来自不同的"世界"——固话走的是传统运营商的 SIP 协议,微信用的是私有信令,网页端则是 WebRTC。当一位用户从微信转接到固话时,客服要么丢失上下文,要么需要昂贵的专有中间件才能打通。
这就是 VoiceBlender 试图解决的问题。它是一个用 Go 语言编写的开源语音中间件,以 REST API + WebSocket 事件流 为核心,将 SIP 电话、WebRTC 浏览器通话、WhatsApp Business Calling 等多种语音通道纳入统一控制平面,开发者无需关心底层协议细节,只需调用 API 即可操控通话、混音、录音和 AI 接入。
VoiceBlender 的技术选型非常硬核。它基于 Go 语言构建,充分利用 Go 的高并发和轻量协程优势来处理并发的媒体流。核心技术栈包括:
emiago/sipgo — 实现完整的 RFC 3261 SIP 用户代理,支持 INVITE/ACK/BYE/REGISTER 等全部核心方法pion/webrtc/v4 — 处理 SDP 协商、ICE 打洞、DTLS-SRTP 加密go-chi/chi/v5 — 轻量 REST API 路由gobwas/ws — 高性能 WebSocket 实现整体采用分层架构:底部是 SIP/WebRTC 协议层,之上是媒体处理引擎(混音、路由、编解码),最上层是 REST/WebSocket API 层。各层职责清晰,依赖倒置控制。
VoiceBlender 支持 SIP inbound/outbound、WebRTC 浏览器端、WhatsApp Business Calling(通过 SIP-TLS + ICE/DTLS-SRTP)以及 WebSocket 音频流。其中 WebSocket leg 尤其有意思——它允许外部应用以 PCM 原始音频流接入VoiceBlender,既支持二进制帧,也支持 json_base64 文本格式,可配置采样率(8/16/24/48 kHz),相当于为任意应用提供了通用语音接入网关。
这是 VoiceBlender 最核心的能力。它以房间(Room)为单位管理参与者,每个房间可配置不同的混音采样率(8/16/48 kHz),默认 16 kHz。每个参与者听到的是"混合减自身"(Mixed-minus-self)的音频——即包含其他所有人但不含自己的混音输出,这正是通话应用的行业标准实践。
更有意思的是房间桥接功能:可以将两个房间的混音引擎连接起来,支持双向、单向(单向 A→B 或 B→A)以及"停泊"三种模式,且切换方向时无回声——因为两侧各自使用 mixed-minus-self,天然隔离了回声路径。
每个 leg 可以打上一个 free-form 的角色标签(role),然后在房间里声明一个角色间谁听谁的矩阵。比如设置一个"主管(supervisor)"角色,让他既能"窃听(whisper)"又不影响主对话;或者设置"插话(barge-in)"角色,让特定角色在任何时候都能打断。该矩阵在 leg 加入时原子性生效,避免了竞态条件导致的短暂串音。
VoiceBlender 预留了 AI Agent 接入接口,支持 ElevenLabs(自带 TTS/STT/Agent)、VAPI、Pipecat 和 Deepgram。开发者可以在通话中途通过 REST API 向指定 leg 或房间注入上下文信息,让 AI Agent 理解对话进展、调整回复策略——这为实时语音客服、AI 语音助手等场景提供了基础设施级别的支持。
录音粒度精确到每条 leg 或整个房间,支持暂停/恢复(暂停时写静音段以保持时间轴完整性)。存储后端支持本地文件系统、S3 兼容存储(MinIO、AWS)和 Google Cloud Storage。S3/GCS 上传前有预检机制,防止配置错误导致录音丢失。
VoiceBlender 提供了详尽的配置文档,涵盖了 70+ 环境变量,每个都有默认值和说明,包括 SIP 域名、ICE 服务器、编解码器优先级、TURN 中继等。对于 WebRTC 场景,需要配置 WEBRTC_EXTERNAL_IPS 或 TURN 服务器,否则 NAT 后的用户无法建立连接——这是 WebRTC 部署的通用门槛。
部署方面,Dockerfile 采用多阶段构建(golang:1.26-alpine → alpine:3.21),最终镜像极小;docker-compose.yml 提供开箱即用的一键部署,同时还有 docker-compose.cluster.yml 用于测试双节点集群场景下的跨实例通话和 webhook 传递。
需要注意的是:VoiceBlender 的 HTTP API 没有内置认证机制,访问控制完全依赖 ALLOWED_IPS IP 白名单。对于需要多租户认证的场景,必须自行在前面架设带认证的反向代理(如 Kong、Nginx + Auth 模块)。
在 VoiceBlender 出现之前,类似的灵活性通常只有 Twilio、Vonage 等商业平台才能提供,且存在厂商锁定和数据主权问题。VoiceBlender 以 MIT 许可证开源,让开发者完全掌控自己的语音基础设施。它整合了 SIP 传统电话生态和 WebRTC 现代 Web 生态,并引入了 AI Agent 接入层,符合"语音 AI 基础设施"这一新兴赛道的需求。2026 年 3 月上线、5 个月获得 100 star 的增长曲线,说明市场对这类方案有真实需求。
VoiceBlender 是一款定位清晰、技术扎实的小众精品开源项目。它不是给普通用户用的桌面应用,而是给开发者用的"语音能力 SDK"。如果你正在构建呼叫中心、语音客服、电话会议系统,或需要在 Web 应用中嵌入复杂语音能力,VoiceBlender 值得认真评估。