概述

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模块介绍的更多相关文章

  1. webkit模块介绍

    一.Webkit模块   用到的第三方库如下:   cairo 一个2D绘图库 casqt Unicode处理用的库,从QT中抽取部分代码形成的 expat 一个XML SAX解析器的库 freety ...

  2. 【液晶模块系列基础视频】1.2.iM_RGB模块介绍

    [液晶模块系列基础视频]1.2.iM_RGB模块介绍(上) [液晶模块系列基础视频]1.2.iM_RGB模块介绍(下) ============================== 技术论坛:http ...

  3. 【液晶模块系列基础视频】1.1.iHMI43模块介绍

    [液晶模块系列基础视频]1.1.iHMI43模块介绍(上) [液晶模块系列基础视频]1.1.iHMI43模块介绍(下) ============================== 技术论坛:http ...

  4. CSS3_概述、发展史、模块介绍、与浏览器之间的关系

    一.CSS3概述和CSS3的发展史: 1.css3概述: CSS3是CSS2的升级版本,3只是版本号,它在CSS2.1的基础上增加了很多强大的新功能.    目前主流浏览器chrome.safari. ...

  5. 嵌入式系统图形库GUI核心模块介绍

    本文转载自:http://blog.csdn.net/xteda/article/details/6575278 (作者 冯青华 信庭嵌入式工作室(www.xteda.com)- CEO Blog:h ...

  6. IIS7 常用模块介绍说明

    1.1.0   IIS常用的功能模块介绍: 1)         静态内容:可发布静态 Web 文件格式,比如 HTML 页面和图像文件. 2)         默认文档:允许您配置当用户未在 URL ...

  7. python模块介绍- multi-mechanize 性能测试工具

    python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...

  8. python模块介绍- xlwt 创建xls文件(excel)

    python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...

  9. python模块介绍- binascii 二进制和ASCII转换

    python模块介绍-binascii二进制和ASCII转换 目录 项目简介 简介: Uu编码 Binhex编码 Base64编码 QP码 CRC校验和 二进制转换 其他实例 项目简介 Python中 ...

随机推荐

  1. java中的静态变量,静态方法与静态代码块详解

    java中的类的生命周期分为装载,连接,初始化,使用,和卸载五个过程. 而静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...

  2. 增删改查简单的sql语句

    insert INSERT   INTO    t_stu   (name,age)  VALUES  ('wang',12) INSERT INTO    t_stu   VALUES(NULL,' ...

  3. 【论文阅读笔记】-针对RSA的短解密指数的密码学分析(Cryptanalysis of Short RSA Secret Exponents)

    目录 1. 介绍 polynomially larger 2. 连分数背景知识 3. 连分数算法 4. 连分数算法在RSA中的应用 5. 例子 6. 对RSA连分数攻击的反制 7. 对于攻击的改进 8 ...

  4. Linux vi 命令 – 文本编辑器

    vi命令是linux系统字符界面下的最常用的文本编辑器. vi编辑器是所有linux的标准编辑器,用于编辑任何ASCⅡ文本,对于编辑源程序尤其有用.iv编辑器功能非常强大,可以对文本进行创建,查找,替 ...

  5. P2678 [NOIP2015 提高组] 跳石头

    #include<bits/stdc++.h> using namespace std; int l,n,m,a[100010];//与起点的距离 bool check(int d) { ...

  6. Note/Solution - 转置原理 & 多点求值

    \[\newcommand{\vct}[1]{\boldsymbol{#1}} \newcommand{\mat}[1]{\begin{bmatrix}#1\end{bmatrix}} \newcom ...

  7. 使用Redis完成定时任务

    应用场景:在订单业务中,有时候需要对订单设置有效期,有效期到了后如果还未支付,就需要修改订单状态; 与设备进行长链接,如果一段时间内没有收到设备发送的心跳,则修改状态 1.引入依赖 <depen ...

  8. java集合专题 (ArrayList、HashSet等集合底层结构及扩容机制、HashMap源码)

    一.数组与集合比较 数组: 1)长度开始时必须指定,而且一旦指定,不能更改 2)保存的必须为同一类型的元素 3)使用数组进行增加/删除元素-比较麻烦 集合: 1)可以动态保存任意多个对象,使用比较方便 ...

  9. 『德不孤』Pytest框架 — 4、Pytest跳过测试用例

    目录 1.无条件跳过skip 2.有条件跳过skipif 3.练习 自动化测试执行过程中,我们常常出现这种情况:因为功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了, 如果我们注释掉或删除掉这 ...

  10. 『无为则无心』Python面向对象 — 60、魔法属性

    目录 1.魔法属性__name__ 2.魔法属性__bases__ 3.魔法属性__mro__ 4.魔法属性__doc__ 5.魔法属性__module__ 和__class__ 6.魔法属性__di ...