嵌入式 TTS 语音引擎 ---- ekho嵌入式Linux编译全过程
-
第一部分:
背景说明:Ekho(余音)是一个把文字转换成声音的软件。它目前支持粤语、普通话(国语)、
诏安客语、藏语、雅言(中国古代通用语)和韩语(试验中),英文则通过Festival间接实现。
ekho的大致框架流程是
1:读取文本字符
2: 查字典匹配对应的音频信号数据
3:将音频信号通过pulseaudio送入声卡发声。第二部分,配置,交叉编译
相关依赖的关系
ekho ---->libsndfile---->libespeak -->libportaudio ---->pulseaudio 不编译该库的话,可以使用--without-pulseaudio禁用
下载源码相关的源码
portaudio_v18_1.zip,espeak-1.48.04-source.zip,libsndfile-master.zip,ekho-7.7.1.tar.xz
交叉工具链相关CC=aarch64-xx-gcc CXX=aarch64-xx-g++ AR=aarch64-xx-ar STRIP=aarch64-xx-strip
1)编译portaudio_v18_1.zip
unzip portaudio_v18_1.zip
cd portaudio_v18_1
修改文件格式转换:configure、config.sub、config.guess、Makefile(后面./configure生成),以configure为例,
在linux下移植修改方式如下:vi configure :set ff = unix :wq
./configure --prefix=/a64/core/software/tts/dinstall --host=aarch64-linux CC=aarch64-linux-gcc CXX=aarch64-linux-g++ AR=aarch64-linux-ar STRIP=aarch64-linux-strip
修改Makefile
1.1 在CFLAGS加上-fPIC解决动态库重定向的问题,具体为:CFLAGS = -g -O2 -Ipa_common -fPIC
1.2 解决libportaudio.so.0.0.18目标找不到, 具体操作:将bin:mkdir bin 和 lib:mkdir lib修改为bin/: mkdir bin lib/: mkdir lib
make all
make install或者手动拷贝下库和资源文件2)编译espeak-1.48.04-source.zip
unzip espeak-1.48.04-source.zip cd espeak-1.48.04-source/src make CC=aarch64-linux-gcc LDFLAGS=-L/a64/core/software/tts/dinstal/lib CPPFLAGS=-I/a64/core/software/tts/dinstal/include CXX=aarch64-linux-g++ AR=aarch64-linux-ar STRIP=aarch64-linux-strip
make install或者手动拷贝下库和资源文件
3)编译libsndfile-master.zip
unzip libsndfile-master.zip cd libsndfile-master.zip ./configure --prefix=/a64/core/software/tts/dinstal/ --host=aarch64-linux-gcc CXX=aarch64-linux-g++ AR=aarch64-linux-ar STRIP=aarch64-linux-strip make make install
4)编译ekho-7.7.1.tar.xz
tar xvJf ekho-7.7.1.tar.xz cd ekho-7.7.1 ./configure --prefix=/a64/core/software/ekho/ --host=aarch64-linux CC=aarch64-linux-gcc CXX=aarch64-linux-g++ --enable-festival --enable-speechd --enable-shared LDFLAGS=-L/a64/buildroot-2019.02.4/output/staging/usr/lib CPPFLAGS=-I/a64/buildroot-2019.02.4/output/staging/usr/include CFLAGS=-I/a64/buildroot-2019.02.4/output/staging/usr/include
先修改下Makefie编译libmusicxml
修改libmusicxml/samples下的Makefile中的gcc修改为交叉编译工具链cd libmusicxml/linux make clean make CC=aarch64-linux-gcc CXX=aarch64-linux-g++ cd ekho-7.7.1
注释掉config.h文件中define malloc rpl_malloc的宏定义
make clean make CFLAGS="$CFLAGS -g -O0 -rpath"
注:
在Linux下ekho需要pulseaudio的支持,没有pulseaudio的话ekho即使编译过了也是不能发声的。我这里目前使用了buildroot2019直接在make menuconfig的时候选中pulseaudio就行,另外建议这些依赖的源码包的安装目录最好放在buildroot的sysroot目录下,编译ekho直接链接到buildroot的sysroot目录编译就行。另外上面有些源码包也是可以在buildroot里面直接选中的,可以多找找,能够通过buildroot编译的就不要自己手动移植,都9012年还一个个源码包手动移植就太落后了哈哈哈哈哈。也可能还漏了一两个buildroot里没有源码包的手动移植。
第三部分 测试命令:
ekho -v English -a -70 -s -40 -f filename
详细命令信息请ekho -h
目前这个文档是我很久以前弄的不完善的一个,完善的那个貌似被自己随手删了T-T。很心痛,也把不完善的放在博客里备份一下吧,反正是没心思再重新移植一遍了,有问题欢迎讨论。
原文链接:https://blog.csdn.net/qq_23235811/article/details/103275193
-
-
linux——ekho7.7.1(最新版)语音合成库的安装与编译
前言TTS技术,TTS是Text To Speech的缩写,即“从文本到语音”。它将计算机自己产生的、或外部输入的文字信息转变为可以听得懂的、流利的汉语口语(或者其他语言语音)输出的技术,隶属于语音合成(SpeechSynthesis)。
Ekho(余音)是一个免费、开源的中文语音合成(TTS)软件。它目前支持粤语、普通话(国语)、广东台山话、诏安客语、藏语、雅言(中国古代通用语)和韩语(试验中),英语则通过eSpeak或Festival间接实现。Ekho支持Linux、Windows和Android平台。
下载源码包
下载地址:http://www.eguidedog.net/ekho.phpEkho支持Linux和Windows平台,使用时需要同时下载源文件和声音数据,解压到"jyutping"或"pinyin"。(以jyutping开头的声音数据是粤语,而以pinyin开头的声音数据是国语。文件名中的44100和16000表示的是采样率。采样率高意味着声音质量高。)
支持库的安装
sudo apt-get install libespeak-dev libsndfile1-dev libpulse-dev \ libncurses5-dev libestools-dev festival-dev libvorbis-dev \ libmp3lame-dev libdotconf-dev texinfo
配置、编译及安装:
如果需要阅读英语,则需要配置编译Festival,在configure选项中加上–enable-festival,如果需要编译speech-dispatcher API和支持屏幕阅读的话,就加上–enable-speechd。(speech-dispatcher是一个平台独立的语音合成API,其框架是基于client/server模型的,两者通信是通过TCP连接使用Speech Synthesis Independent Protocol (SSIP)协议通信或者接口库通信的。)
解压源码包:
$ tar xvf ekho-7.7.1.tar.xz源码包里的主要文件如下;
speechd-api:speech-dispatcher API(平台独立的语音合成API);
sonic:一个语音变速的算法实现;
ekho-data:ekho的字典文件和声音数据,TTS是通过文本分析,再查找字典,找到对应的声音数据,然后通过语音合成出来的;
Utfcpp:处理Unicode编码字符串的库。
src:(ekho的主要实现)和lib(上面说的这几部分的静态链接库*.a)了,就没什么特别的了。编译安装:
$ ./configure $ make $ sudo make install
安装后,ekho这个可执行文件和声音数据ekho-data都会复制到系统目录下。但是好像头文件(除ekho.h外)和库等就没有复制进去,所以编程链接时需要注意指定位置。
指令使用及测试
ekho指令的使用方法如下:Ekho text-to-speech engine. Version: 7.7.1 Syntax: ekho [option] [text] -v, --voice=VOICE Specified language or voice. ('Cantonese', 'Mandarin', 'Toisanese', 'Hakka', 'Tibetan', 'Ngangien' and 'Hangul' are available now. Mandarin is the default language.) -l, --symbol List phonetic symbol of text. Characters' symbols are splited by space. -f, --file=FILE Speak text file. ('-' for stdin) -o, --output=FILE Output to file. -t, --type=OUTPUT_TYPE Output type: wav(default), ogg or mp3 -p, --pitch=PITCH_DELTA Set delta pitch. Value range from -100 to 100 (percent) -a, --volume=VOLUME_DELTA Set delta volume. Value range from -100 to 100 (percent) -s, --speed=SPEED Set delta speed. Value range from -50 to 300 (percent) --english-speed=SPEED Set English delta speed. Value range from -50 to 150 (percent) --server Start Ekho TTS server. --request=TEXT Send request to Ekho TTS server. --port Set server port. Default is 2046. --version Show version number. -h, --help Display this help message. Please report bugs to Cameron Wong (hgneng at gmail.com)
如上,-v是选择语种,-p是设置音高(与声音的频率相关),-a是设置音量,-s是设置语速。
下面来测试一个很魔性的声音,当时测试乐了半天,O(∩_∩)O哈哈~ekho -p 200 "改革春风吹满地 中国人民真争气"
1
编程举例,依据网站(http://www.eguidedog.net/doc/doc_programme_with_ekho.php) 的指导一个测试例子try.cpp。try.cpp文件:
#include "config.h" #include "ekho.h" using namespace ekho; int main ( int argc , char **argv) { Ekho wong("Cantonese"); wong.blockSpeak("改革春风吹满地 中国人民真争气"); return 0; }
编译的话,因为依赖的库比较多,所以最好在该目录下写个sheel脚本build.sh,如下:
g++ try.cpp libekho.a -pthread \ -I. -Iutfcpp/source -Isonic -lsndfile \ `pkg-config --libs libpulse-simple` `pkg-config --cflags libpulse-simple`
运行./build.sh后报错了:
从上面的错误提示可知,缺少espeak库和musicxml库,添加-lespeak和./libmusicxml/libmusicxml2.a即可。
g++ try.cpp libekho.a ./libmusicxml/libmusicxml2.a -pthread \ -I. -Iutfcpp/source -Isonic -lsndfile -lespeak\ `pkg-config --libs libpulse-simple` `pkg-config --cflags libpulse-simple`
运行a.out,播放了测试程序中文本对应的语音。
————————————————
原文: https://blog.csdn.net/u014470361/article/details/84771720
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号