voice-ai
开源端到端语音 AI 编排平台,支持 WebRTC/SIP 接入、STT/TTS/LLM 全链路,通
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
开源端到端语音 AI 编排平台,支持 WebRTC/SIP 接入、STT/TTS/LLM 全链路,通
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个场景: 凌晨两点,电商公司的 AI 运维工程师正在调试一个电话客服机器人——用户打进来咨询订单状态,机器人需要先听懂语音(STT),理解意图,查询数据库,然后生成自然流畅的语音回复(TTS)返回给用户。这条链路上,语音采集、音视频流处理、多轮对话状态、模型调用,每一个环节都可能出错。在 Rapida 出现之前,团队通常需要自研或拼接多个开源组件:WebRTC 处理实时音频流、Deepgram 或 Whisper 做语音识别、ElevenLabs 或 OpenAI 做语音合成、再加一层状态管理来维护通话上下文。这套组合往往要耗费数月集成调试,版本不统一还容易引入兼容性问题。
Rapida 正是来解决这个痛点的。它是一个开源的端到端语音 AI 编排平台,用 Go 语言重写了核心通信层,基于 gRPC 提供双向流式传输,天然适合实时语音场景。项目提供了完整的服务体系:5 个独立的 Go 微服务(Web API、Assistant API、Endpoint API、Integration API、Document API)、React 前端 UI、PostgreSQL + Redis 持久化层、Nginx 反向代理,以及 Docker Compose 一键部署能力。无论是初创公司需要快速上线电话机器人,还是中大型企业希望将语音 AI 能力私有化部署,Rapida 都能提供开箱即用的基础设施。
实时语音 AI 的技术栈极其复杂。一个完整的语音对话系统通常涉及以下组件:**VAD(Voice Activity Detection)**负责判断用户什么时候开始说话、什么时候停止;**STT(Speech-to-Text)**将语音转为文字;**LLM(Large Language Model)**理解用户意图并生成回复;**TTS(Text-to-Speech)**将文字转回语音;实时音频传输协议负责在用户设备和服务器之间低延迟传输音视频流。每一层都有多个供应商可选:STT 可以用 Deepgram、Whisper、Google Cloud Speech;TTS 可以用 ElevenLabs、Azure、OpenAI;传输层可以用 WebRTC、SIP、RTMP。每种组合的接入方式、数据格式、超时策略都不相同,整合成本极高。
Rapida 的创始团队来自传统电话和 SIP 领域(项目中集成了 github.com/emiago/sipgo 等 SIP 协议库),他们意识到这个碎片化问题需要一个统一的编排层。Rapida 的核心设计哲学是**"Bring Your Own Model"**:不绑定特定模型供应商,用户可以自由选择 OpenAI GPT-4、Anthropic Claude、Deepgram、ElevenLabs 等任意组合。项目在 api/assistant-api/internal/transformer/ 目录下设计了可插拔的 STT/TTS 适配器,新增一个供应商只需实现对应接口即可,无需改动核心逻辑。
Rapida 内置了对 WebRTC 和 SIP 两大主流实时通信协议的支持。WebRTC 部分重度依赖 github.com/pion/webrtc/v4( pion 是 WebRTC 领域最活跃的 Go 库),包含 DTLS/SRTP 加密、ICE 候选采集、RTCP 反馈等完整实现。SIP 部分则通过 github.com/emiago/sipgo 接入传统电话网络,这意味着 Rapida 可以直接对接运营商的 SIP 中继,将 AI 能力延伸至 PSTN 电话网络。
音视频流的处理链路如下:用户设备通过 WebRTC 或 SIP 接入 → VAD 检测语音边界 → 音频流被切分送入 STT 引擎 → 文字流转交 LLM 对话管理 → LLM 输出经 TTS 引擎转语音 → 语音流通过同一通道返回用户。整个过程通过 gRPC 流式双向通信,实测端到端延迟可控制在 1-2 秒以内。
除了 WebRTC 和 SIP,Rapida 还支持通过 Integration API 接入 Twilio、Vonage 等商业电话平台,以及自定义的 WebSocket 客户端。pkg/connectors/ 目录下定义了统一的连接器接口,不同渠道的适配器都实现了这一接口。这种设计使得新增渠道只需实现接口方法,无需改动上层业务逻辑。
特别值得一提的是,Rapida 对 MCP(Model Context Protocol) 的支持——github.com/mark3labs/mcp-go 的引入表明项目正在将 MCP 协议纳入工具调用体系,未来 AI Agent 可以通过 MCP 调用外部工具(如查订单、查天气),进一步拓展语音 AI 的实用场景。
pkg/models/、pkg/types/ 和 pkg/plugins/ 目录下定义了完整的 Agent 模型抽象。Rapida 的 Agent 不是简单的"问-答"模式,而是支持多轮对话状态机:用户打断、意图切换、超时重试、通话摘要等复杂场景都有对应的状态处理逻辑。pkg/preset/ 目录下预置了常见的对话模板,开发者可以直接复用或在此基础上定制。
pkg/telemetry/ 目录实现了 OpenTelemetry 标准的分布式追踪。每个 gRPC 请求都有唯一的 trace_id,涵盖 STT 延迟、LLM Token 消耗、TTS 生成时间、网络抖动等指标。配合 Prometheus + Grafana,可以构建完整的语音 AI 运维大盘。这对于需要向客户承诺 SLA 的商业化运营方来说是刚需。
通过 docker-compose.knowledge.yml 可以启用 OpenSearch + Document API 的知识库增强能力。用户提问时,系统可以先检索知识库文档,再结合 LLM 生成答案。这一能力对于企业客服场景(如产品手册 FAQ、订单政策查询)尤为重要。
Rapida 的技术选型非常务实:Go 语言是语音/网络密集型后端服务的最优选,goroutine 调度天然适合高并发长连接场景;gRPC + Protobuf提供了高效的二进制序列化和强类型接口定义;React + TypeScript的前端 UI 提供了可视化的 Agent 配置和通话监控界面。
项目结构采用标准的 Go 项目布局:
cmd/:4 个独立的可执行入口(web、assistant、endpoint、integration),每个对应一个微服务进程pkg/:共享的业务逻辑库,涵盖认证(authenticators)、加密(ciphers)、存储(storages)、验证(validators)等模块protos/:Protocol Buffers 定义的 gRPC 接口,已编译为 .pb.go 文件api/:各微服务的具体实现代码,按 internal/ 子目录组织sdks/:各语言 SDK 的源码(Go、Python、Node.js、React)这种结构的优势在于:每个微服务可以独立部署、独立扩缩容,故障隔离性强。同时通过 go.mod 的 replace 指令管理内部模块依赖版本,避免了"依赖地狱"问题。
部署 Rapida 的门槛已经被项目方刻意压低了。对于有 Docker 环境的管理员来说,全量启动只需要:
git clone https://github.com/rapidaai/voice-ai.git && cd voice-ai
make setup-local && make build-all
make up-all
这个过程会自动:创建数据目录、构建 5 个 Go 服务镜像 + 1 个 React UI 镜像、初始化 PostgreSQL 数据库表结构、启动 Redis 缓存、配置 Nginx 网关。启动后访问 http://localhost:3000 即可进入 Web 管理界面。
不过,16GB 内存是硬性要求。5 个 Go 微服务 + PostgreSQL + Redis + React Dev Server + Nginx,在没有特殊优化的情况下内存占用轻松超过 12GB。如果服务器资源紧张,可以按需启动部分服务(如只启动 make up-assistant,仅运行 Assistant API)。配置文件位于 docker/ 各子目录下(web.yml、assistant.yml 等),可以在启动前填入 OpenAI、Deepgram 等 API Key。
优势方面:Rapida 最大的价值是降低了语音 AI 的工程化门槛。传统上从零构建一套生产级语音对话系统需要 3-6 个月,Rapida 将这个周期压缩到了数小时。gRPC 通信层、STT/TTS 适配器、Agent 状态机这些最复杂的部分已经封装好,开发者只需关注业务逻辑层。项目还提供了多语言 SDK(Go、Python、React),方便在不同技术栈中集成。
局限方面:首先是许可证约束——Rapida 基于 GPL-2.0 开源,但要求开源版本保留 Rapida Logo,商业使用需要购买商业许可(去除 Logo、允许闭源修改)。这对于希望白牌部署给客户的代理商来说是一道门槛。其次是内存消耗大,16GB+ 的 RAM 要求限制了其在树莓派、低配云服务器等轻量场景的使用。最后,项目采用多服务架构(6 个容器),本地开发调试的复杂度比单体应用高不少。
Rapida 的出现代表了语音 AI 领域的一个趋势:从"模型能力竞争"转向"工程化能力竞争"。当 STT/TTS 的准确率差距逐渐缩小(Deepgram、Whisper 均达到商用水平),差异化就体现在部署灵活性、运维成本、可扩展性这些工程维度。Rapida 押注的正是这个方向——提供一个既能在初创公司轻量部署、也能支撑中大型企业私有化海量并发的语音 AI 中台。
从 GitHub 数据来看(676 Stars,活跃更新),Rapida 处于早期快速增长阶段。主要用户群体是 AI 代理商(需要快速交付白牌方案)和中型科技公司(希望摆脱对第三方电话机器人的依赖)。随着 WebRTC 通话质量的持续提升和 LLM 推理成本的下降,语音 AI 在客服、销售、医疗问诊等场景的渗透率正在快速上升,Rapida 这类基础设施层项目的价值也将随之放大。