FreeSWITCH对接http协议的tts服务
- 自建tts服务模拟测试环境
- 编译及配置mod_tts_commandline模块
- 测试验证tts效果
- 模块代码分析
- 向特定通道播放tts音频
- 配套资源下载
一、自建tts服务模拟测试环境
如果已经有http协议的tts服务,该部分可以跳过。
这里使用pytts3在Windows10环境下,实现简单的tts服务。
整体结构如下:


完整源码可从如下渠道获取:
二、编译及配置mod_tts_commandline模块
1、编译mod_tts_commandline模块
文件 : freeswitch-1.10.9.-release/modules.conf
开启或添加如下内容:
asr_tts/mod_tts_commandline
编译及安装:
./rebootstrap.sh
#CFLAGS="-O3 -fPIC" ./configure --disable-signalwire (可选)
CFLAGS="-O3 -fPIC" ./configure
make -j
make install

这里描述下关键信息,更多FreeSWITCH源码编译的信息,请参考如下文章:
2、配置mod_tts_commandline模块
2.1 开启模块
首先需要在配置文件中开启mod_tts_commandline模块,文件路径:
/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
配置内容:
<load module="mod_tts_commandline"/>
2.2 配置模块
配置文件路径: /usr/local/freeswitch/conf/autoload_configs/tts_commandline.conf.xml
配置示例:
<configuration name="tts_commandline.conf" description="TextToSpeech Commandline configuration">
<settings>
<!--
Some variables will be replaced :
${text}: input text (quoted)
${rate}: sample rate (example: 8000)
${voice}: voice_name passed to TTS(quoted)
${file}: output file (quoted, including .wav extension) Example commands can be found at:
https://freeswitch.org/confluence/display/FREESWITCH/mod_tts_commandline#mod_tts_commandline-Examplecommands
-->
<!--param name="command" value="echo ${text} | text2wave -f ${rate} > ${file}"/-->
<param name="command" value="/bin/bash /root/test/tts1.sh ${text} ${file}" />
</settings>
</configuration>
bash脚本内容(/root/test/tts1.sh):
#! /bin/bash content=$1
file=$2
echo $content
echo $file
#wget http://192.168.137.1:8091/?text='just a test' -O /tmp/tts1.wav
wget http://192.168.137.1:8091/?text="$content" -O $file
说明:
fs机器地址: 192.168.137.32
tts机器地址: 192.168.137.1
三、测试验证tts效果
这里演示下tts效果。
1、配置拨号方案
dialplan配置(default.xml):
<extension name="ttsTest1">
<condition field="destination_number" expression="^654321$">
<action application="log" data="INFO dialed 654321."/>
<action application="lua" data="ttsTest1.lua"/>
</condition>
</extension>
2、添加lua脚本
lua脚本内容(/usr/local/freeswitch/scripts/ttsTest1.lua):
session:answer()
session:setVariable("tts_engine", "tts_commandline")
session:setVariable("tts_voice", "girl")
--session:execute("speak", "just test!")
session:execute("speak", "今天天气不错!")
3、注册分机拨打验证
注册分机: 1001
拨打号码: 654321
测试效果如下:

四、模块代码分析
模块路径: freeswitch-1.10.9.-release\src\mod\asr_tts\mod_tts_commandline
模块代码文件: mod_tts_commandline.c
1、mod_tts_commandline_load函数
模块入口函数,主要做的事情就是初始化tts资源,绑定回调函数。

2、tts_commandline_speech_open 函数
用于生成临时音频文件名称。

3、tts_commandline_speech_close函数
删除之前生成的临时音频文件。

更多模块函数分析可从如下渠道获取:
五、向特定通道播放tts音频及fire播放完成事件
如果要构建更上层应用(比如机器人服务),需要提供向特定通道播放tts声音的功能,播放完毕需要产生事件通知调用方,这里进行简单的示例。
脚本名称: tts_to_channel.lua
文件内容可从如下渠道获取:
tts_to_channel.lua {channel_uuid} {text}
/event plain CUSTOM MYTTS_TTS_DONE

事件效果:

运行效果视频可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 2024081102 获取。
六、资源下载
本文涉及源码及相关文件,可从如下途径获取:

