freeswitch tts_commandline模块介绍
概述
freeswitch是开源、免费的VOIP软交换平台,自带了很多功能各异的模块。
mod_tts_commandline模块,本身没有TTS能力,而是通过调用TTS引擎的命令生成语音文件,tts命令可以配置,最终实现自动TTS语音播放的功能。
今天,我们介绍一下该模块的一般应用方法。
环境
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.8.7
GCC:4.8.5
模块编译安装
安装text2wave依赖包,TTS引擎,免费,不支持中文,音质很差,仅供测试使用。
yum install festival
编译安装mod_tts_commandline模块。
cd ./freeswitch-1.6.19_master/src/mod/asr_tts
make
make install
生成如下文件
/usr/local/freeswitch/mod/mod_tts_commandline.so
/usr/local/freeswitch/mod/mod_tts_commandline.la
配置
fs的配置修改如下。
/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
<load module="mod_tts_commandline"/>
/usr/local/freeswitch/conf/autoload_configs/tts_commandline.conf.xml
<param name="command" value="echo ${text} | text2wave -f ${rate} > ${file}"/>
/usr/local/freeswitch/conf/dialplan/as_dialplan.xml
<context name="public">
<extension name="sbc_out" continue="false">
<condition field="destination_number" expression="^119(\d+)$">
<action application="answer" />
<action application="speak" data="tts_commandline|pico|This is an example of using tts commandline"/>
<action application="hangup"/>
</condition>
</extension>
</context>
测试
在192.168.0.110上配置一个sip账号10012。
在192.168.0.110上配置路由,被叫号码前缀为0128的号码,转接到10.9.0.128服务器
使用10012呼叫0128119123。
10012听到语音播报“This is an example of using tts commandline”。
呼叫流程
freeswitch收到呼叫,进入dialplan。
执行speak功能,speak功能是freeswitch内置函数,代码在switch_ivr_play_say.c文件。
speak带的data中,使用tts_commandline接口实现TTS功能。
tts_commandline中调用tts_commandline.conf.xml 配置的command生成语音文件。
command命令中,使用text2wave TTS引擎生成语音文件。
speak播放tts_commandline生成的语音文件。
参考日志:
EXECUTE sofia/external/10012@192.168.0.110 speak(tts_commandline|pico|This is an example of using tts commandline)
2018-07-13 21:04:31.878645 [DEBUG] switch_ivr_play_say.c:3025 OPEN TTS tts_commandline
2018-07-13 21:04:31.878645 [DEBUG] switch_ivr_play_say.c:3035 Raw Codec Activated
2018-07-13 21:04:31.878645 [DEBUG] mod_tts_commandline.c:160 Executing: echo 'This is an example of using tts commandline' | text2wave -f 8000 > '/tmp/a250f2fa-88a7-11e8-b9e3-a16767955d71.tmp.wav'
2018-07-13 21:04:32.659240 [DEBUG] switch_ivr_play_say.c:2729 Speaking text: This is an example of using tts commandline
总结
fs的模块功能很强大,适合根据不同的客户场景来配置出对应的呼叫流程。
我们在实际应用中,可以根据自己的需要,直接修改tts_commandline配置中的“text2wave”命令名就可以实现适合自己环境的TTS呼叫流程。
空空如常
求真得真
freeswitch tts_commandline模块介绍的更多相关文章
- webkit模块介绍
一.Webkit模块 用到的第三方库如下: cairo 一个2D绘图库 casqt Unicode处理用的库,从QT中抽取部分代码形成的 expat 一个XML SAX解析器的库 freety ...
- 【液晶模块系列基础视频】1.2.iM_RGB模块介绍
[液晶模块系列基础视频]1.2.iM_RGB模块介绍(上) [液晶模块系列基础视频]1.2.iM_RGB模块介绍(下) ============================== 技术论坛:http ...
- 【液晶模块系列基础视频】1.1.iHMI43模块介绍
[液晶模块系列基础视频]1.1.iHMI43模块介绍(上) [液晶模块系列基础视频]1.1.iHMI43模块介绍(下) ============================== 技术论坛:http ...
- CSS3_概述、发展史、模块介绍、与浏览器之间的关系
一.CSS3概述和CSS3的发展史: 1.css3概述: CSS3是CSS2的升级版本,3只是版本号,它在CSS2.1的基础上增加了很多强大的新功能. 目前主流浏览器chrome.safari. ...
- 嵌入式系统图形库GUI核心模块介绍
本文转载自:http://blog.csdn.net/xteda/article/details/6575278 (作者 冯青华 信庭嵌入式工作室(www.xteda.com)- CEO Blog:h ...
- IIS7 常用模块介绍说明
1.1.0 IIS常用的功能模块介绍: 1) 静态内容:可发布静态 Web 文件格式,比如 HTML 页面和图像文件. 2) 默认文档:允许您配置当用户未在 URL ...
- python模块介绍- multi-mechanize 性能测试工具
python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...
- python模块介绍- xlwt 创建xls文件(excel)
python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...
- python模块介绍- binascii 二进制和ASCII转换
python模块介绍-binascii二进制和ASCII转换 目录 项目简介 简介: Uu编码 Binhex编码 Base64编码 QP码 CRC校验和 二进制转换 其他实例 项目简介 Python中 ...
随机推荐
- shell中的括号(小括号,大括号/花括号)
在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string ...
- NS前缀
NS来自于NeXTStep的一个软件 NeXT Software OC中不支持命名空间(namespace) NS是为了避免命名冲突而给的前缀 看到NS前缀就知道是Cocoa中的系统类的名称
- numpy 知识汇总
1.增加维度 高纬度打印出来很不好观察,所以打印出来shape更加容易理解维度的增加, 此外一维向量a=np.array([1,2,3]), a[:,None],相当于变为二维并转置了shape=(3 ...
- linux_19
haproxy https实现 总结tomcat的核心组件以及根目录结构 tomcat实现多虚拟主机 nginx实现后端tomcat的负载均衡调度 简述memcached的工作原理
- Solution -「CF 575G」Run for beer
\(\mathcal{Description}\) Link. 给定 \(n\) 个点 \(m\) 条边的无向图,边有边权,一个人初始速度为 \(1\),每走一条边速度 \(\div10\), ...
- CentOS 7.6 部署 GlusterFS 分布式存储系统
文章目录 GlusterFS简介 环境介绍 开始GlusterFS部署 配置hosts解析 配置GlusterFS 创建文件系统 安装GlusterFS 启动GlusterFS 将节点加入到主机池 创 ...
- 【程序员的实用工具推荐】 Mac 效率神器 Alfred
Alfred 是一款功能非常强大,能有效提升 Mac 电脑使用效率的神器.可以说有了 Alfred 你就基本上可以脱离鼠标实现各种操作.相比 Mac 自带的聚焦搜索,完全可以称得上拥有碾压性的优势. ...
- schtasks
schtasks create 创建新的计划任务. 语法 schtasks /create /tn TaskName /tr TaskRun /sc schedule [/mo modifier ...
- maven配置本地仓库和远程仓库
配置本地仓库 修改maven安装目录下conf/settings.xml,也可以在idea配置中覆盖 <localRepository>E:\maven\MavenRepository&l ...
- docker安装以及常用命令
yum-config-manager 对/etc/yum.repos.d/下的.repo文件进行增删改查 yum install -y yum-utils 添加docker源,由于yum源的docke ...