当前位置: 首页 > 工具软件 > Flite > 使用案例 >

移植开源TTS flite到ARM Linux并使用编译的静态库

颜功
2023-12-01

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。

 类似资料: