一、安装python2.7和Tornado 4,ws4py, YAML,JSON等依赖包
1、sudo pip2 install tornado==4.3(4.0版本不行)
2、sudo pip2 install ws4py==0.3.2
3、sudo pip2 install pyyaml
4、sudo pip2 install https://pypi.python.org/packages/40/ad/52c1f3a562df3b210e8f165e1aa243a178c454ead65476a39fa3ce1847b6/simplejson-3.10.0.tar.gz#md5=426a9631d22851a7a970b1a677368b15
(其中:安装pip2:apt-get install python-pip python-dev build-essential、sudo pip install --upgrade pip)
二、下载编译kaldi,下载kaldi streamer 插件
1、安装编译kaldi
在kaldi tools目录下,运行 make -j 4 编译
在kaldi src目录下,运行
./configure --shared
make depend
make -j 4
2、安装gstreamer:
sudo apt-get install gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-pulseaudio gstreamer1.0-plugins-ugly gstreamer1.0-tools libgstreamer1.0-dev
3、安装libjansson-dev:
sudo apt-get install libjansson-dev
三、安装并编译gst-kaldi-nnet2-online解码器(安装说明在gst-kaldi-nnet2-online文件夹的readme中):
kaldi没有自带,需要网上下载:git clone https://github.com/alumae/gst-kaldi-nnet2-online.git
进入src目录:cd src
指定kaldi的根目录进行编译:
KALDI_ROOT=/path/of/kaldi-trunk make depend
KALDI_ROOT=/path/of/kaldi-trunk make
若报错:*** Kaldi must compiled with dynamic libraries support. Run configure with --shared flag. 。 停止。解决方案:进入kaldi的src目录下运行./configure --shared
生成libgstkaldionline2.so文件即可,如下:
vim ~/.bashrc中设置export GST_PLUGIN_PATH=your gstkaldinnet2online installation directory/src,如下:
输入:GST_PLUGIN_PATH=. gst-inspect-1.0 kaldinnet2onlinedecoder,看到下图即可:
编译在线扩展(make ext
)和Kaldi GStreamer插件:进入到kaldi的src目录,make ext即可。
四、安装并编译OnlineGmmDecodeFaster解码器:
kaldi中自带此编码器
cd tools
./install_portaudio.sh
vim ~/.bashrc
在最后面设置LD_LIBRARY_PATH=path/kaldi/tools/portaudio:$LD_LIBRARY_PATH
sudo ldconfig
进入kaldi的src/gst-plugin/目录:cd src/gst-plugin/
指定kaldi的根目录进行编译:
KALDI_ROOT=/path/of/kaldi-trunk make depend
KALDI_ROOT=/path/of/kaldi-trunk make
后会在src/gst-plugin中看到libgstonlinegmmdecodefaster.so,如下:
vim ~/.bashrc写入 export GST_PLUGIN_PATH=/home/jiashihui/open_source/kaldi-trunk/src/gst-plugin即可。
输入gst-inspect-1.0 onlinegmmdecodefaster,得到下图表示安装成功。
五、基于kaldinnet2onlinedecoder解码器的worker
1、下载kaldi-gstreamer-server:git clone https://github.com/alumae/kaldi-gstreamer-server
2、下载测试的模型:
cd test/models/
./download-tedlium-nnet2.sh
cd ../../
下载后的模型有以下文件:
3、开启server:python kaldigstserver/master_server.py --port=9999,出现下图即可:
4、开启worker:
python ./worker.py -u ws://192.168.1.27:9999/worker/ws/speech -c /home/jiashihui/open_source/kaldi-gstreamer-server-master/sample_english_nnet2.yaml
其中报错:No module named gi.repository,解决:sudo apt-get install python-gobject
如果找不到配置文件,可以查看路径是否正确!
出现下图即可:
2020-02-18 10:24:29 - INFO: decoder2: Setting pipeline to READY
2020-02-18 10:24:29 - INFO: decoder2: Set pipeline to READY
2020-02-18 10:24:29 - INFO: __main__: Opening websocket connection to master server
2020-02-18 10:24:29 - INFO: __main__: Opened websocket connection to server
六、开启客户端:
修改client.py中main函数第二行的主机ip地址,然后运行命令:
python ./client.py -r 8192 /home/jiashihui/open_source/kaldi-gstreamer-server-master/test/data/bill_gates-TED.mp3
如下图所示:
参考:https://github.com/alumae/kaldi-gstreamer-server、https://www.jianshu.com/p/ef7326b27786