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中 ...
随机推荐
- redis lua脚本学习
语法格式(常见) a = 5 -- 全局变量 local b = 5 -- 局部变量 Eval的使用 EVAL script numkeys key [key ...] arg [arg ...] 首 ...
- JS快速入门(一)
目录 Javascript快速入门(一) 变量的命名规则 变量与常量 变量 常量 数据类型 数值型:Number 字符串:String 常用方法: 布尔类型:Boolean 未定义类型 :Undefi ...
- 如何综合运用对称加密技术、非对称加密技术(公钥密码体制)和Hash函数 保证信息的保密性、完整性、可用性和不可否认性?
一.几个问题 在提出问题之前,先创建一个使用场景,发送方(甲方)要给接收方(乙方)发送投标书.大家知道,投标书都包括发送方的标的,这个标的是不能被竞标者知晓,更不能被竞标者修改的.在传输的投标书时,提 ...
- find+grep+正则表达式
目录 find+grep+正则表达式 1.find 2.grep 3.正则表达式 find+grep+正则表达式 1.find 根据文件的名称或者属性查找文件. # 自己在 /root/adc目录下长 ...
- mysql数据库怎么存入emoji表情
第一步 设置数据库字符编码为utf8mb4_general_ci 设置相应表字段字符编码为utf8mb4_general_ci 第二步 设置my.cnf增加以下配置信息 [client] defau ...
- TensorFlow优化器浅析
本文基于tensorflow-v1.15分支,简单分析下TensorFlow中的优化器. optimizer = tf.train.GradientDescentOptimizer(learning_ ...
- Spring AOP基础概念及自定义注解式AOP初体验
对AOP的理解开始是抽象的,看到切点的匹配方式其实与正则表达式性质大致一样就基本了解AOP是基本是个什么作用了.只是整个概念更抽象,需要具化理解.下图列表是AOP相关概念解释,可能也比较抽象^_^ 比 ...
- 黑客高端de浏览器使用秘籍
搜索引擎已经成为上网必不可少的工具之一,聪明的黑客们发现,搜索引擎也能成为发动网络攻击的工具. Google Hacking,原指利用Google搜索引擎搜索信息来进行入侵的技术和行为,如今已不再局限 ...
- GIT学习——天天都在用Git,那么你系统学习过吗?(学习过程)
你系统学习Git了吗? 学习圣思园张龙老师的Git课程. 使用Mac编程的好处,不是因为Mac长得好看 Git内容学习准备 如果你还没有用Git,就不要写代码了. GitHub仓库的使用. 新员工入职 ...
- python2写ping监控,自动发现ip
玩了hostmonitor,老外写的很好.但是不符合国情,只有邮件适合发送. 今天用python 写一个自动发现ip,ping失败报警的程序.(微信和邮件报警) 以前用python写的发微信,发邮件直 ...