跳到正文

FreeSWITCH 核心模块与实时 AI 语音集成专题 ​

⬅️ 返回 FreeSWITCH 容器化部署总览

本文全面盘点 WSL /data/docker_fs_server/freeswitch-install/lib/freeswitch/mod/ 目录下预置编译的 80+ 个核心扩展模块,介绍各模块的核心功能、应用场景及其在 AI Voice 语音平台中的具体用途。


1. AI 语音核心链路架构 ​

在 AI Voice Platform 中,FreeSWITCH 充当高并发音频管道与分流核心:


2. 80+ 个核心扩展模块功能详解 ​

2.1 实时 AI 语音与多媒体流核心模块(AI Voice Platform 关键链路 ⭐️) ​

模块名称 (.so)功能说明与核心用途
mod_audio_fork平台自研核心 AI 音频交互模块。提供高性能 WebSocket 流式识别分流与 FreeSWITCH 官方标准 SWITCH_FILE_INTERFACE 原生流式驱动。上行通过 uuid_audio_fork 指令将 16kHz PCM 单声道音频实时推送到 sherpa-asr-server (10096)、funasr-asr-server (10099) 或前置代理 stream-vad-proxy (10093) 实现流式 ASR 与开嗓打断;下行支持通过 playback audio_fork://${uuid} 进行防崩加固的低延迟流式播放,全面剔除 Boost 依赖。
mod_shout流式 TTS 播放核心模块。集成 libshout/libmp3lame/libmpg123(由底层 Debian 系统 APT 运行时库驱动),支持通过 shout://<tts-host>:9080/tts-stream/<id>.mp3 协议边合成边流式解码播放 TTS 音频,大幅降低首包播放延迟(注:在多方会议 mod_conference 中为避免阻塞混音线程,会议播放统一回退为标准 WAV 文件)。
mod_local_stream本地连续流媒体发生器(AI 通话背景音混音核心)。支持从内存预加载音频文件循环广播(如 local_stream://ambient/office/16000 或 8000),在 AI 外呼或会议通话中无缝注入真实办公室环境白噪音,消除纯静音尴尬且无磁盘 I/O 开销(素材可由工程 data/ 目录按需装配到 sounds/ambient/office/)。
mod_tts_commandline命令行外部 TTS 工具调用接口,允许通过外部脚本或独立可执行文件生成语音。
mod_vmd基础留言音/蜂鸣音检测(Voicemail Beep Detection),用于外呼机器人识别被叫是否已进入语音信箱蜂鸣阶段。
mod_avmd高级答录机检测(Advanced Voicemail Detection),基于快速幅值/频率方差算法精确判定对端是真人还是智能答录机。
mod_soundtouch音频音调与速率实时调整模块,支持在呼叫中进行变声、升降调与变速播放。

2.2 通信协议栈与终端端点模块 (Endpoints) ​

模块名称 (.so)功能说明与核心用途
mod_sofia核心 SIP 协议栈。基于 Sofia-SIP 实现 SIP/TLS/WebRTC 注册、呼叫控制、NAT 穿透与 SIP Trunk 网关管理。
mod_rtcWebRTC 核心媒体引擎。处理 RTCP、ICE 候选协商与 DTLS-SRTP 媒体流加密。
mod_vertoFreeSWITCH 原生 WebRTC JSON-RPC 信令通道,用于 Verto 协议软电话与音视频通信。
mod_loopback本地回环端点(loopback/<ext>),用于内部会话测试、桥接以及复杂多腿呼叫控制。
mod_skinny思科 SCCP(Skinny Client Control Protocol)终端接入支持,兼容 Cisco IP 话机。
mod_rtmpRTMP 实时流媒体协议端点,支持与 Flash 或流媒体直播服务对接。
mod_alsaLinux ALSA 声卡驱动端点,用于服务器物理声卡直连麦克风/扬声器测试。

2.3 事件驱动与管理控制模块 (Event & Socket) ​

模块名称 (.so)功能说明与核心用途
mod_event_socketESL 管理核心。对外开放 8021 TCP 端口,驱动 apps/callflow-esl 业务服务对 FreeSWITCH 的全生命周期出入站编排控制。
mod_eslESL 客户端 C 库封装模块,供本地扩展调用 ESL 接口。
mod_event_multicast局域网 UDP 组播事件广播模块,用于跨机器多节点事件同步。
mod_erlang_event与 Erlang 节点进行 C-Node 级事件直连互通,适用于 Erlang 高并发调度系统。
mod_amqpRabbitMQ / AMQP 消息队列集成,支持将呼叫事件直接投递到消息中间件。

2.4 拨号计划与呼叫路由模块 (Dialplans & Routing) ​

模块名称 (.so)功能说明与核心用途
mod_dialplan_xml核心 XML 拨号计划引擎。解析 etc/freeswitch/dialplan/ 下的全部 XML 呼叫路由规则。
mod_dialplan_asteriskAsterisk 风格 extensions.conf 拨号方案解析器,方便从 Asterisk 迁移老旧配置。
mod_dialplan_directory从分机目录中直接查找路由的拨号计划接口。
mod_enumENUM(E.164 电话号码到 DNS NAPTR/SIP URI)路由解析,支持全球电信号码解析。
mod_easyroute基于数据库的简单动态路由模块,支持按前缀查表分流。
mod_lcr动态最少成本路由(Least Cost Routing)计算与分流引擎,用于运营商多线路比价外呼。

2.5 呼叫控制与业务应用组件 (Applications & Call Center) ​

模块名称 (.so)功能说明与核心用途
mod_commandsCLI / ESL 基础指令集。提供 originate, uuid_kill, status, show channels, eval 等数百个核心 API。
mod_dptools拨号方案核心动作库。提供 bridge, answer, hangup, playback, record, socket, export, set, sleep 等核心应用。
mod_conference高并发多方音视频会议室。支持音视频混音、画中画混画面、静音控制与成员角色管理。
mod_fifo先进先出呼叫排队等待队列,适用于简易排队业务。
mod_valet_parking呼叫代客泊车与提取(Call Parking),支持话机将呼叫暂存指定车位并换机接听。
mod_callcenter呼叫中心座席队列调度系统(ACD),支持座席签入/签出、技能组排队与多策略振铃分配。
mod_voicemail语音信箱留言录制与检索播放系统。
mod_voicemail_ivr语音信箱 IVR 交互导航菜单。
mod_fsv原生视频流录制与回放(.fsv 格式)。
mod_expr拨号方案逻辑表达式求值计算器,用于 Dialplan 条件判断。
mod_hash内存级全局 Hash 键值表与速率限制器(Limit 并发频控机制)。
mod_db基于 SQLite 的简单键值数据持久化与计数器。
mod_blacklist呼叫黑名单阻断拦截。
mod_cidlookup来电号码归属地与姓名反查。
mod_distributor呼叫按权重随机轮询分发器,用于多网关分流。
mod_nibblebill通话实时计费与扣费结算模块。
mod_spy坐席密语监听与插话(Eavesdrop / Whisper),用于班长座席质检与指导。

2.6 音视频编解码器模块 (Codecs) ​

模块名称 (.so)功能说明与核心用途
mod_opusOpus 高清自适应语音编解码器。支持 8k~48k 动态采样率,WebRTC 与现代软电话首选。
mod_spandspDSP 信号处理核心。支持 T.38 传真、DTMF 双音多频生成与检测、G.726/G.711 等协议。
mod_g729电信级 G.729 窄带高压缩语音(8kbps),广泛用于 PSTN 运营商中继与专线。
mod_g723_1G.723.1 语音编解码(5.3k / 6.3k),传统 PSTN 常见格式。
mod_amr / mod_amrwb移动蜂窝网络(3G/VoLTE/4G HD)标准窄带与宽带语音编解码。
mod_codec2超低码率(700~3200 bps)开源语音编解码,适用于极低带宽卫星/无线电通信。
mod_b64Base64 数据编解码支持。
mod_vpxVP8 / VP9 视频编解码器(WebRTC 视频通信主流格式)。
mod_pngPNG 图片渲染与视频占位头像支持。
mod_video_filter视频图像滤镜与画面缩放处理。

2.7 媒体文件格式与流通道 (Formats & Media Streams) ​

模块名称 (.so)功能说明与核心用途
mod_sndfile基于 libsndfile 的标准音频文件(WAV、AIFF、FLAC 等)读写解析。
mod_native_file原生裸音频文件快速流式回放(无需经过重采样与转码)。
mod_tone_stream多国拨号音、回铃音、忙音与 TGML 信号发生器。
mod_local_stream本地连续流媒体发生器(MOH 等待音乐、广播轮播,以及会议背景音 ambient/office/*)。
mod_av基于 FFmpeg / LibAV 的音视频容器封装与流格式转换。
mod_http_cache远端 HTTP 音频资源自动下载与本地缓存加速播放。
mod_snapshot视频通话实时抓拍截图。

2.8 数据库、话单与日志系统 (Databases, CDR & Observability) ​

模块名称 (.so)功能说明与核心用途
mod_hiredis高性能 Redis 客户端模块,支持分布式锁、跨节点状态共享与频控。
mod_pgsql原生 PostgreSQL 数据库连接器,支持 FreeSWITCH 核心数据库直接连入 Postgres。
mod_mariadb原生 MariaDB / MySQL 数据库连接器。
mod_cdr_csv标准 CSV 格式通话记录(CDR)本地文件持久化。
mod_cdr_sqliteSQLite 格式 CDR 话单存储。
mod_cdr_pg_csv直接将 CDR 话单入库至 PostgreSQL。
mod_xml_cdr / mod_json_cdr将完整通话信令与指标按 XML / JSON 格式通过 HTTP POST 推送到第三方计费/质检中台。
mod_logfilefreeswitch.log 本地日志文件写入与轮转。
mod_console控制台彩色日志实时打印。
mod_syslogLinux 系统 syslog 日志导出。
mod_graylog2GELF 格式日志直接投递至 Graylog / ELK 日志收集中心。

2.9 脚本语言与动态 Web 接口 (Languages & Web APIs) ​

模块名称 (.so)功能说明与核心用途
mod_luaLua 5.2 嵌入式脚本引擎。支持通过 Lua 编写复杂的通话控制逻辑与离线 IVR 脚本。
mod_httapiHTTP RESTful 交互式语音响应协议(由远程 Web 服务返回 XML 驱动通话)。
mod_xml_curl动态 XML 配置拉取。支持从外部 Web 接口实时拉取 Directory 分机、Dialplan 规则与配置。
mod_xml_rpcXML-RPC Web 管理接口(默认 8080 端口)。
mod_xml_scgiSCGI 协议后端连接器。

2.10 多语种语音朗读引擎 (Say Localization) ​

模块名称 (.so)支持语种与功能用途
mod_say_en英语数字、日期、货币与时间自然朗读引擎
mod_say_zh中文汉字、数字、金额与时间自然朗读引擎
mod_say_ja日语数字与时间自然朗读引擎
mod_say_de / mod_say_fr / mod_say_es / mod_say_ru 等德语、法语、西班牙语、俄语、葡萄牙语、意大利语、波兰语、泰语等多国语言朗读引擎

3. 模块配置与管理方式 ​

3.1 静态配置 (modules.conf.xml) ​

在 freeswitch-install/etc/freeswitch/autoload_configs/modules.conf.xml 中配置随服务自启的模块:

xml
<modules>
  <!-- 添加需要加载的模块 -->
  <load module="mod_shout"/>
  <load module="mod_pgsql"/>

  <!-- 移除或注释不需要的模块 -->
  <!-- <load module="mod_cdr_csv"/> -->
</modules>

3.2 运行时动态管理指令 ​

bash
# 检查模块状态
docker exec -it fs-app fs_cli -x "module_exists mod_audio_fork"

# 动态加载模块(无需重启容器)
docker exec -it fs-app fs_cli -x "load mod_shout"

# 动态卸载模块
docker exec -it fs-app fs_cli -x "unload mod_shout"

# 重新加载模块
docker exec -it fs-app fs_cli -x "reload mod_audio_fork"

3.3 底层依赖库分层说明 ​

为了实现运行时的极致轻量与高稳定,镜像构建采用了“系统 APT 依赖”与“专有核心共享库”双层解耦设计:

  1. Debian APT 官方系统库:如 libwebsockets(驱动 mod_audio_fork 的 WebSocket 通信)、libshout、libmp3lame、libmpg123(驱动 mod_shout 的 MP3 编解码播放)等,在构建 Docker 镜像时直接通过 APT 安装;
  2. 专有核心底层 C/C++ 共享库 (deps-lib/):针对 Debian 官方源中缺乏对应版本的 4 个编译依赖(libks2, libsignalwire_client2, libsofia-sip-ua, libspandsp),打包在宿主机 deps-lib/ 目录下,在构建时通过 COPY deps-lib/ /usr/lib/ 注入镜像并执行 ldconfig 建立系统链接。

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