TTS技术简单介绍和Ekho(余音)TTS的安装与编程zouxy09@qq.comhttp://blog.csdn.net/zouxy09 一、TTS技术简单介绍:TTS技术,TTS是Text To Speech的缩写,即“从文本到语音”。它将计算机自己产生的、或外部输入的文字信息转变为可以听得懂的、流利的汉语口语(或者其他语言语音)输出的技术,隶属于语音合成(SpeechSynthesis)。TTS的基本组成:(1)文本分析对输入文本进行语言学分析(主要模拟人对自然语言的理解过程),逐句进行词汇的、语法的和语义的分析,以确定句子的低层结构和每个字的音素的组成,包括文本的断句、字词切分、多音字的处理、数字的处理、缩略语的处理等。使计算机对输入的文本能完全理解,并给出后两部分所需要的各种发音提示。(2)韵律建模为合成语音规划出音段特征,如音高、音长和音强等,使合成语音能正确表达语意,听起来更加自然。(3)语音合成(核心模块)根据韵律建模的结果,把处理好的文本所对应的单字或短语的语音基元从语音合成库中提取,利用特定的语音合成技术对语音基元进行韵律特性的调整和修改,最终合成出符合要求的语音。TTS的工作原理如下:例如:你输入了:“今天吃饭了没有啊?”,想让电脑读出来。那么我们会怎么做呢?(1)最简单的TTS:就是电脑把每一个字分开,对于“我”字,就通过查询把“我”字对应的语音基元读出来,这样同样方式处理剩余的字,那么这句话就读出来了。但是很明显,这样读出来的语音肯定不够自然。另外,每个字对应的语音基元哪里来呢?人工苦力活,就是请人把每个汉字读出来,然后录下来。你会问,岂不要录制6千多个汉字的语音?幸运的是,汉语的音节很少,很多同音字。所以我们最多只是需要录制: 声母数×韵母数×4,(其实不是每个读音都有4声),这样算来,最多只需要录制几百个语音就可以了。当然,也有非人工的方法,如eSpeak使用共振峰合成方法,这可以使提供的语言文件非常小,但是缺点是不如采用基于人录音的语料库的声音平滑自然。另外,在合成的时候需要一张汉字对应拼音的对照表(实际上就是字典),汉字拼音输入法也依赖这张表。上面单字朗读做出来的TTS效果也还可以,特别是朗读一些没有特别含义的如姓名,家庭住址,股票代码等汉语句子,听起来足够清晰。这要归功于我们伟大的母语通常都是单音节,从古代的时候开始,每个汉字就有一个词,表达一个意思。而且汉字不同于英语,英语里面很多连读,音调节奏变化很大,汉字就简单多了。当然,你仍然要处理一些细节,比如多音字,把“银行”读成“yin xing”就不对了;再比如,标点符号的处理,数字、字母的处理。(2)稍微复杂点的TTS:如果要把TTS的效果弄好一点,再来点力气活,把基本的词录制成语音,如常见的两字词,四字成语等,再做个词库和语音库的对照表,每次需要合成时到词库里面找。这样以词为单位,比以字为单位,效果自然是好多了。当然,这就涉及到分词的技术,要把复杂的句子断成合理的词序列。另外,为了追求更好的效果,还有进化到以常用句子为单位来录音了。当然,这就得需要更大的工作量了,因为你需要读单字、词、成语、句子等等。而且语音数据也会庞大起来。再来说说文本的标识,对于复杂文本,某些内容程序没有办法处理,需要标识出来。比如,单纯的数字“128”,是应该念成“一百二十八”还是“一二八”?解决办法通常是加入XML标注,如微软的TTS:"128"念成“一百二十八”,"128"将念成“一二八”。TTS引擎可以去解释这些标注。遗憾的是,语音XML标注并没有形成大家都完全认可的标准,基本上是各自一套。二、Ekho(余音)TTS的安装与编程:目前,TTS还是比较多的,有商业的,也有开源的,当然,前者的性能肯定要好一些,但对于业余非专业应用来说,开源的就足够了。下面就介绍下如何在ubuntu 12.04下安装和编程Ekho这个TTS。Ekho(余音)是一个把文字转换成声音的软件。它目前支持粤语、普通话(国语)和韩语(试验中),英文则通过Festival间接实现。网址如下(提供下载):http://www.eguidedog.net/ekho.phpFestival提供了一个通用的框架,用于构建语音合成系统,该系统包含了各种模块示例。它提供了完整的文本转语音的API,可以通过shell、C++静态库等多种方式调用,原生支持Mac OS,支持的语言包括英语和西班牙语;而且系统是使用c++编写,底层调用Edinburgh Speech Tools(Edinburgh语音工具库);Ekho支持Linux和Windows平台,使用时需要同时下载源文件和声音数据,解压到"jyutping"或"pinyin"。(以jyutping开头的声音数据是粤语,而以pinyin开头的声音数据是国语。文件名中的44100和16000表示的是采样率。采样率高意味着声音质量高。)1、下载ekho-4.12.tar.bz2解压:http://www.eguidedog.net/ekho.php该网址下载即可,开源码包已经包含了声音数据。解压后看到,ekho源码涉及几个部分:(1)include/soundtouch: SoundTouch是一个开源的音频处理库,主要实现包含变速、变调、变速同时变调等三个功能模块,能够对媒体流实时操作,也能对音频文件操作;(1)include/festival:通过Festival间接实现英文阅读;(2)Include/speech_tools:Edinburgh Speech Tools(Edinburgh语音工具库);(3)speechd-api:speech-dispatcher API(平台独立的语音合成API);(4)sonic:一个语音变速的算法实现;(5)ekho-data:ekho的字典文件和声音数据,上面说到了,TTS是通过文本分析,再查找字典,找到对应的声音数据,然后通过语音合成出来的;(6)Utfcpp:处理Unicode编码字符串的库。(7)sr-convert:改变.WAV声音文件采样率sample rate的库。然后就是src(ekho的主要实现)和lib(上面说的这几部分的静态链接库*.a)了,就没什么特别的了。2、安装依赖库:#apt-get install libsndfile1-dev libpulse-dev libncurses5-dev libgtk2.0-dev libvorbis-dev libmp3lame-dev3、配置、编译及安装:如果需要阅读英语,则需要配置编译Festival,在configure选项中加上--enable-festival,如果需要编译speech-dispatcher API和支持屏幕阅读的话,就加上--enable-speechd。(speech-dispatcher是一个平台独立的语音合成API,其框架是基于client/server模型的,两者通信是通过TCP连接使用Speech Synthesis Independent Protocol (SSIP)协议通信或者接口库通信的。)$ ./configure$ make$ sudo make install安装后,ekho这个可执行文件和声音数据ekho-data都会复制到系统目录下。但是好像头文件(除ekho.h外)和库等就没有复制进去,所以编程链接时需要注意指定位置。4、安装成功后,运行测试:# ekho '123'成功的话,系统会把“一百二十三”读出来。5、编程:编程需在源代码目录下,也就是ekho-4.12下,因为依赖的头文件都在该文件夹里,并没有安装到/usr/include等目录下;Echo支持的API,具体见ekho.h。编程代码:ekhotest.cpp/* ekhotest.cpp */#include "config.h" // this file is generated when building Ekho#include "ekho.h"using namespace ekho;int main(int argc, char **argv){/*ekho支持粤语Cantonese、普通话Mandarin国语和韩语Korean,在这指定*/Ekho wong("Mandarin");wong.blockSpeak("你好,欢迎!");return 0;}编译的话,因为依赖的库比较多,所以最好在该目录下写个sheel脚本complize.sh,如下:g++ ekhotest.cpp libekho.a lib/libSoundTouch.a lib/libFestival.a lib/libestools.a lib/libeststring.a lib/libestbase.a -I. -Iutfcpp/source -Isonic -lpthread -lvorbisenc -lvorbis -lm -logg -lmp3lame -lsndfile -lncurses `pkg-config --libs libpulse-simple` `pkg-config --cflags libpulse-simple`更改运行属性:#chmod 777 complize.sh然后:#./complize.sh就生成运行./a.out即可6、写Makefile管理个人感觉上面的编译过程有点乱,为了让ekho可以更好的嵌入其他应用程序编程(得清晰明白它的编译需要哪些头文件和库),我就简单的将其进行统一,将编译ekho所需的头文件和库分别放在一个目录中,并通过Makefile来编译自己写的ekho程序。先新建一个文件夹program_tts,再在这里文件夹中新建lib和include两个文件夹。然后拷贝ekho-4.12源码目录下的libekho.a和lib/*到新建的lib下,再将源码目录下的config.h和include/*,还有sonic/*.h、utfcpp/source/*拷贝到新建的include目录下。自己的编程文件ekhotest.cpp和Makefile在program_tts目录下。Makefile文件如下:CXX=g++CFLAGS=-Iinclude -Iinclude/sonic -Iinclude/speech_tools -Iinclude/soundtouch -Iinclude/festival -Iinclude/utf8 `pkg-config --cflags libpulse-simple`LIBS=-lpthread -lvorbisenc -lvorbis -lm -logg -lmp3lame -lsndfile -lncurses `pkg-config --libs libpulse-simple`SLIBS=lib/libekho.a lib/libSoundTouch.a lib/libFestival.a lib/libestools.a lib/libeststring.a lib/libestbase.aOBJECTS=ekhotest.oTARGETS=testekho$(TARGETS):$(OBJECTS)$(CXX) $^ $(SLIBS) $(LIBS) -o $@.cpp.o:$(CXX) -c $< $(CFLAGS) -o $@.c.o:$(CC) -c $< $(CFLAGS) -o $@clean:-rm -rf $(TARGETS) $(OBJECTS)这样,修改程序,直接make即可。

