# 前言
之前的文章绍一个准确率非常高的语音识别框架,但那个只能识别实时的短音频,如果想要识别一个非常长的音频,几十分钟,甚至几个小时,那之前的那个是做不到的所以就有了本文。本文介绍搭建一个长语音识别服务,可以把任意长度的音视频到识别结果。而且识别结果中,可以包含每句话的开始时间和结束时间,可以用来做字幕等等。
视频教程: 三行命令搭建语音识别服务,竟如此轻松识别几个小时的音视频!
启动Docker服务
需要把整个文件夹上传到服务器上,并在该目录执行以下命令:
编译Docker容器:
sudo docker build -t offline_asr .
修改权限:
sudo chmod +x run_server.sh
在项目根目录执行启动命令:
sudo docker run -p 10095:10095 -itd --privileged=true --name offline_asr -v $PWD/:/workspace/websocket offline_asr
重新启动服务,如果之前因为一些原因关闭了docker服务,可以执行下面命令重新启动,需要开机自启动的,把下面命令复制到开机自启动脚本中/etc/rc.local
:
sudo docker start offline_asr
测试服务
使用上面服务之后,可以执行下面命令测试一下服务是否正常启动可用。
python client.py --wav_path=test.wav
输出结果如下,可以看到输出的结果中,每句话都带有开始和结束的时间戳,单位毫秒:
【../data/test.wav】结果: [{'text': '近几年,', 'start': '710', 'end': '1569'}, {'text': '不但我用书给女儿压岁,', 'start': '1569', 'end': '3550'}, {'text': '也劝说亲朋不要给女儿压岁钱而改送压岁书。', 'start': '3550', 'end': '7935'}]
搭建HTTP服务
上面搭建的是websocket的服务,使用起来非常不方便,所以下面提供了一个Websockt转http服务的程序,并且提供了网页可以上传音视频获取识别结果,启动HTTP服务命令如下。
python server.py
访问http://192.168.0.100:6060
打开页面,可以上传WAV、MP3、MP4等多种格式,同时也支持录制识别,返回的同样是每句话都有时间戳。
{
"result": {
"text": "近几年,不但我用书给女儿压岁,也劝说亲朋不要给女儿压岁钱而改送压岁书。",
"sentences": [
{
"text": "近几年,",
"start": "710",
"end": "1569"
},
{
"text": "不但我用书给女儿压岁,",
"start": "1569",
"end": "3550"
},
{
"text": "也劝说亲朋不要给女儿压岁钱而改送压岁书。",
"start": "3550",
"end": "7935"
}
]
},
"code": 0
}
页面截图:
扫码入知识星球,搜索【FunASR语音识别长音频视频服务】获取源码