FreeSWITCH对接http协议的tts服务的更多相关文章
- Zabbix5 对接 SAML 协议 SSO
Zabbix5 对接 SAML 协议 SSO 在 Zabbix5.0 开始已经支持 SAML 认证 官文文档: https://www.zabbix.com/documentation/current ...
- 使用pyttsx3实现简单tts服务
操作系统:Windows 10_x64 python版本:Python 3.9.2_x64 pyttsx3版本: 2.90 pyttsx3是一个tts引擎包装器,可对接SAPI5.NSSS(NSS ...
- 吾剑未尝不利,国内Azure平替,科大讯飞人工智能免费AI语音合成(TTS)服务Python3.10接入
微软Azure平台的语音合成(TTS)技术确实神乎其技,这一点在之前的一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),已经做过详细介绍, ...
- freeswitch对接其它SIP设备
这几天用到freeswitch对接其它设备方面的知识,这里整理下,也方便我以后查阅. 操作系统:debian8.5_x64 freeswitch 版本 : 1.6.8 一.freeswitch作为被叫 ...
- 初探机器学习之使用讯飞TTS服务实现在线语音合成
最近在调研使用各个云平台提供的AI服务,有个语音合成的需求因此就使用了一下科大讯飞的TTS服务,也用.NET Core写了一个小示例,下面就是这个小示例及其相关背景知识的介绍. 一.什么是语音合成(T ...
- syslog之二:syslog协议及rsyslog服务全解析
目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...
- 【C#】教你纯手工用C#实现SSH协议作为GIT服务端
SSH(Secure Shell)是一种工作在应用层和传输层上的安全协议,能在非安全通道上建立安全通道.提供身份认证.密钥更新.数据校验.通道复用等功能,同时具有良好的可扩展性.本文从SSH的架构开始 ...
- HTTP协议及WWW服务应用
一.用户访问网站的流程图 二.DNS解析的流程图 三.用户访问网站的基本流程原理阐述 ① 用户在浏览器中输入请求的地址回车 ② 先找本地的缓存和Hosts文件,有解析的对应IP直接返回个客户端IP地址 ...
- CAS 5.1.x 的搭建和使用(四)—— 配置使用HTTP协议访问的服务端
CAS单点登录系列: CAS 5.1.x 的搭建和使用(一)—— 通过Overlay搭建服务端 CAS5.1.x 的搭建和使用(二)—— 通过Overlay搭建服务端-其它配置说明 CAS5.1.x ...
- SSL协议提供的服务
SSL协议提供的服务主要有: 1)认证用户和服务器,确保数据发送到正确的客户机和服务器: 2)加密数据以防止数据中途被窃取: 3)维护数据的完整性,确保数据在传输过程中不被改变.
随机推荐
- C# 循环枚举
foreach (int eemun in Enum.GetValues(typeof(类名))) { string sName = Enum.GetName(typeof(类名), eemun);/ ...
- 以沙箱的方式运行容器:安全容器gvisor
目录 一.系统环境 二.前言 三.安全容器隔离技术简介 四.Gvisor简介 五.容器runtime简介 六.docker容器缺陷 七.配置docker使用gVisor作为runtime 7.1 安装 ...
- redhat6.5 升级 openssl
上传版本包: openssl-1.0.1u.tar.gz 解压缩安装包: tar -xf openssl-1.0.1u.tar.gz 安装版本: ./config --prefix=/usr/loca ...
- LLDB辅助工具Chisel入门初探
LLDB辅助工具Chisel入门初探 基础适用方法 使用场景 iOS开发的调试过程中,LLDB的使用难度较大等各种原因,所以更多的时间开发者们仅仅用于po.expr输出,实际上Facebook(现在该 ...
- 常见 i2c设备地址
背景 朋友分享的一份i2c器件地址清单,我觉得还不错. reference:https://learn.adafruit.com/i2c-addresses/the-list Special case ...
- hypernetwork在SD中是怎么工作的
大家在stable diffusion webUI中可能看到过hypernetwork这个词,那么hypernetwork到底是做什么用的呢? 简单点说,hypernetwork模型是用于修改样式的小 ...
- ubuntu 安装 github desktop
原文: https://gist.github.com/berkorbay/6feda478a00b0432d13f1fc0a50467f1 sudo wget https://github.com/ ...
- Nginx配置以及热升级
目录 Nginx详解 1. Nginx关键特性 2. Nginx配置 2.1 event 2.2 http 2.2.1 log_format 2.2.2 sendfile 2.2.3 tcp_nopu ...
- 【ClickHouse】0:clickhouse学习2之数据类型
一 :如何查看clickhouse具体支持哪些数据类型? 1:查看官方文档:https://clickhouse.tech/docs/en/sql-reference/data-types/ 2:查看 ...
- ChiFAN 的进程表
ChiFAN 的进程表 tip 有些题写了题解,思路做法都在里面,就只丢一个传送门了. 2023.1.9 生日蛋糕 传送门 IDA* 经过一番推式子可得,若还剩下 \(K\) 的体积,表面积为 \(2 ...
