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中 ...
随机推荐
- PHP中 die,die(),exit,exit(),return,return() 的区别
die:是遇到错误才停止die():停止程序运行,输出内容exit:是停止程序运行,是直接停止,并且不运行后续代码,不输出内容exit():可以显示内容.exit(0):正常运行程序并退出程序:exi ...
- 第11、12章等待方法和alter框处理
11.等待方法 time sleep webdriver implicitly_wait() 设置浏览器等待时间 WebDriverWait 等待条件满足或超时后退出 12.alter对话框处理 ...
- Docker入门的亿点点学习
前段时间花了些时间学习了亿点点docker,也算是入门了吧,顺便记了一下笔记拿出来分享给想要接触docker的兄弟们. 没有服务器的兄嘚可以去腾讯云或者阿里云领取免费的试用产品嗷,如果已经领取过了,又 ...
- Solution -「NOI 2018」「洛谷 P4768」归程
\(\mathcal{Description}\) Link. 给定一个 \(n\) 个点 \(m\) 条边的无向连通图,边形如 \((u,v,l,a)\).每次询问给出 \(u,p\),回答 ...
- 多图|一文详解Nacos参数!
Nacos 中的参数有很多,如:命名空间.分组名.服务名.保护阈值.服务路由类型.临时实例等,那这些参数都是什么意思?又该如何设置?接下来我们一起来盘它. 1.命名空间 在 Nacos 中通过命名空间 ...
- QT通过静态库调用Go
## 编写Go代码 package main import( "fmt" "C" ) //export test func test(str *C.char) ...
- vue3-hash-calendar,一款基于vue3.x开发的移动端日期时间选择组件
在大家的催更下,鸽了一天又一天,vue3-hash-calendar 终于在今天诞生了. 按照惯例,先上效果图 Demo 扫描上方二维码或者请用浏览器的手机模式查看:https://www.hxkj. ...
- 基于Windows应用程序dll劫持的权限维持
假设我们通过某个漏洞,获取目标服务器的shell,在进行攻防的时候,为了不引起防守方(蓝队)的发现,我们要不能上来就把动作搞得很大,往往我们要对自己获取的"肉鸡"进行权限的维持,以 ...
- windows server2012 r2 .net framework 3.5失败
拿到手的虚拟机系统是Windows server 2012R2,本想着安装SQlserver2012轻轻松松,结果途中警告未安装.NET Framework 3.5.于是找了个.NET Framewo ...
- 记一次对ctf试题中对git文件泄露的漏洞的挖掘
拿到题,先f12查看代码 发现情况直接进行访问 最后试了发现flag.js可以访问 服务器返回了如下图所示的乱码 很显然有可能是git泄露 话不多说,直接利用https://github.com/ ...