转自:http://www.51asterisk.com/read.php?tid=494&ordertype=desc
为Asterisk增加中文语音合成TTS功能
TTS即语音合成技术(Text To Speech),它涉及声学、语言学、数学信号处理技术、多媒体技术等多个学科技术,是中文信息处理领域的一项前沿技术,实现把计算机中任意出现的文字转换成自然流畅的语音输出。
TTS在CTI系统中可以应用在IVR(交互式语音应答)服务器上,以提供语音交互式平台,为用户电话来访提供语音提示,引导用户选择服务内容和输入电话事务所需的数据,实现对计算机数据库等信息资料的交互式访问。维护人员不必再人工录音,只须将电子文档引入系统中,系统可以自动将电子文档转换为语音信息播放给客户。数据库中存放的大量数据,无需事先进行录音,能够随时根据查询条件查出并合成语音进行播报,从而大大减少了座席人员的工作负担。
常见的TTS语音合成应用有电话银行、实时股票信息查询、气象服务、手机号码归属地查询等。
那么应如何将TTS功能附加到Asterisk应用中呢?下面介绍一个可以支持中文普通话和粤语的开放源代码语音合成软件,可以与Asterisk完美集成。
1、系统环境
我们使用的环境是:
CentOS 5.2
Zaptel 1.4.11
Asterisk 1.4.21.2
Chan_SS7
OpenVox DE410P
portaudio
2、下载语音合成软件eSpeak
eSpeak是一个健壮的开放源代码语音合成软件,用C语言写成,支持英语和其他很多语言,支持Linux、Windows、Solaris 和 Mac OSX等操作系统,项目网址http://espeak.sourceforge.net.
eSpeak提供了共享链接库或者动态链接库(DLL),方便其他程序调用,而且支持SAPI5接口,合成的语音可以导出为wav文件,
eSpeak依赖于一种称为共振峰合成(formant synthesis)的技术,它的原理是处理器产生一个波形,然后让该波形通过各种滤波器以形成一个语音波。尽管这种技术具有改变话音音调和持续时间的功能,可产生的声音仍然具有明显的合成痕迹。这种技术的好处是语音库比较小。
eSpeak可以在这个页面下载到:http://espeak.sf.net/download.html
安装文档:eSpeak开发指南http://www.eguidedog.net/doc_espeak.php
3、下载中文语言包
中文普通话语言包zh_listx包括了中文字符和拼音,最新更新时间为23.Nov.2009。可以从这里下载到:
http://espeak.sourceforge.net/data/zh_listx.zip
把zh_listx文件解压到eSpeak的字符文件目录,然后设置编译选项为zh:
espeak --compile=zh
如果需要用到粤语,可以下载zhy_list文件包,最新更新时间为14.Jan.2009 。下载地址为:
http://espeak.sourceforge.net/data/zhy_list.zip
把zhy_list文件解压到eSpeak的字符文件目录,然后设置编译选项为zh-yue:
espeak --compile=zh-yue
4、编译安装eSpeak
之前需已安装portaudio,而且必须为v18版本
http://www.portaudio.com/archives/portaudio_v18_1.zip
cd /usr/src
unzip espeak-1.43-source.zip
cd espeak-1.43-source/src
make
make install
5、编译安装asterisk-espeak
编译需依赖libsndfile和libsamplerate库:
http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.21.tar.gz
http://www.mega-nerd.com/SRC/libsamplerate-0.1.3.tar.gz
asterisk-espeak是在Asterisk上应用eSpeak的插件,可以从下面网址下载到:
http://sourceforge.net/projects/asterisk-espeak/files/ 复制代码
cd /usr/src
tar -xzf asterisk-espeak-0.4.tar.gz
cd asterisk-espeak-0.4
make
make install
6、测试
修改 espeak.conf 支持中文语音:
voice=zh
修改 dialplan (extensions.conf),增加下面的拨号方案: 复制代码
exten => _X.,1,Answer()
exten => _X.,2,espeak(股票代码000001深发展开盘价格25元)
Powered by Zoundry Raven