freeswitch中集成使用ekho实现TTS功能一
Linux下安装freeswitch并集成ekho实现TTS
1.
linux下安装freeswitch就不多介绍了,具体链接网址:
http://www.8000hz.com/archives/14.html
2.
Ekho TTS(http://www.eguidedog.net/ekho_cn.php)是一个免费、开源的中文语音合成软件。它目前支持粤语、普通话(国语)、诏安客语、藏语、雅言(中国古代通用语)和韩语(试验中),英文则通过Festival间接实现。Ekho支持Linux、Windows和Android平台。
英文则通过Festival间接实现。它比eSpeak的设计更简易,但文件较大。由于使用了真人发声,它比eSpeak的发音更自然。
源代码下载页面: Ekho (余音)
Ekho TTS 6.0的下载地址:https://sourceforge.net/projects/e-guidedog/files/Ekho/6.0/
一、Ekho的安装
# tar xjvf ekho-4.8.tar.bz2
# cd ekho-4.8
# ./configure
# make
#make install
安装成功~~~
测试一下吧: #ekho "我爱你余音"
注意:
如果./configure配置出错,可能是你缺少相关依赖库:libsndfile-dev,lib pulseaudio-dev,libncurses5-dev,libgtk2.0-dev,libvorbis-dev,liblame-dev,
yum install +包名
特别提醒:有些linux上安装了以上包,要将安装目录下面生成的.pc文件拷贝到
/usr/lib/pkgconfig/ 或者
/usr/local/lib/pkgconfig/
这2个目录下
注意:直接配置
./configure
Make
安装ekho提示:
src/libekho.cpp: In member function ‘int ekho::Ekho::init()’:
src/libekho.cpp:79: 错误:expected primary-expression before ‘{’ token
src/libekho.cpp:79: 错误:expected `;' before ‘{’ token
src/libekho.cpp:1971: 错误:expected `}' at end of input
make[1]: *** [src/libekho_a-libekho.o] 错误 1
make[1]: Leaving directory `/home/new_uucc_soft/ekho-6.0'
make: *** [all] 错误 2
解决办法:
更改libekho.cpp中:
1.替换
mPendingFrames = 0;
mStripSsml = true;
mSpeakIsolatedPunctuation = true;
mSpeechQueueMutex = PTHREAD_MUTEX_INITIALIZER;
mSpeechQueueCond = PTHREAD_COND_INITIALIZER;
mEnglishVoice = "voice_kal_diphone";
替换为:
this->mPendingFrames = 0;
this->mStripSsml = true;
this->mSpeakIsolatedPunctuation = true;
pthread_mutex_init(&mSpeechQueueMutex, NULL);
pthread_cond_init(&mSpeechQueueCond, NULL);
this->mEnglishVoice = "voice_kal_diphone";
2.替换
mSonicStream = 0;
mPcmCache = true;
替换为:
this->mSonicStream = 0;
this->mPcmCache = true;
3.替换
mFliteVoice = 0;
为:
this->mFliteVoice = 0;
4.替换
memset(mAlphabetPcmCache, 0, 26);
memset(mAlphabetPcmSize, 0, 26);
mPuncMode = EKHO_PUNC_SOME;
为:
memset(this->mAlphabetPcmCache, 0, 26);
memset(this->mAlphabetPcmSize, 0, 26);
this->mPuncMode = EKHO_PUNC_SOME;
安装完成:运行ekho
出现:
ekho: error while loading shared libraries: libpulse-simple.so.0: cannot open shared object file: No such file or directory
这个时候就要在/etc/ld.so.conf中加入xxx.so所在的目录。
一般而言,有很多so档会在/usr/local/lib这个目录下,所以在/etc/ld.so.conf中加入/usr/local/lib这一行,可以解决此问题。
将/etc/ld.so.conf存档后,还要执行「/sbin/ldconfig –v」来更新一下才会生效。
测试:
注意:使用ekho将文本转换成为语音,要使用UTF8编码格式:
echo "我是好人" > tmp.txt
iconv -t UTF8 tmp.txt >tmp1.txt 这句在linux系统下一般不用因为linux默认是UTF8格式,如果用户自己改了系统格式,即要安装iconv,将tmp.txt的编码格式转换为UTF8格式
ekho -a 100 -f tmp1.txt -o p1.wav
二:安装Festival
如果需要朗读英语,需要打开Festival支持:
(Festival的安装)
Festival提供了一个通用的框架,用于构建语音合成系统,该系统包含了各种模块示例。它提供了完整的文本转语音的API,可以通过shell、C++静态库等多种方式调用,原生支持Mac OS,支持的语言包括英语和西班牙语;而且系统是使用c++编写,底层调用Edinburgh Speech Tools;
Festival下载地址:
http://festvox.org/packed/festival/2.1/
festival-2.1-release.tar.gz Festival语音合成系统源文件
speech_tools-2.1-release.tar.gz Edinburgh语音工库
estlex_CMU.tar.gz festlex_POSLEX.tar.gz词典
festvox_kallpc16k.tar.gz 语料库
前两个解压后需要配置编译,后三个解压后自动解压在festival文件夹中。首先编译speech_tools,进入该文件夹,输入:
#./configure
#make
漫长的等待后,编译完成!此时可以 执行 make test 查看编译是否成功Test OK即表示成功。
设置变量:
用vi /etc/profile 最后添加一下语句:其中festival和speech_tools是你自己的安装目录
PATH=/home/new_uucc_soft/festival/festival/bin:$PATH:/home/new_uucc_soft/festival/speech_tools/bin
http://www.cnblogs.com/zxqdlenovo/p/4031060.html
freeswitch中集成使用ekho实现TTS功能一的更多相关文章
- CentOS 5下freeswitch中集成使用ekho实现TTS功能三
四:在freeswitch中调用ekho 注:在测试过程中该语音包好像没用 FreeSWITCH 中文语音包测试版fssounds.zip 在/usr/local/freeswitch/sounds/ ...
- CentOS 5下freeswitch中集成使用ekho实现TTS功能二
三:以上Festival安装完成以后回到ekho安装目录: 执行./configure --enable-festival 前 更改configure 1:替换 #AC_DEFINE(ENABLE_F ...
- AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能
在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...
- 怎么在我们的App中集成条码扫描功能?
现在很多App都有条码扫描功能,有的手机比如某米在照相机中集成了条码扫描功能,但是还有一部分手机没有这样的集成,比如韩国某星,需要自己下载一个条码扫描App.今天我们就来看看怎么在自己的App中集成一 ...
- 现有项目中集成Flutter
本文列举了项目开发使用Flutter会遇到的问题,以及如何使用Flutter module在现有项目中集成Flutter,并对其原理进行了分析. 最近在做的一个商业项目,完全的使用Flutter编写的 ...
- 如何在ios中集成微信登录功能
在ios中集成微信的登录功能有两种方法 1 用微信原生的api来做,这样做的好处就是轻量级,程序负重小,在Build Settings 中这样设置 然后设置 友盟的设置同上,但是要注意,加入你需要的所 ...
- 在Abp中集成Swagger UI功能
在Abp中集成Swagger UI功能 1.安装Swashbuckle.Core包 通过NuGet将Swashbuckle.Core包安装到WebApi项目(或Web项目)中. 2.为WebApi方法 ...
- AngularJS进阶(十八)在AngularJS应用中集成科大讯飞语音输入功能
在AngularJS应用中集成科大讯飞语音输入功能 注:请点击此处进行充电! 前言 根据项目需求,需要在首页搜索框中添加语音输入功能,考虑到科大讯飞语音业务的强大能力,遂决定使用科大讯飞语音输入第三方 ...
- 在 Laravel 5 中集成七牛云存储实现云存储功能
本扩展包基于https://github.com/qiniu/php-sdk开发,是七牛云储存 Laravel 5 Storage版,通过本扩展包可以在Laravel 5中集成七牛云存储功能. 1 ...
随机推荐
- 【转】Monkey测试6-Monkey Test Log
Moneky Test Log 分析: 首先用一个最简单的例子分析:monkey --pct-trackball 0 --throttle 100 -v 500/*p参数: 表示指定测试的程序/*v参 ...
- 浅谈IM软件怎样建立安全socket连接、登录
----------------------------------------------------欢迎查看IM软件业务知识<专栏>-------------------------- ...
- 2015年天勤考研机试模拟赛 A 推断三角形
[思路]:採用atoi转换长度.两边仅仅和大于第三边,两边之差小于第三边. [AC代码]: #include <iostream> #include <algorithm> # ...
- TFS2013安装与使用图文教程
from:http://www.jb51.net/softjc/214560.html TFS2013安装与使用图文教程 一.安装和配置过程介绍 要安装TFS2013当然要先进行下载了,可以在下面的地 ...
- Python2.6升级Python2.7
Python2.6升级2.7 由于Centos6系列自带的python版本为2.6.6,然而有很多应用需要依赖于python2.7来实现,所以有了这个升级的需求.升级原理很简单,无非就是下载.编译.安 ...
- JSP -> f:loadBundle用法
jsp中出现<f:loadBundle basename="messages_zh_CN" var="msgs" /> 还有src目录下有messa ...
- 【BZOJ2140】稳定婚姻 Tarjan
[BZOJ2140]稳定婚姻 Description 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. ...
- Java多线程的两种实现方式
Java总共有两种方式实现多线程 方式1:通过继承Thread类的方式 package com.day04; /** * 通过继承Thread类并复写run方法来是实现多线程 * * @author ...
- 企业实施DevOPS的七大挑战(转)
从别人的演讲视频中摘抄,做笔记. 什么是DevOPS 如何衡量DevOPS 企业实施DevOPS的七大挑战 自动化测试投入不足 单元测试 API测试 界面测试 功能测试 高度集中的IT服务 标准化 脚 ...
- 批量索引以提高索引速度 -d --data-binary
index create update 第1.2行分别为:信息行.数据行,在索引中增加或更换文档delete 移除文档,只包含信息行 Bulk API | Elasticsearch Referenc ...