项目地址:https://github.com/restsend/active-call
效果预览

关键改进:纯 Rust 实现的 VAD 引擎
本次更新最关键的改进在于移除了对 onnxruntime 处理 Silero VAD 的依赖。我们重新用 Rust 手写了 Silero VAD 的推理逻辑,实现了显著的性能提升(约 2.5 倍)以及更低的内存占用。
以下是优化后的性能对比数据:
| VAD Engine |
Implementation |
Time (60s) |
RTF (Ratio) |
Note |
| TinySilero |
Rust (Optimized) |
~60.0 ms |
0.0010 |
>2.5x faster than ONNX |
| ONNX Silero |
ONNX Runtime |
~158.3 ms |
0.0026 |
Standard baseline |
| WebRTC VAD |
C/C++ (Bind) |
~3.1 ms |
0.00005 |
Legacy, less accurate |
引入 Playbook:简化 Voice Agent 开发流程
考虑到之前基于 WebSocket 的 API 较为底层,开发者想要构建一个完整的 Voice Agent 流程会有些繁琐。因此,我们引入了一个全新的、可扩展的 playbook 方案。你可以基于 Markdown 格式轻松定义和配置你的语音助手。
一个基础的 playbook 配置示例如下:
---
asr:
provider: “aliyun”
llm:
provider: “aliyun”
model: “qwen-turbo”
tts:
provider: “aliyun”
vad:
provider: “silero”
denoise: true
greeting: “您好,我是您的AI助理,请问有什么可以帮您?”
interruption: “both”
recorder:
recorderFile: “hello_{id}.wav”
---
# Role and Purpose
You are an intelligent, polite AI assistant. Your goal is to help users with their inquiries efficiently.
# Tool Usage
- When the user expresses a desire to end the conversation (e.g., “goodbye”, “hang up”, “I’m done”), you MUST provide a polite closing statement AND call the `hangup` tool.
- Always include your response text in the `text` field and any tool calls in the `tools` array.
# Example Response for Hanging Up:
json
{
“text”: “很高兴能为您服务,如果您还有其他问题,欢迎随时联系。再见!”,
“tools”: [{“name”: “hangup”}]
}
---
核心特性与技术优势
- 内置 SIP 支持:
active-call 是目前唯一内置 SIP 协议支持的 Voice-Agent SDK,这意味着你可以直接将其与 SIP 网关对接,轻松实现 AI 与电话系统的集成。
- LLM 流式输出:现已支持大语言模型的流式输出,可以实现“边思考边讲话”的更自然交互体验,有效降低响应延迟感。
- 卓越的性能表现:与 Pipecat、Livekit 等框架相比,
active-call 更加专注于语音通话场景,并在性能上做了深度优化。实测在 2核4G 的常规配置下,可轻松支持 200路并发,并能保证长时间的稳定运行。
- 保留底层 WebSocket API:我们仍然提供了最基础的 WebSocket API,允许开发者通过 WebSocket 协议精细控制每一路通话。这为需要深度定制的开发者提供了极大的灵活性。
从实际的通话性能数据来看,基于 active-call 框架已经能够实现非常流畅的 AI 语音对话体验,端到端的延迟基本可以控制在 800ms 以内。
如果你对构建高性能语音应用或深入探索 开源实战 感兴趣,欢迎在 云栈社区 交流讨论更多技术细节。
|