轻松识别几个小时的长音视频文件

# 前言

之前的文章绍一个准确率非常高的语音识别框架,但那个只能识别实时的短音频,如果想要识别一个非常长的音频,几十分钟,甚至几个小时,那之前的那个是做不到的所以就有了本文。本文介绍搭建一个长语音识别服务,可以把任意长度的音视频到识别结果。而且识别结果中,可以包含每句话的开始时间和结束时间,可以用来做字幕等等。

视频教程: 三行命令搭建语音识别服务,竟如此轻松识别几个小时的音视频!

启动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语音识别长音频视频服务】获取源码

![](/static/files/2024-01-07/308ae60d67a44afcb3bd15e0886f5e04.png)
小夜