参考https://blog.csdn.net/u011280621/article/details/68947604
kaldi编译online识别工具的步骤:
1、Installing ALSA Development Kit
sudo apt-get install libasound-dev
2、安装portaudio
cd kaldi/tools
./install_portaudio.sh
根据输出设置LIB等参数(LD_LIBRARY_PATH等)
如果设置正确,发命令sudo ldconfig -v,可以找到libportaudio.so
/home/boystray/kaldi/tools/extras/portaudio/install/lib:
libportaudio.so.2 -> libportaudio.so.2.0.0
3、# 编译在线识别工具
cd src/
make ext
4、报错
make[1]: 进入目录“/home/boystray/kaldi/src/onlinebin”
g++ -std=c++11 -I.. -isystem /home/boystray/kaldi/tools/openfst/include -O1 -Wno-sign-compare -I../../tools/portaudio/install/include -Wall -Wno-sign-compare -Wno-unused-local-typedefs -Wno-deprecated-declarations -Winit-self -DKALDI_DOUBLEPRECISION=0 -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_ATLAS -I/home/boystray/kaldi/tools/ATLAS_headers/include -msse -msse2 -pthread -g -DHAVE_CUDA -I/usr/local/cuda/include -fPIC -pthread -isystem /home/boystray/kaldi/tools/openfst/include -c -o online-net-client.o online-net-client.cc
g++ -Wl,-rpath=/home/boystray/kaldi/tools/openfst/lib -rdynamic online-net-client.o ../online/kaldi-online.a ../decoder/kaldi-decoder.a ../lat/kaldi-lat.a ../hmm/kaldi-hmm.a ../feat/kaldi-feat.a ../transform/kaldi-transform.a ../gmm/kaldi-gmm.a ../tree/kaldi-tree.a ../util/kaldi-util.a ../matrix/kaldi-matrix.a ../base/kaldi-base.a ../../tools/portaudio/install/lib/libportaudio.a -lrt /home/boystray/kaldi/tools/openfst/lib/libfst.so /usr/lib/x86_64-linux-gnu//libatlas.so.3 /usr/lib/x86_64-linux-gnu//libf77blas.so.3 /usr/lib/x86_64-linux-gnu//libcblas.so.3 /usr/lib/x86_64-linux-gnu//liblapack_atlas.so.3 -Wl,-rpath=/usr/lib/x86_64-linux-gnu -lm -lpthread -ldl -o online-net-client
/usr/bin/ld: ../online/kaldi-online.a(online-audio-source.o): in function `kaldi::OnlinePaSource::Read(kaldi::Vector<float>*)':
/home/boystray/kaldi/src/online/online-audio-source.cc:122: undefined reference to `PaUtil_GetRingBufferReadAvailable'
/usr/bin/ld: /home/boystray/kaldi/src/online/online-audio-source.cc:138: undefined reference to `PaUtil_ReadRingBuffer'
/usr/bin/ld: ../online/kaldi-online.a(online-audio-source.o): in function `kaldi::OnlinePaSource::OnlinePaSource(unsigned int, unsigned int, unsigned int, unsigned int)':
/home/boystray/kaldi/src/online/online-audio-source.cc:71: undefined reference to `PaUtil_InitializeRingBuffer'
/usr/bin/ld: ../online/kaldi-online.a(online-audio-source.o): in function `kaldi::OnlinePaSource::Callback(void const*, void*, long, PaStreamCallbackTimeInfo const*, unsigned long)':
/home/boystray/kaldi/src/online/online-audio-source.cc:164: undefined reference to `PaUtil_WriteRingBuffer'
/usr/bin/ld: /home/boystray/kaldi/src/online/online-audio-source.cc:161: undefined reference to `PaUtil_GetRingBufferWriteAvailable'
collect2: error: ld returned 1 exit status
make[1]: *** [<内置>:online-net-client] 错误 1
5、解决方法。修改kaldi/src/online目录下的Makfile,OBJFILES这个变量后面添加pa_ringbuffer.o
OBJFILES = pa_ringbuffer.o online-audio-source.o online-feat-input.o online-decodable.o online-faster-decoder.o onlinebin-util.o online-tcp-source.o
6、cd /src
make ext