FreeSWITCH调用第三方TTS 使用tts_commandline
FreeSWITCH 支持调用第三方TTS命令,本身已经搭好了框架,只需要配置即可用。
下面写一下步骤,以免忘记,也希望给你带来帮助。
第一步:编译模块mod_tts_commandline,并加载。
编辑源码下 modules.conf 文件,把 asr_tts/mod_tts_commandline 这一行的注释去掉。
然后 ./configure, make, makeinstall
重启FreeSWITCH
在CLI界面看到
freeswitch@internal> module_exists mod_tts_commandline
true
表示模块 mod_tts_commandline 加载成功。
第二步:修改配置文件
修改 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:
http://wiki.freeswitch.org/wiki/Mod_tts_commandline#Example_commands
-->
<!--param name="command" value="echo ${text} | text2wave -f ${rate} > ${file}"/-->
<param name="command" value="sh /tmp/tts_test.sh ${text} ${file}"/> ----这一行是我加的,/tmp/tts_test.sh是转换的脚本
</settings> </configuration>
 <param name="command" value="sh /tmp/tts_test.sh ${text} ${file}"/>  
----这一行是我加的,/tmp/tts_test.sh是转换的脚本,核心的TTS命令就写在这个脚本里面。具体的命令就不写了,可以支持科大,百度等第三方公司。
2个参数
${text}  --- 要转换的文字,在后面的拨号方案中赋值
${file}  --- 转换后的wav文件名字,全路径,带wav后缀,在后面的拨号方案中赋值
第三步:修改拨号方案脚本。
假如你的拨号方案会触发到lua脚本,然后在lua脚本中加入下面几行,进行测试:
session:answer();
session:setVariable("tts_engine", "tts_commandline");
session:setVariable("tts_voice", "girl");
session:setVariable("file", "/tmp/justtts.wav");
5 session:execute("speak", "欢迎您使用光大银行电子银行业务,查询余额请按一,修改密码请按二");
上面的app都比较清晰,不做过多解释。
第四步:打电话测试
当你听到声音 "欢迎您使用光大银行电子银行业务,查询余额请按一,修改密码请按二" 时,大功告成!
以上只是个人实现,可能还有其他更好的方法,欢迎在下面留言,谢谢。
FreeSWITCH调用第三方TTS 使用tts_commandline的更多相关文章
- C#的Process类调用第三方插件实现PDF文件转SWF文件
		
在项目开发过程中,有时会需要用到调用第三方程序实现本系统的某一些功能,例如本文中需要使用到的swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件的呢?接下来 ...
 - WebService学习总结(四)——调用第三方提供的webService服务
		
http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...
 - Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()
		
Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...
 - [转]Git调用第三方对比工具beyondCompare
		
点击阅读原文 对于我这种 git 命令行小白来说, git 自带的对比工具各种水土不服,想念以前的 svn 小乌龟 + beyondCompare 的日子...纠结完 gitHub client 未果 ...
 - ios调用第三方程序打开文件,以及第三方调用自己的APP打开文件
		
1.自己的APP调用第三方打开文件 主要是使用 UIDocumentInteractionController 类 并实现 UIDocumentInteractionControllerDel ...
 - ThinkPHP自动获取关键词(调用第三方插件)
		
ThinkPHP自动获取关键词调用在线discuz词库 先按照下图路径放好插件 方法如下 /** * 自动获取关键词(调用第三方插件) * @return [type] [description] * ...
 - Android JNI如何调用第三方库
		
http://www.2cto.com/kf/201504/388764.html Android JNI找不到第三方库的解决方案 cannot load library 最近做一个jni项目,拿到的 ...
 - Android如何调用第三方SO库
		
问题描述:Android如何调用第三方SO库:已知条件:SO库为Android版本连接库(*.so文件),并提供了详细的接口说明:已了解解决方案:1.将SO文件直接放到libs/armeabi下,然后 ...
 - C# 调用第三方DLL完整实例
		
C# 调用第三方DLL完整实例 分类: C/C++ 以下代码为本人在实际项目中编写的调用第三方DLL接口程序的完整代码. public class ExecuteDLL : Form { ...//忽 ...
 
随机推荐
- Bugku-CTF之多次
			
Day33 多次 http://123.206.87.240:9004 本题有2个flag flag均为小写 flag格式 flag{}
 - [单片机] ESP8266 开机自动透传
			
AT+CWMODE=1//设置WiFi工作在透传模式 AT+CWJAP_DEF="XX","YYY"//设置要链接的wifi名称.密码,并进行连接 //设置TC ...
 - 吴裕雄 python 机器学习——支持向量机SVM非线性分类SVC模型
			
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm fr ...
 - 微信小程序UDP通信
			
前言 UDP通信分为单播 广播 组播,基础库2.7.0之后,小程序开始支持UDP通信,目前小程序只支持单播. 小程序API 小程序UDP通信这一块可以说是很简单了就一个UDPSocket实例.然后bi ...
 - 每天进步一点点------Error: Can't place pins assigned to pin location Pin_K22 (IOPAD_X41_Y19_N14)
			
在QII中的Assignments----Device----Device and pin option-----(选项卡)Dual purpose pin将nCE0 的设置改为: use as re ...
 - docker-compose介绍及部署LNMP
			
一.简介 Compose是用于定义和运行多容器Docker应用程序的工具,是docker的服务编排工具,主要应用于构建基于Docker的复杂应用,compose通过一个配置文件来管理多个docker容 ...
 - 读懂timing report
			
三部分:表头/launch path /capture path 1.表头 1) 工具版本信息:如示例中的18.10-p001,对某个具体项目timing signoff 工具的版本最好保证一致: 操 ...
 - 「JSOI2015」圈地
			
「JSOI2015」圈地 传送门 显然是最小割. 首先对于所有房子,权值 \(> 0\) 的连边 \(s \to i\) ,权值 \(< 0\) 的连边 \(i \to t\) ,然后对于 ...
 - getter和setter
			
/* 对象属性是由名字.值和自足特性构成的. 属性值可以用一个或两个方法替代,这两个方法就是getter和setter. 由getter和setter定义的属性称作“存取器属性” */ /* 定义存取 ...
 - Nginx做缓存
			
查看服务 netstat -lntp|grep 80 Nginx作为缓存WEB服务 通常情况下缓存是用来减少后端压力, 将压力尽可能的往前推, 减少后端压力,提高网站并发延时 Nginx代理缓存原理 ...