版本:espeak-1.48.13 portaudio_v18_1
平台:ubuntu14.04 X64
依赖:espeak运行需要用到poartaudio的语音引擎的支持
espeak简介:
-
可识别多语言的朗读软件
-
能读中文:相对英文,更适合朗读中文
-
可以在程序中被调用——提供c++接口及库
-
支持词的识别和
-
安装简单,安装文件少,依赖库少,移植方便
-
源码32981行/相对比较平滑/能处理多音字
1. 获取源码
1. espeak:
http://espeak.sourceforge.net/
2. portaudio:
http://www.portaudio.com/faq.html
2. 编译portaudio主要参考http://portaudio.com/docs/v19-doxydocs/compile_linux.html
1. 遇到问题
1. /usr/bin/ld: /usr/local/lib/mysql/libz.a(compress.o): relocation R_X86_64_32 against `.rodata.str1.1′ can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/mysql/libz.a: could not read symbols: Bad value
2. 解决办法:编辑MakeFile文件
在CFLAGS=... 一行最后增加
-fPIC
3. 然后重新make
2. 编译完成后需要把生成/opt/portaudio_v18_1/lib /文件夹下的
libportaudio.so.0.0.18文件 拷贝到/usr/lib或者/usr/local/lib文件夹下,并且在/usr/lib文件夹下生成动态连接命令是: cd /usr/lib
ln -sv libportaudio.0.0.18 libportaudio.so
否则在编译espeak的时候就会报错
/usr/bin/ld: cannot find -lxxx
3. 编译espeak
1. 如果poartaudio没有出问题的话只要按照下面步骤执行就可以完成便已过程
2. $ tar xvzf espeak-1.48.13.tar.gz
$ cd espeak-1.48.13
$ cd src
$ make
$ make install
3. 变已完成滞后和portaudio一样记得把库文件拷贝到/usr/lib或者/usr/local/lib文件夹下, 并且在/usr/lib文件夹下生成动态连接命令是:cd /usr/lib
ln -s llibespeak.so.1.1.48 libespeak.so
4. 测试例程
1. 进入到编译所在目录在终端也可测试:
1. $ ./espeak -vzh “hello world”
$ ./espeak -vzh “你好”
2.#include <espeak/speak_lib.h>//包括espeak的头文件
#include <string.h>
#include <unistd.h>
int main(int argc, char **argv)
{
char word[] = "吃葡萄不吐葡萄皮";
espeak_Initialize(AUDIO_OUTPUT_PLAYBACK, 0, NULL, 0); // 初始化
espeak_SetVoiceByName("zh+f2"); // 设置音源为中文女声
espeak_Synth(word, strlen(word) + 1, 0, POS_CHARACTER, 0,
espeakCHARS_UTF8, NULL, NULL); // 发音
sleep(3); // 等一段时间,否则程序会立即退出,听不到发音
espeak_Terminate(); // 回收资源
}