1. 下载docker离线安装包
启动docker
sudo dockerd &
2. 在有网的电脑上拉取funasr的docker镜像
目前只支持非流式语音识别
sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.2.1
下面的镜像是支持流式语音识别
sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.1
3. 打包有网电脑上的funasr镜像
docker save -o funasr.tar <IMAGE ID>
4. 载入funasr镜像
docker load < funasr.tar
# 或者
docker load -i funasr.tar
给载入的 funasr 镜像命名
sudo docker tag <镜像ID> <新的名称>:<新的标签>
5. 启动docker中的funasr镜像
后台启动
sudo docker run -p 10095:10095 -itd --privileged=true -v /home/lukeewin/funasr/model:/workspace/models funasr:cpu-0.2.1
非后台启动
sudo docker run -p 10095:10095 -it --privileged=true -v /home/lukeewin/funasr/model:/workspace/models funasr:cpu-0.2.1
把本地的/home/lukeewin/funasr/model
挂载到镜像中的/workspace/models
。
funasr:cpu-0.2.1
填写你自己的REPOSITORY:TAG
。
查看镜像的详细信息。
sudo docker inspect CONTAINER_ID_OR_NAME
6. 服务端启动
进入容器内
docker attach 容器id
启动服务端
注意不要用run_server.sh
方式启动,因为该脚本中加了下载的参数,会自动联网下载,如果是内网环境下是不能启动的,所以需要到/workspace/FunASR/funasr/runtime/websocket/build/bin
下面的funasr-wss-server
和funasr-wss-server-2pass
。
非实时语音识别
直接从sh
脚本中启动
cd FunASR/funasr/runtime
nohup bash run_server.sh \
--vad-dir /workspace/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx \
--model-dir /workspace/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx \
--punc-dir /workspace/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-onnx \
--certfile 0 > offline-funasr.log 2>&1 &
# 如果您想关闭ssl,增加参数:--certfile 0
从编译好的二进制文件中启动
cd FunASR/funasr/runtime/websocket/build/bin
nohup ./funasr-wss-server \
--vad-dir /workspace/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx \
--model-dir /workspace/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx \
--punc-dir /workspace/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-onnx > funasr.log 2>&1 &
# 如果您想关闭ssl,增加参数:--certfile "" --keyfile ""
# 如果您想使用时间戳或者热词模型进行部署,请设置--model-dir为对应模型:
# damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx(时间戳)
# 或者 damo/speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404-onnx(热词)
实时语音识别
cd FunASR/funasr/runtime/websocket/build/bin
nohup ./funasr-wss-server-2pass \
--vad-dir /workspace/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx \
--model-dir /workspace/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx \
--online-model-dir /workspace/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx \
--punc-dir /workspace/models/damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx > online_funasr.log 2>&1 &
注意:
-
无网环境中一定要把
--download-model-dir
参数去掉,否则会联网下载模型。 -
同时需要修改模型配置文件
configuration,json
把,模型的路径写成绝对路径。 -
上面我的挂载路径是把
/home/DEV_admin/realTime_funasr/modelscope
挂载到镜像里的/workspace/models
,并且在modelscope
下面有damo
目录,damo
下面存放各个模型。 -
在使用热词模型时,需要注意不要使用量化后的热词模型,否则启动会报下面的错误。添加参数
--quantize False
启动非量化的热词模型。(这里我下载的是官方导出的onnx,可能量化后的有问题。)Error when load am onnx model: Load model from /workspace/models/damo/speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404-onnx/model_quant.onnx failed:Protobuf parsing failed
启动完成后可以通过ctrl+p
,然后ctrl+q
来保持运行并退出容器,注意不能直接使用exit
命令退出。
7. 模型下载
from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('damo/speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404-onnx', cache_dir='path/to/local/dir')
如果不指定保存目录,那么默认保存到~/.cache/modelscope/hub
目录。
注意:一定要保持最新版本的modelscope
,如果不是最新版本,那么下载的时候会报错。
pip install modelscope --upgrade
Q.E.D.