RK3568笔记三十一:ekho 6.3 文本转语音移植

若该文为原创文章,转载请注明原文出处。

移植的目的是在在OCR识别基础上增加语音播放,把识别到的文字直接转TTS播报出来,形成类似点读机的功能。

1、下载文件

libsndfile-1.0.28.tar.gz
ekho-6.3.tar.xz

2、解压

tar zxvf libsndfile-1.0.28.tar.gz
tar xvf ekho-6.3.tar.xz

3、编译libsndfile

进入libsndfile-1.0.28,在当前目录下新创建install目录。

./configure --prefix=/home/alientek/tools/libsndfile-1.0.28/install --host=arm-linux --target=arm CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc AR=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-ar --disable-external-libs
make 
make install

编译完成后,在install目录下的lib生成了库文件

4、交叉编译ekho

ekho目录中新建一个目录install

#记得export一下交叉编译工具链
export PATH=t/atk-dlrk356x-toolchain/usr/bin:$PATH

配置文件

./configure --prefix=/home/alientek/tools/ekho-6.3/install 
--host=aarch64-linux-gnu --target=aarch64 
CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc 
CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-g++ 
CXX=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-g++ 
AR=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-ar
LDFLAGS=-L/home/alientek/tools/libsndfile-1.0.28/install/lib CFLAGS=-I/home/alientek/tools/libsndfile-1.0.28/install/include CPPFLAGS=-I/home/alientek/tools/libsndfile-1.0.28/install/include CXXFLAGS="-DNO_SSE" 
--without-pulseaudio 

注意,交叉编译工具链的设置要包括ar工具

make
make install

编译报错:./config.h:139:16: error: ‘rpl_malloc’ was not declared in this scope; did you mean ‘realloc’? 139 | #define malloc rpl_malloc

处理: 屏蔽了

报错,把libekho_a-dsp.o删除。

rm -rf /home/alientek/tools/ekho-6.3/sr-convert/libekho_a-dsp.o

编译正常,在install目录下生成可执行文件和库文件

5、测试

把编译好的文件拷贝到开发板

需要拷贝的文件有bin下的执行文件,拷贝到开发板bin下

动态库,拷贝到/usr/lib,动态文件是libsndfile.so等。

把ekho-data 文件夹下载到开发板的 /usr/share 目录

其中Cantonese(粤语)、Mandarin(普通话)、Ngangien(元朝前古汉语@_@)、Hakka(客家语)倒是能翻译普通话,Tibetan(藏语),Hangul(朝鲜语)就不行不行。默认是Mandarin,遗憾的是普通话下不能朗读字母,要Festival的支持才行。一开始用英文测试,还以为没安装成功。

红色框框的是其他语言库可以删除。

测试命令:

测试:
直接文字转语音
ekho "你好"

读取文本文字转语音
ekho -f test.txt

 文字转语音文件
ekho "测试音频" -o test.wav

文字转语音,广东话 
ekho -v Cantonese "你好"

通过参数-s,调整语速,默认为0
ekho "测试语速" -s 30

通过参数-p,调整语调,默认为0,(-100 ,100]
ekho "测试语调" -p 20

通过参数-a,调整音量,默认为0,(-100, 100]
ekho "测试音量" -a 20

更多命令使用查看: 
ekho  -h 

接下来结合OCR识别文件转成wav并播放。

如有侵权,或需要完整代码,请及时联系博主。

相关推荐

  1. RK3568笔记:Zlmedia推流测试

    2024-06-10 08:30:02       33 阅读
  2. rk3568 移植rk628

    2024-06-10 08:30:02       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 08:30:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 08:30:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 08:30:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 08:30:02       18 阅读

热门阅读

  1. 什么是幂等问题?

    2024-06-10 08:30:02       10 阅读
  2. kmp算法c++

    2024-06-10 08:30:02       8 阅读
  3. 树莓派 ubuntu linux 去除蓝牙历史配对信息

    2024-06-10 08:30:02       12 阅读
  4. 从零手写实现 nginx-13-nginx.conf 是 HOCON 的格式吗?

    2024-06-10 08:30:02       10 阅读
  5. 使用cython将现有c/c++库移植为python模块

    2024-06-10 08:30:02       13 阅读
  6. 【冲刺秋招,许愿offer】第 二 天

    2024-06-10 08:30:02       8 阅读
  7. React antd 怎么封装枚举字典组件

    2024-06-10 08:30:02       11 阅读
  8. 常用的国内外公共DNS服务

    2024-06-10 08:30:02       8 阅读