FreeSWITCH 简单图形化界面59 - 拨号应用speak,使用纯CPU的kokoro-tts播放文字

FreeSWITCH 简单图形化界面59 - 拨号应用speak,使用纯CPU的kokoro-tts播放文字

  • [00、 一个fs的web配置界面预览](#00、 一个fs的web配置界面预览)
  • [01、 Web 配置界面预览](#01、 Web 配置界面预览)
  • [02、 Web界面安装参考](#02、 Web界面安装参考)
  • 1、speak应用简介
  • [2、speak 应用语法](#2、speak 应用语法)
  • 3、speak示例
    • [3.1 先部署一个TTS服务](#3.1 先部署一个TTS服务)
    • [3.2 配置 mod_tts_commandline 对接 TTS 服务](#3.2 配置 mod_tts_commandline 对接 TTS 服务)
      • [3.2.1 编写 TTS 调用脚本 `tts.sh`](#3.2.1 编写 TTS 调用脚本 tts.sh)
      • [3.2.2 配置 tts_commandline.conf](#3.2.2 配置 tts_commandline.conf)
      • [3.2.3 加载模块](#3.2.3 加载模块)
      • [3.2.4 配置拨号方案实现自动语音播报](#3.2.4 配置拨号方案实现自动语音播报)
  • 4、效果与性能查看
  • [5、补充:无需 speak 应用,直接通过呼叫规则播放 TTS 音频](#5、补充:无需 speak 应用,直接通过呼叫规则播放 TTS 音频)

00、 一个fs的web配置界面预览

如果您想通过图形化界面管理 FreeSWITCH 的场景,可直接访问以下 Web 配置界面。

01、 Web 配置界面预览

界面地址 备用地址 登录信息
http://www.fspbx.cn/ http://myfs.f3322.net:8020/ 用户名:admin密码:admin

02、 Web界面安装参考

若需自行部署 FreeSWITCH 图形化界面,包含 Docker、脚本、ISO 镜像三种安装方式,适配不同系统环境:

  1. Docker 安装:快速部署;
  2. 脚本安装:适配 Almalinux、RockyLinux、Debian、Ubuntu 、欧拉等系统,提供一键安装命令,安装后需重启初始化;
  3. ISO 镜像安装:基于 Almalinux制作的镜像,刻录到 U 盘或光盘后可自动安装,适合全新服务器部署。

1、speak应用简介

speak 是 FreeSWITCH 用于在通话通道中播放 TTS 语音的核心应用,可将文本实时转为语音播放给通话对端。

FreeSWITCH 自带常见 TTS 模块:

  • mod_flite:轻量级英文 TTS
  • mod_cepstral:商业 TTS 引擎接口
  • mod_unimrcp:对接 MRCP 协议 TTS 服务
  • mod_tts_commandline调用外部命令行/脚本实现自定义 TTS(本文重点)

2、speak 应用语法

xml 复制代码
<action application="speak" data="<engine>|<voice>|<text>|[timer_name]"/>
  • engine:TTS 引擎(如 tts_commandline
  • voice:音色名称
  • text:需要播报的文本
  • timer_name:可选定时器参数

3、speak示例

下面使用speak通过 mod_tts_commandline 对接基于 Kokoro-TTS 的 HTTP TTS 服务,实现中文语音播报。

3.1 先部署一个TTS服务

使用封装好的 tts-server Docker 镜像,快速搭建可通过 HTTP 调用的 TTS 服务。

这个是基于kokoro-tts的,可通过http下载tts后的语音,tts速度看CPU性能,我的测试的虚拟机是 CPU 核心数: 16

核,我觉得还行,要说实时肯定不是,但是20个字,1-2s内还是差不多的。

带缓存,相同文字片段,只转换一次;音色如果不存在,首次需要下载

3.1.1 拉取镜像

bash 复制代码
podman pull registry.cn-hangzhou.aliyuncs.com/pbx/tts-server:latest
# 或使用 docker
docker pull registry.cn-hangzhou.aliyuncs.com/pbx/tts-server:latest

3.1.2 启动容器

bash 复制代码
podman run -itd --name tts-server --restart always -p 5000:5000 tts-server

3.1.3 查看启动日志

bash 复制代码
podman logs -f tts-server

出现服务监听日志即启动成功。

3.1.4 TTS 服务接口测试

(1)获取可用音色的接口
复制代码
http://你的TTS容器IP:5000/voices

默认音色:zm_yunxi

(2)获取文本转语音接口
复制代码
http://你的TTS容器IP:5000/stream?voice=zm_yunxi&text=这里输入内容

访问即可直接播放或下载音频。

3.2 配置 mod_tts_commandline 对接 TTS 服务

3.2.1 编写 TTS 调用脚本 tts.sh

创建 /root/tts.sh,通过 wget 调用 HTTP TTS 接口并保存为 wav 文件:

bash 复制代码
#!/bin/bash
# $1 = 输出wav文件路径
# $2 = 待播报文本

wav_file="$1"
text="$2"

# 调用 HTTP TTS 接口并保存为音频
wget -q -O "${wav_file}" "http://210.51.10.231:5000/stream?voice=zm_yunxi&text=${text}"

赋予执行权限:

bash 复制代码
chmod +x /root/tts.sh

3.2.2 配置 tts_commandline.conf

直接修改网页配置

或者编辑 conf/autoload_configs/tts_commandline.conf

xml 复制代码
<configuration name="tts_commandline.conf" description="TextToSpeech Commandline configuration">
<settings>
<!--
变量说明:
${text}: 待合成文本(已引号处理)
${rate}: 采样率(如8000)
${voice}: 音色名称
${file}: 输出wav文件路径
-->
<param name="command" value="/root/tts.sh ${file} ${text}"/>
</settings>
</configuration>

3.2.3 加载模块

bash 复制代码
# 控制台执行
load mod_tts_commandline

3.2.4 配置拨号方案实现自动语音播报

示例:拨打 11111 自动应答并播报当前系统时间

xml 复制代码
<extension name="11111-TTS播放时间号码">
  <condition expression="^(11111)$" field="destination_number">
    <action application="answer" />
    <!-- TTS服务器有缓存,相同文字只转换一次,动态时间测试 -->
    <action application="set" data="time=${system date +'%Y年%m月%d日%H时%M分'}" />
    <action application="set" data="tts_engine=tts_commandline" />
    <action application="set" data="tts_voice=whatever" />
    <action application="speak" data="现在为您播报时间,现在时间是${time},请安排好您的工作,再见"/>
    <action application="hangup"/>
  </condition>
</extension>

重新加载配置:

bash 复制代码
reloadxml

4、效果与性能查看

拨打 11111 即可听到完整语音播报.速度取决于cpu的性能。

这里是一个视频

20260329_173945

查看 TTS 服务转换日志:

bash 复制代码
podman logs -f tts-server

可看到字数统计、合成耗时

5、补充:无需 speak 应用,直接通过呼叫规则播放 TTS 音频

除了使用 speak 应用调用 TTS 引擎,也可直接通过 system 调用 TTS 服务生成音频文件,再用 playback 播放,无需依赖 speak 应用,呼叫规则示例如下:

xml 复制代码
<extension name="21111-TTS播放古诗">
  <condition expression="^(21111)$" field="destination_number">
    <action application="answer" />
    <action application="set" data="output=/tmp/output.wav" />
    
    <action application="set" data="text=5个字,窗前明月光" />
    <action application="system" data="wget -O ${output} http://210.51.10.231:5000/stream?text=${text}" />
    <action application="playback" data="/tmp/output.wav" />
    
    <action application="set" data="text=10个字,疑是地上霜,举头望明月" />
    <action application="system" data="wget -O ${output} http://210.51.10.231:5000/stream?text=${text}" />
    <action application="playback" data="/tmp/output.wav" />
    
    <action application="set" data="text=5个字,低头思故乡" />
    <action application="system" data="wget -O ${output} http://210.51.10.231:5000/stream?text=${text}" />
    <action application="playback" data="/tmp/output.wav" />
    
    <action application="set" data="text=声明称,此次行动使用巡航导弹和无人机,并称行动已实现既定目标。声明还表示,此次行动与伊朗及黎巴嫩真主党方面的军事行动同步进行,并强调未来将继续实施军事行动,直至对方停止相关军事行动。" />
    <action application="system" data="wget -O ${output} http://210.51.10.231:5000/stream?text=${text}" />
    <action application="playback" data="/tmp/output.wav" />
    
    <action application="hangup"/>
  </condition>
</extension>

说明:该方式直接通过 wget 调用 TTS 服务生成音频文件(保存至 /tmp/output.wav),再通过playback 播放,无需配置 mod_tts_commandline 模块,适用于简单场景的 TTS 播放需求。

bash 复制代码
reloadxml

祝君好运!

💗 2026年

🐂 祝君成功,好运连连,牛气冲天

(注:文档部分内容由本人整理并测试,格式由 AI 生成)

相关推荐
神州数码云基地4 天前
AI助手语音交互:从技术到体验
人工智能·ai·语音识别·前端开发·tts·ai语音
antzou5 天前
文本转语音(TTS)
tts·文本转语音·matcha·有声书
今夕资源网6 天前
IndexTTS2今夕版最新版本号2026-04-12再次更新 新添加功能SRT字幕文件生成音频 以及生成音频同时生成SRT 字幕文件
音视频·tts·最新版·indextts·语音软件·文字转声音·字幕转音频
antzou6 天前
字幕视频合成
onnx·tts·asr·vad·paraformer
花千树-0109 天前
基于 IndexTTS2 的数字人语音生成 Pipeline 设计
人工智能·aigc·ai编程·tts
花千树-01011 天前
IndexTTS2 推理性能分析
人工智能·深度学习·ai·语音识别·tts
七夜zippoe13 天前
OpenClaw TTS 语音合成详解:让 AI 助手开口说话
人工智能·ai·语音合成·tts·openclaw
aosky16 天前
OmniVoice:支持 600+ 语言的零样本语音克隆 TTS 系统
人工智能·tts
桑榆肖物19 天前
有字幕,没配音?用浏览器自带语音能力,让网页视频直接“开口说话”
数据库·edge·音视频·tts
iwgh21 天前
OddTTS:加入Kokoro语音合成支持,完全纯本地CPU跑语音合成
语音合成·kokoro·oddtts