跳到正文

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。TTS 通过 WAV、audio_fork:// PCM 流或 shout:// MP3 流交给 FreeSWITCH 播放。

系统一与系统二 ​

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

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

仓库结构 ​

text
ai-voice-platform/
├── apps/
│   ├── callflow-esl/          # FreeSWITCH outbound ESL 与通话业务编排
│   ├── callflow-server/       # 系统一管理 API
│   ├── callflow-webpage/      # 系统一管理前端
│   ├── callout-server/        # 系统二外呼管理 API(含原生 AI 策略中台)
│   └── callout-webpage/       # 系统二外呼管理前端(含「AI 策略中心」与 Playground)
├── docs-site/                 # VitePress 站点配置,不复制 Markdown 正文
├── speech-gateway/            # 语音网关服务(Go 全双工网关与第三方云网关)
│   ├── audio-fork-server/     # 原生 Go 全双工音频网关(10091 WS / 默认启动组)
│   ├── aliyun-speech-gateway/ # 阿里云语音兼容网关(可选)
│   └── azure-speech-gateway/  # Azure 语音兼容网关(可选)
├── onnx-platform/             # ASR(FunASR/Sherpa)、TTS、情绪分析、模型与 SDK(纯 Rust 架构)
│   ├── funasr-asr-server/     # 统一 FunASR 语音识别服务(纯 Rust,10099 WS 流式 / 10094 HTTP 离线)
│   ├── sherpa-asr-server/     # 统一 Sherpa ASR 语音识别服务(纯 Rust,10096 WS 流式 / 10095 HTTP 离线)
│   ├── sherpa-tts-server/     # Sherpa TTS 语音合成服务(纯 Rust,9080)
│   ├── emotion-analysis-server/ # 多模态情绪分析服务(纯 Rust,9090)
│   └── sherpa-demo/           # 最小验证程序集(纯 Rust)
├── deploy/                    # 当前双主机拓扑的部署配置:aliyun 公网节点、wsl-docker 计算集群、FreeSWITCH 参考树
├── docs/                      # 跨项目开发、部署、排障、发布与文档规范
├── scripts/                   # 工程构建、部署与维护辅助脚本
├── RELEASE_NOTES.md           # 版本与破坏性变更唯一来源
└── package.json               # Bun workspace 与统一命令

最短启动步骤 ​

准备 Bun、Go 1.23+(含 air,全双工音频网关热重载所需)、PostgreSQL、Redis、OpenAI 兼容推理后端、FreeSWITCH,并先构建 ONNX Rust 语音服务(ASR / TTS / Emotion)。随后在仓库根目录执行:

bash
bun install
bun run dev

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

文档站命令:

bash
bun run docs:dev
bun run docs:build

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

主要组件 ​

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

构建与运行 ​

callflow-esl 配置 ​

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

FreeSWITCH 拨号计划 ​

拨号计划、mod_audio_fork 和 FreeSWITCH 容器化部署包(deploy/freeswitch/,含五篇专题文档)见 部署资产总览;节点级操作见 阿里云公网节点与 WSL 计算集群; 浏览器软电话另见 ICE / TURN 指南。

验证 ​

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

文档索引 ​

模块入口:

运维注意事项 ​

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

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