若该文为原创文章,转载请注明原文出处。
移植的目的是在在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并播放。
如有侵权,或需要完整代码,请及时联系博主。