fonoster/fonoster
The AI that answers the phone.
Fon Fonster – 开源 AI 语音代理平台
它是什么 – Fonoster 是一个开源技术栈,让您可以构建、测试和运行基于语音的代理(如电话线机器人),这些代理可以理解语音、生成语音回复,甚至呼叫其他号码。它将电话基础设施(PBX、SIP、电话号码)与 AI 服务(语音转文本、文本转语音、大型语言模型)相结合,并通过 API 优先的设计暴露所有功能。
核心组件
| 组件 | 作用 |
|---|---|
| 多租户平台 | 在同一服务器上运行多个隔离的工作区(例如,不同的客户)。 |
| PBX 和 SIP 网关 | 将真实电话线连接到平台;您可以购买号码或使用现有的 SIP 中继。 |
| 语音 SDK | TypeScript(@fonoster/voice)和 Python(fonoster-voice)库,它们使用 会话协议 – 一种承载呼叫事件和命令的 WebSocket。 |
| NodeJS SDK | @fonoster/sdk 用于配置资源(号码、呼叫、应用)以及以编程方式创建呼叫。 |
CLI(@fonoster/ctl) |
用于管理工作区、应用、号码和部署的命令行工具。 |
| 插件 | 扩展平台(例如,添加新的存储后端、认证方法)。 |
| AI 集成 | 内置对 Deepgram、Google Speech、OpenAI LLM 等的支持,用于 Autopilot 基于 YAML 的代理。 |
| 认证与安全 | OAuth2、JWT、RBAC,以及通过 Let's Encrypt 自动 HTTPS。 |
创建代理的两种方式
1. Autopilot(声明式)
编写一个简单的 agent.yaml,选择:
- STT – 例如,Deepgram
nova-3 - TTS – 例如,Deepgram 语音
aura-asteria-en - LLM – 例如,OpenAI
gpt-4o - 提示配置(欢迎消息、系统提示、再见、错误处理、空闲检查)
使用 CLI 部署:
npx @fonoster/ctl workspaces:login # 一次性 API 密钥登录
npx @fonoster/ctl applications:create -f agent.yaml
然后将真实电话号码指向创建的应用。平台自动处理呼叫流程、语音转换、LLM 推理和响应合成。
2. 语音应用(代码优先)
编写一个与 会话 WebSocket 通信的程序。SDK 为您提供高级方法:
say– 说出文本(或流式 LLM 令牌)gather– 等待语音或 DTMF 输入play、playDtmf– 播放音频或音调transfer、hold、hangup等。- 访问原始音频以用于自定义语音流水线。
const { VoiceServer } = require("@fonoster/voice");
new VoiceServer({port:3000}).listen(async session => {
await session.say("Hi! What’s your name?");
const {speech:name} = await session.gather();
await session.say(`Nice to meet you ${name}`);
await session.hangup();
});
在本地或通过隧道(ngrok)暴露服务器,并从 Fonoster 应用中引用它。
典型工作流程
- 部署 Fonoster – Docker compose 或自托管在您自己的云上(参见 使用 Docker 部署 Fonoster)。
- 创建工作区 – 隔离用户、密钥和资源。
- 添加电话号码 – 通过提供商购买或注册现有的 SIP 中继。
- 构建代理 – 使用 Autopilot YAML 快速创建机器人,或使用自定义语音应用获得完全控制。
- 将号码连接到代理 – 通过仪表板或 CLI。
- 呼叫号码 – 平台路由呼叫,运行 AI 管道,并返回语音回复。
谁可能使用它?
- 初创公司 构建 AI 驱动的客户服务机器人,无需支付 Twilio 式的按分钟费用。
- 企业 需要对语音数据进行本地控制以符合合规要求。
- 开发者 想要尝试基于 LLM 的电话代理、呼叫中心自动化或语音优先界面。
- 研究人员 在真实电话环境中探索多模态 AI(语音 ↔ LLM ↔ TTS)。
入门指南
- 文档 – 快速入门指南、Docker 自托管、会话协议规范和迁移说明都在
docs/文件夹中。 - CLI – 使用
npx @fonoster/ctl …安装以执行一次性命令。 - SDK –
npm i @fonoster/sdk(通用 API)和npm i @fonoster/voice(会话处理)。 - 社区 – 提供 Discord 服务器、GitHub Issues 和贡献指南。
许可证和状态
- 许可证 – MIT(宽松,商业友好)。
- 状态 – 积极开发中,但仓库警告正在进行重大升级;可能发生破坏性更改,贡献暂时暂停。
TL;DR
Fonoster 是一个开源的“类 Twilio”平台,让您可以运行 AI 驱动的电话机器人。您可以在 YAML 文件(Autopilot)中描述机器人,或编写通过 WebSocket 会话通信的全功能代码。它捆绑了电话、语音服务、LLM 访问以及开发者友好的 API/CLI,全部采用 MIT 许可证。
相关
- 项目
- 项目
- 项目
- 项目