📋 本页是版本定位与发布说明(这个版本是什么、稳不稳、有哪些已知局限)。
想看逐版本的新增 / 优化 / 修复清单,请看独立的 更新日志

1.1.0(当前版本)

发布日期:2026-06-27

版本 1.1.0
源码版本(最后一次提交) 7b1d56c09ddb1d469607ddc0e0ccf59ff62a1e91(短 7b1d56c
上一版本 1.0.0a5cd832,2026-06-21)
累计提交数 147

1.1.0 是在 1.0.0 之上的功能增强版,完全向后兼容(业务编码 / 配置结构 / 端口约定均无
破坏性变更,1.0.0 的业务与配置可直接沿用)。本版主要新增 Azure Speech 兼容语音网关
callflow-esl 优雅关停与独立可执行文件构建、**callHear 挂机后尾部识别收集**、
验证码识别上报业务,并修复了阿里云 / Azure 语音网关的 ASR 会话收尾问题;平台内置业务
增至 19 个

打断(barge-in):为什么把停播从 uuid_break 改用 uuid_fileman

打断时如何停掉当前播放,是最容易被问到的一点,单独说明。该切换在 1.0 期间的「打断逻辑优化」
(提交 312574a)中完成,本版沿用未改。

打断时停止当前 TTS 播放,原先使用 uuid_break,已改为首选 api uuid_fileman <uuid> stop
uuid_break 降级为兜底回退)。原因:

  • uuid_break <uuid> 会打断整个通道读流:它在停掉 TTS 播放的同时,会把通道上正在采集的
    尾音(mod_audio_fork 的 ASR 流、uuid_record 录音)一并截断。而 barge-in 恰恰是“用户开口、
    要立刻停播并继续听用户说”的时刻,此时必须保住 ASR 采集流,否则刚打断就丢掉用户开头那句话。
  • 改用 uuid_fileman <uuid> stop 后,只结束当前 playback 的文件句柄、不动通道读流——停的是
    “嘴”(TTS 播放),留的是“耳朵”(ASR 采集 / 录音),正是 barge-in 想要的语义。
  • uuid_break 仍作为兜底回退保留:当 uuid_fileman 被 FreeSWITCH 以非幂等错误拒绝时,
    才回退一次 api uuid_break <uuid>,保证即便首选命令失败也能恢复打断。

本版完整的「新增功能 / 优化点 / 修复问题 / 升级提示」见 更新日志 · 1.1.0
下面 1.0.0 的「版本定位 / 已稳定可用 / 已知局限 / 不在范围内」仍是平台整体说明基线,
1.1.0 在此基线之上叠加变更。


1.0.0(正式发布版)

发布日期:2026-06-21

