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功能一的更多相关文章

  1. CentOS 5下freeswitch中集成使用ekho实现TTS功能三

    四:在freeswitch中调用ekho 注:在测试过程中该语音包好像没用 FreeSWITCH 中文语音包测试版fssounds.zip 在/usr/local/freeswitch/sounds/ ...

  2. CentOS 5下freeswitch中集成使用ekho实现TTS功能二

    三:以上Festival安装完成以后回到ekho安装目录: 执行./configure --enable-festival 前 更改configure 1:替换 #AC_DEFINE(ENABLE_F ...

  3. AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

  4. 怎么在我们的App中集成条码扫描功能?

    现在很多App都有条码扫描功能,有的手机比如某米在照相机中集成了条码扫描功能,但是还有一部分手机没有这样的集成,比如韩国某星,需要自己下载一个条码扫描App.今天我们就来看看怎么在自己的App中集成一 ...

  5. 现有项目中集成Flutter

    本文列举了项目开发使用Flutter会遇到的问题,以及如何使用Flutter module在现有项目中集成Flutter,并对其原理进行了分析. 最近在做的一个商业项目,完全的使用Flutter编写的 ...

  6. 如何在ios中集成微信登录功能

    在ios中集成微信的登录功能有两种方法 1 用微信原生的api来做,这样做的好处就是轻量级,程序负重小,在Build Settings 中这样设置 然后设置 友盟的设置同上,但是要注意,加入你需要的所 ...

  7. 在Abp中集成Swagger UI功能

    在Abp中集成Swagger UI功能 1.安装Swashbuckle.Core包 通过NuGet将Swashbuckle.Core包安装到WebApi项目(或Web项目)中. 2.为WebApi方法 ...

  8. AngularJS进阶(十八)在AngularJS应用中集成科大讯飞语音输入功能

    在AngularJS应用中集成科大讯飞语音输入功能 注:请点击此处进行充电! 前言 根据项目需求,需要在首页搜索框中添加语音输入功能,考虑到科大讯飞语音业务的强大能力,遂决定使用科大讯飞语音输入第三方 ...

  9. 在 Laravel 5 中集成七牛云存储实现云存储功能

    本扩展包基于https://github.com/qiniu/php-sdk开发,是七牛云储存 Laravel 5 Storage版,通过本扩展包可以在Laravel 5中集成七牛云存储功能.   1 ...

随机推荐

  1. HibernateTools实现pojo类 数据库schma mapping映射的相互转换 二

    接着上一篇博客:HibernateTools实现pojo类 数据库schma mapping映射的相互转换 思路二:由数据库表,生成Mapping映射文件和POJO类. 尽管能够实现,但个人觉着先设计 ...

  2. spring oauth Role and Authority and scope

    使用hasRole class Grant implements GrantedAuthority{ @Override public String getAuthority() { return & ...

  3. Oracle Parallel模式

    一.Parallel 1. 用途 强行启用并行度来执行当前SQL.这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试.也就是说,加上这个说明,可以强行启用Oracle的多线程处 ...

  4. Hibernate使用注释

    可以使用注释创建hibernate应用程序. 有许多注释可用于创建hibernate应用程序,如@Entity,@Id,@Table等. Hibernate注释基于JPA 2规范,并支持所有功能.所有 ...

  5. android 细节之 AndroidRuntimeException:This message is already in use

    今天在做项目处理消息队列的时候.遇到了这样一个问题.一个异常.AndroidRuntimeException:This message is already in use. 我当时的详细业务需求情境为 ...

  6. IDEA15入门常用设置

    打开IDEA设置的快捷键:Ctrl + Alt + S 打开选中的项目属性快捷键:Shift + Ctrl + Alt + S 1.IDEA默认不会使用我们独立安装的Maven配置,需要手动设置,并且 ...

  7. chrome 设置代理服务器

    通过设置google chrome浏览器的代理服务器可以让google chrome浏览器通过代理服务器上网,可以隐藏本机的IP地址或者访问一些不能直接访问的网站. 工具/原料   google ch ...

  8. 怎样在asp.net中用一般处理文件ashx实现下载功能

    /// <summary> /// 下载文件,支持大文件.续传.速度限制.支持续传的响应头Accept-Ranges.ETag,请求头Range . /// Accept-Ranges:响 ...

  9. poj 2516(拆点+最小权匹配)

    题目链接:http://poj.org/problem?id=2516 思路:考虑某种货物,由于某个订货商可能接受来自不同地区的货物,而某一地区的货物也可能送给不同的订货商,显然不能直接进行匹配,必须 ...

  10. sql duplicate key

    本文来自:高爽,转载请注明. 向数据库插入记录时,有时会有这种需求,当符合某种条件的数据存在时,去修改它,不存在时,则新增,也就是saveOrUpdate操作.这种控制可以放在业务层,也可以放在数据库 ...