ekho tts 下载_TTS技术简单介绍和Ekho(余音)TTS的安装与编程相关推荐

  1. ekho tts 下载_TTS技术简单介绍和Ekho(余音)TTS的安装与编程 | 学步园

    一.TTS技术简单介绍: TTS技术,TTS是Text To Speech的缩写,即"从文本到语音".它将计算机自己产生的.或外部输入的文字信息转变为可以听得懂的.流利的汉语口语( ...

  2. TTS技术简单介绍和Ekho(余音)TTS的安装与编程

    TTS技术简单介绍和Ekho(余音)TTS的安装与编程 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.TTS技术简单介绍: TTS技术,TTS是Text ...

  3. Linux 下UVCamp;V4L2技术简单介绍(二)

    通过前文Linux 下UVC&V4L2技术简单介绍(一)我们了解了UVC和V4L2的简单知识. 这里是USB设备的文档描写叙述:http://www.usb.org/developers/do ...

  4. 单臂路由与三层交换技术简单介绍

    单臂路由与三层交换技术简单介绍 单臂路由与三层交换技术 一.单臂路由技术 二.使用实例 二.三层交换技术 使用实例 总结 单臂路由与三层交换技术 我们如何实现不同vlan之间的通信: 单臂路由技术:二 ...

  5. android hook技术教学视频,[科普向]hook技术简单介绍

    首先 1.  这只是科普向,会介绍相关Hook技术及原理,但是不会给源码.源码请自行百度 2.请至少有一点Windows编程经验,知道系统API是什么...以免看科普内容给您带来不适 3.这里结合了一 ...

  6. combo 技术简单介绍

    历史 在前端开发过程中,涉及到提升页面性能的时候,有很多方法.其中一种便是利用 CDN 来提高页面的 响应速度. 说到 CDN,虽然可以极大提升页面的响应速度,同时也会存在可以优化的地方.例如:在使用 ...

  7. J2EE技术简单介绍

    j2ee技术          java2的企业版是一系列中间件服务组合起来的强健的系统,这使得服务器方应用程序开发人员的工 作非常简单.j2ee包括的技术如下:     Enterprise Jav ...

  8. ldd命令 ubuntu_技术|简单介绍 ldd 命令

    如果您的工作涉及到 Linux 中的可执行文件和共享库的知识,则需要了解几种命令行工具.其中之一是 ldd ,您可以使用它来访问共享对象依赖关系.在本教程中,我们将使用一些易于理解的示例来讨论此实用程 ...

  9. 图像匹配技术简单介绍

    图像匹配技术实现两图像中,克服光照.尺度和角度等变化的情况下,准确地建立图像间视觉相似关系. 主要方向: 特征点匹配 -特征 (1)提取特征点 (2)寻找匹配点 (3)建立关系 难点:特征定义 稠密图 ...

最新文章

  1. Flex命令行学习总结
  2. 跟进table_cache参数
  3. rest spring_Spring的REST服务发现性,第5部分
  4. ZFS 常见问题解答 及 ZFS Boot 问题探讨
  5. 登录mysql一闪而过_解决MySQL 一闪而过的情况
  6. python 调用gpu算力_教你免费使用百度云GPU算力提交深度学习任务
  7. Linux系统Bash(Shell)基础知识(4)
  8. bom头mysql_BOM信息头详解
  9. 国密Fabric-ca集群负载均衡
  10. 那些曾让我一脸懵逼的python代码
  11. 面具root后如何解决SafetyNet不通过-SafetyNet API错误解决办法
  12. (轉貼) LCD入門常識
  13. 中国互联网的巨头们,为何敢“大数据杀熟”?
  14. AD各种布线方法总结
  15. 制作linux包 u盘安装
  16. 轻松在Google Chrome浏览器中管理您的电子邮件
  17. 1688搜索新品API接口-(按关键字搜索新品数据API接口)
  18. c#filestream与streamwriter用法
  19. 1165 杨辉三角形
  20. 新浪一位程序员因加班错失年会77万特等奖,该不该给他补上?

热门文章

  1. 【Grades Crawler】利用python编写爬虫 爬取西电教务处成绩并本地保存
  2. 图图图!在JMP中让你的数据动起来
  3. javascript正则表达式-姜威-专题视频课程
  4. 综合案例 -- 北京租房数据统计分析
  5. 手机可以python编程吗_可以使用手机编程实现python吗
  6. 跨考计算机复试自我介绍,跨考生复试自我介绍
  7. win10 无法打开wlan 解决方案
  8. 误删系统rpc服务器不可用,rpc服务器不可用,小编教你rpc服务器不可用怎么办
  9. 常用集成电路功能简介 AD
  10. 《杀出个黎明》(From Dusk Till Dawn)--This is the fucking movie