版本 1.0.0
源码版本(最后一次提交) a5cd8323eaadb96b4af73ffa229e1db27be2d082(短 a5cd832
最后一次提交说明 调整 ASR 服务 VAD 模型路径解析
首次提交 1aa0eaa(2026-05-02)
累计提交数 129

仓库当前未打 git tag,1.0.0 以本页记录的提交 a5cd832 为基准。本页同时作为后续编写
更新日志(CHANGELOG)的依据。

版本定位

AI Voice Platform 1.0 是一套本地化、可商用、组件化的 FreeSWITCH × AI 语音方案:ASR 走
mod_audio_fork 把 16kHz 单声道 PCM16 流式推到 WebSocket ASR 服务;TTS 由本地 HTTP TTS 服务
生成 wav 或 MP3 流,再交给 FreeSWITCH playback 播放。**已彻底移除 mod_unimrcp**,识别链路
只走 mod_audio_fork + sherpa-asr-online-server

已稳定可用

  • FreeSWITCH × mod_audio_fork × sherpa-onnx 全链路打通
  • 流式 ASR(默认中文 int8 zipformer,可切中英双语预设)+ silero-vad
  • 离线 TTS(默认 vits-zh-ll,可切 Kokoro 中英双语多音色 / Matcha / VITS),支持普通合成 +
    POST /tts-stream 边合成边播的流式链路(依赖 ffmpeg + mod_shout
  • 业务编排(callflow-esl)覆盖呼入 / 呼出 / 桥接 / 会议 / 录音 / DTMF,内置 18 个业务
    (17 个 demo + 1 个接本地 Ollama 大模型的真实语音对话业务 ollama-chat-business
  • 智能外呼子系统:活动 / 名单 / 批次调度 / 并发与工作时段 / 自动重试 / 回铃音 + 嘟声检测 /
    外呼策略中心 / DNC 免打扰 / 角色鉴权 / 坐席工作台 / 转人工会议(盲转 · 协商转 · 主管监听插话)/
    线路号码池 / 实时作战大屏
  • 通话后情绪分析(文本 BERT + 音频 wav2vec2 融合)
  • 管理控制台(FreeSWITCH 数据看板、号码 → 业务路由配置、运行时 TTS/录音配置热重载、TTS 音色试听、
    ASR 上传/录音测试)
  • 单机部署 → 单节点 → 多节点水平扩展

已知局限

局限 影响
ASR / TTS(C++ 服务)无 graceful shutdown Ctrl+C / SIGTERM 直接终止 accept 与 worker,会中断在途请求与连接(callflow-esl 已在 1.1.0 支持优雅关停)
无鉴权、无限流(除 maxSessions / maxQueuedRequests / maxActiveStreams 仅适合内网部署;外网入口必须加反代鉴权 / 限流
TTS 服务无 LRU / TTL wav 文件持续累积,需外部定时清理
ASR 仅支持 16kHz / mono / PCM16 上游必须重采样 / 调声道;不支持 WebSocket 帧分片
流式 TTS 依赖外部 ffmpeg mp3.encoderPath 对应的可执行可用,且 FS 端启用 mod_shout
业务侧无全局 KV 跨通话状态共享只能靠 DB / channel variable
ctx.conference.hear 必须绑定当前通道 无法实现「AI 不入会、只听」
PostgreSQL 强依赖 业务路由表与运行时配置当前依赖 PostgreSQL;暂未抽象多数据库

不在范围内

  • 通话级实时翻译
  • 声纹识别 / 说话人分割
  • 实时(通话中)情绪分析(通话离线情绪分析已支持)
  • 多模态(视频 / 屏幕共享)
  • WebRTC 直接接入、浏览器端 SDK

显著变更(更新日志依据)

本节按子系统归纳 1.0 形成过程中的关键变更,供后续编写 CHANGELOG 时筛选条目。条目来源为
git log,时间区间 2026-05-02(首次提交)至 2026-06-21(a5cd832)。

1.1.0 起的逐版本「新增 / 优化 / 修复」清单见独立的 更新日志;本节仅作为
1.0 的形成历史保留。

ASR 服务

  • 配置重构为按域分组:server / concurrency / socket / logging / recording / asr /
    vad;模型选择改为 asr.activeModel + asr.models profile 表
  • VAD 模型路径解析调整;VAD 强制启用、无开关;endpoint 检测字段移除,走 sherpa 默认
  • 推送 speech_started 事件,支持 begin-speaking 打断
  • 修复仅支持单路通话的问题;性能调优

TTS 服务

  • 配置重构为按域分组:server / concurrency / timeouts / transport / mp3 / tts
    模型选择改为 tts.activeModel + tts.models profile 表
  • 新增 POST /tts-stream + GET /tts-stream/<id>.mp3 流式播放链路,降低首字延迟
  • 并行预热 worker 池;wav2mp3 响度增益(mp3.volumeGainDb);流式稳定性兜底(ffmpeg 退出超时、
    watchdog、maxActiveStreams、socket 超时);15 路通话稳定性验证无异常

callflow-esl(业务编排)

  • 重构 ESL 运行时模块:控制器拆到 runtime/controllers/、会议会控拆到 runtime/conference/
    originate/回铃检测拆到 runtime/originate/,新增 kernel/ / transport/ / tts/ 分层
  • CallContext facade 扩展:apistopCallHearsetVariables/getVariables,会议会控
    getState/onStateChange/kickMember/mute/unmute/deaf/undeaf/lock/unlock/end/
    inviteMembers/setMemberRole,会议录音 recording.*
  • TTS 段重构为 tts.defaults + tts.use + tts.profiles 三段结构,流式与否改由 use.call /
    use.conferencewav / shout profile 决定
  • 打断支持 vad / begin-speaking / final 三种触发模式;会议级 play / injectSpeak 支持配置
    barge-in 触发模式;callHear 长识别;会议状态用 redis 同步;通话录音
  • 新增实时 WebSocket 语音识别客户端、播放控制器、通话运行时测试套件
  • 新增 ollama-chat-business:接本地 Ollama /api/chat 流式接口的真实大模型语音对话业务
    (ASR → 本地 LLM → TTS 闭环,每通电话独立多轮上下文),与原有「模拟 LLM」演示业务并存
  • 移除 callflow / 阿里云 ASR endpoint 标记

callout(智能外呼)

  • 任务 / 联系人 / 批次调度 / 两层并发 + Redis 锁 + PostgreSQL FOR UPDATE SKIP LOCKED
  • 回铃音 + 嘟声检测(嘟声依赖 mod_spandsp);外呼策略中心 / DNC 免打扰
  • 坐席工作台与转人工会议(盲转 / 协商转 / 主管监听强插);线路号码池;实时作战大屏
  • 拆分外呼服务处理器与校验模块;originateDialStringTemplate / dialStringTemplate 可覆盖
  • callout-webpage 从单体 store 拆分为「共享 reference store + 页面级 composable」

管理控制台

  • FreeSWITCH 数据看板、号码 → 业务路由配置、运行时 TTS/录音配置热重载
  • TTS 音色试听、ASR 上传/录音测试

底座与工程

  • 彻底移除 mod_unimrcp,识别链路只走 mod_audio_fork + sherpa-asr-online-server
  • 数据库改用 PostgreSQL(callflow / callout 两 schema,Drizzle ORM)
  • 源码按项目授权;scripts/package-release.ps1 支持 -Projects 按项目独立 / 组合打包,按「项目数 × ¥500」计价

源码交付

源码按项目授权交付。scripts/package-release.ps1 支持 -Projects 按项目独立 / 组合打包
(默认 zip,可选 tar.gz),按「项目数 × ¥500」计价(前后端算一个项目)。

源码模块、实施服务、公开应售价与交付边界见 源码服务与售价

后续更新日志编写说明

本页以提交 a5cd832 作为 1.0.0 的源码版本锚点。编写正式 CHANGELOG 时:

  1. git log 1aa0eaa..a5cd832 为素材池,按上面「显著变更」分类逐条筛选
  2. 保持「新增 / 变更 / 修复 / 移除」分类,遵循 Keep a Changelog 风格
  3. 用户可见的行为变更(配置结构、API、端口、业务编码)必须单独高亮,提示从旧版迁移的注意点
  4. 下一个版本(1.1.x)起,CHANGELOG 应在 a5cd832 之上增量记录

历史版本

  • 1.1.0(2026-06-27,7b1d56c):功能增强版。新增 Azure Speech 兼容语音网关、callflow-esl
    优雅关停与独立构建、callHear 挂机后尾部识别、verification-code-business 验证码识别上报业务;
    修复阿里云 / Azure 语音网关 ASR 会话收尾。逐条变更见 更新日志
  • 1.0.0(2026-06-21,a5cd832):首个正式发布版。详见上文。