跳到正文

AI Voice Platform

AI Voice Platform 是一套围绕 FreeSWITCH、sherpa-onnx 与 FunASR 构建的本地化 AI 语音平台, 覆盖实时流式 ASR(支持 2-pass 双流与 Zipformer)、离线 ASR(Paraformer / SenseVoice)、 TTS 语音合成、ESL 通话编排、NLU / Chat、智能外呼、坐席协同与管理控制台。

仓库采用“模块文档与代码共置、VitePress 统一展示”的组织方式。本文只提供项目入口; 版本、端口、配置、协议和部署细节均链接到各自唯一来源。

核心调用链

当前识别链路只使用 mod_audio_fork,不再使用或维护 mod_unimrcp。TTS 通过普通 WAV 或 shout:// MP3 流交给 FreeSWITCH 播放。

系统一与系统二

  • 系统一:AI 语音通话底座管理面。以 callflow-esl、本地 ASR(FunASR / Sherpa)/ TTS / NLU、 callflow-servercallflow-webpage 为核心,负责 FreeSWITCH 接入、号码路由、 通话业务、识别播报、录音与运行时配置。
  • 系统二:智能外呼与协同系统。以 callout-servercallout-webpagecallflow-eslcallout-flow-business 为核心,负责外呼调度、流程脚本、名单与线路、 NLU 决策、坐席协同、转人工、质检与结果闭环。

两个系统复用语音底座,但管理职责和业务数据边界独立。系统二通过稳定的 HTTP / 通道变量 契约调用系统一,不把外呼经营逻辑写入通用语音 runtime。

仓库结构

text
ai-voice-platform/
├── apps/
│   ├── callflow-esl/          # FreeSWITCH outbound ESL 与通话业务编排
│   ├── callflow-server/       # 系统一管理 API
│   ├── callflow-webpage/      # 系统一管理前端
│   ├── callout-server/        # 系统二外呼管理 API
│   ├── callout-webpage/       # 系统二外呼管理前端
│   ├── callai-server/         # 统一 AI 决策中台 API(NLU、Chat、Script)
│   └── callai-webpage/        # 统一 AI 决策中台前端(策略管理、Playground、用量大盘)
├── docs-site/                 # VitePress 站点配置,不复制 Markdown 正文
├── speech-gateway/            # 可选第三方云语音服务网关(aliyun, azure)
│   ├── aliyun-speech-gateway/ # 阿里云语音兼容网关(可选)
│   └── azure-speech-gateway/  # Azure 语音兼容网关(可选)
├── onnx-platform/             # ASR(FunASR/Sherpa)、TTS、情绪分析、模型与 SDK
│   ├── fanasr-asr-online-server/   # FunASR 2-pass 流式实时 ASR (10099)
│   ├── fanasr-asr-offline-server/  # FunASR Paraformer 离线 ASR (10094)
│   ├── fanasr-onnx/           # FunASR 预编译 SDK
│   ├── fanasr-runtime/        # FunASR C++ 源码运行时
│   ├── sherpa-asr-online-server/   # Sherpa 流式 ASR (10096)
│   ├── sherpa-asr-offline-server/  # Sherpa SenseVoice 离线 ASR (10095)
│   ├── sherpa-tts-server/     # Sherpa TTS 语音合成 (9080)
│   └── emotion-analysis-server/    # 情绪分析服务 (9090)
├── deploy/                    # 当前双主机拓扑的部署配置:aliyun 公网节点、wsl-docker 计算集群、FreeSWITCH 参考树
├── docs/                      # 跨项目开发、部署、排障、发布与文档规范
├── scripts/                   # 发布包装配等辅助脚本
├── RELEASE_NOTES.md           # 版本与破坏性变更唯一来源
└── package.json               # Bun workspace 与统一命令

最短启动步骤

准备 Bun、PostgreSQL、Redis、OpenAI 兼容推理后端、FreeSWITCH,并先构建三个 ONNX C++ 服务(ASR / TTS / Emotion)。随后在仓库根目录执行:

bash
bun install
bun run dev

默认启动范围、服务端口、健康检查和单服务命令统一查阅 服务目录。完整环境准备和联调步骤见 开发测试手册

文档站命令:

bash
bun run docs:dev
bun run docs:check

任务结束后必须停止本次启动的全部服务。

主要组件

组件、默认端口、启动命令与健康检查不在本文重复维护,请以 服务目录 为准。模块职责与接口从下方模块文档进入。

构建与运行

callflow-esl 配置

配置字段、TTS profile、FreeSWITCH 回连和业务配置见 callflow-esl 配置参考

FreeSWITCH 拨号计划

拨号计划、mod_audio_fork 和 FreeSWITCH 配置参考树(deploy/freeswitch/)见 部署资产总览;节点级操作见 阿里云公网节点WSL 计算集群; 浏览器软电话另见 ICE / TURN 指南

验证

统一代码规范与类型检查使用 bun run lintbun run typecheck。分模块测试、C++ 构建和冒烟命令见 开发测试手册及对应模块 README。

源码交付包打包

发布包边界、参数与校验只在发布包装配维护。

文档索引

模块入口:

运维注意事项

运维步骤、日志定位、健康检查与常见故障统一从 部署与运行故障排查进入; 部署目录提供什么、不提供什么以 deploy/README.md 为准。

文档与代码在同一仓库维护,现有 Markdown 是唯一内容源。