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 应用中引用它。


典型工作流程

  1. 部署 Fonoster – Docker compose 或自托管在您自己的云上(参见 使用 Docker 部署 Fonoster)。
  2. 创建工作区 – 隔离用户、密钥和资源。
  3. 添加电话号码 – 通过提供商购买或注册现有的 SIP 中继。
  4. 构建代理 – 使用 Autopilot YAML 快速创建机器人,或使用自定义语音应用获得完全控制。
  5. 将号码连接到代理 – 通过仪表板或 CLI。
  6. 呼叫号码 – 平台路由呼叫,运行 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 许可证。

相关

  • 项目
  • 项目
  • 项目
  • 项目