基于Kaldi+GStreamer搭建线上的实时语音识别器

Yonina ·
更新时间:2024-09-21
· 716 次阅读

一、安装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 gst­kaldi­nnet2­online 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


作者:纸上得来终觉浅~



kaldi gstreamer 语音识别

需要 登录 后方可回复, 如果你还没有账号请 注册新账号