1. 下载压缩源码包flite-1.4-release.tar.bz2到linux开发主机。
2. 新建一个文件夹flite,将源码压缩包flite-1.4-release.tar.bz2拷贝到该目录。
3. 在flite目录中新建一个目录install,后续make install会自动将生成的库和头文件等需要部署的内容拷贝到该目录,方便部署到板端。
4. 解压源码压缩包flite-1.4-release.tar.bz2,tar flite-1.4-release.tar.bz2
5. 进入解压后的文件夹flite-1.4-release cd flite-1.4-release
6. 执行./configure -prefix=/home/share/tts_porting/flite/install --build=arm --host=arm-linux --target=arm CC=/opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc AR=/opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar RANLIB=/opt/nextvpu/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ranlib LD=/opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ld
7. 执行make命令
7.1 在我的linux主机上的交叉编译环境下,直接make只能生成相应的动态库,不会生成可执行文件,具体原因没找到,解决办法是
7.2 手动编译makefile文件。在BUILD_DIRS = include src lang doc这一行后面添加main,变成BUILD_DIRS = include src lang doc main
7.3 这样执行make命令时会生成可执行文件
8. 执行make install.生成的bin文件,头文件和静态库文件都会放在install目录中
9. 将可执行文件flite拷贝到板端,执行./flite -t "hello world" -o test.wav。会生成音频文件test.wav。
10. 自己编写程序调用静态库函数实现生成音频文件
10.1 准备好需要使用的语音库,头文件,为了减小可执行程序的大小,我这里只使用一个语音库,链接程序的时候需要链接这些库(libflite_cmu_us_slt.a libflite_usenglish.a libflite_cmulex.a libflite.a libm.a)
10.2 编写主程序
#include <stdio.h>
#include <string.h>
#include "flite.h"
#include "flite_version.h"
cst_voice *register_cmu_us_slt(const char *voxdir);
static void flite_version()
{
printf(" Carnegie Mellon University, Copyright (c) 1999-2009, all rights reserved\n");
printf(" version: %s-%s-%s %s (http://cmuflite.org)\n",
FLITE_PROJECT_PREFIX,
FLITE_PROJECT_VERSION,
FLITE_PROJECT_STATE,
FLITE_PROJECT_DATE);
}
int main(int argc, char **argv)
{
cst_voice *desired_voice = 0;
flite_init();
flite_version();
desired_voice = register_cmu_us_slt(NULL);
printf("start tts\r\n");
flite_text_to_speech("hello world",desired_voice,"test.wav");
return 0;
}
10.3 使用交叉编译工具链编译该程序,生成可执行文件flite_demo。
10.4 将flite_demo拷贝到板端,执行./flite_demo,可生成音频文件test.wav。