基于kaldi的iOS实时语音识别(本地)+02+集成kaldi
2019-01-24 本文已影响0人
长风浮云
iOS在线识别:https://www.jianshu.com/u/3c2a0bd52ebc
集成kaldi是这里最关键的一步,这一步没成功,也就没有后续了。
编译
由于编译的方式有很多种,但是我们是用于iOS应用的,所以只能在iOS环境下进行编译。
1. 相关的环境变量
CPPFLAGS
CFLAGS
CXXFLAGS
这里根据自己的环境设置,由于对脚本编译也不是特别熟悉,所以也不敢多说.
2.遇到的问题
a)开始几次编译出来的静态库都不能在真机上运行,因为不支持arm64,都是x86_的,改了几次才成功,所以编译的时候要设置好支持的架构。
b)添加依赖库,添加libc++
就可以了。
3.注意
可以将kaldi分步编译成.a再通过下面的命令合成一个.a库
libtool -static -o $libname $lib_module
当然在编译的时候可能会遇到libtool找不到,在mac上找到正确的libtool路径就可以了,没遇到更好。
4.编译openfst
由于kaldi里面还会用到openfst,所以openfst也要编译,编译openfst方式跟kaldi一样,这里不重述了。
集成
- 将头文件和.a文件直接拖入工程中
- 添加依赖库
libiconv.2.tbd
,libresolv.9.tbd
,libc++.1.tbd
- 在项目"Header Search Paths"设置好头文件路径,因为kaldi都是c++文件,引入的头文件都是带路径,所以这里要设置好。