部署docker版本的FunASR_funasr docker
0. 研究背景
在一些对数据安全要求较高的场景中,通常是在内网中部署一套ASR系统,但是购买大厂的ASR系统价格十分昂贵,因此需要在自己公司内部机房中搭建一套ASR系统,不但可以减少数据泄露风险,同时还能减少成本。
1. 部署过程
拉取最新的funasr
镜像,可以访问这里。
1.1 模型下载
首先我们需要从 modelscope 网站中下载需要的模型。
damo/speech_fsmn_vad_zh-cn-16k-common-onnx # 音频活动性检测模型damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx # 非实时语音识别模型damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx # 实时语音识别模型damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx # 实时预测标点符号模型damo/speech_ngram_lm_zh-cn-ai-wesp-fst # 语言理解模型thuduj12/fst_itn_zh # 逆文本化模型,用于把中文的数字转为阿拉伯数字iic/SenseVoiceSmall-onnx # 支持识别事件,语种,情感模型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 # 热词模型
1.2 导入docker镜像
通过下面命令导入镜像到服务器中。
docker load -i funasr.tar
2. 运行
首先启动导入的 docker 镜像,进入到容器内。
sudo docker run -p 10096:10095 -it --privileged=true \\ -v /usr/local/src/funasr/models:/workspace/models \\ asr.blog.lukeewin.top:latest
注意:
- 宿主服务器一定要开放 10096 端口。如果还有其它防火墙,也需要放行 10096 端口。
- 把模型放到宿主服务器中的
/usr/local/src/funasr/models
路径中。以 damo 开头的就创建 damo 目录,然后把以 damo开头的模型文件放进去,其它的类似。
执行上面的命令后会进入到 docker 容器内。
然后执行下面命令切换到指定路径下执行下面的命令来启动接口。
cd /workspace/FunASR/runtimebash run_server_2pass.sh
注意:如果你想要替换模型,必须添加参数,或者编辑 run_server_2pass.sh 脚本。你打开这个脚本之后,就知道如何修改了。
打开这个脚本之后,可以看到下面内容,这里解释一下下面的各个参数的意思。
download_model_dir=\"/workspace/models\" # 这是指定模型加载的路径model_dir=\"damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx\" # 这是指定非流式模型online_model_dir=\"damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx\" # 这是设置流式模型,也就是实时语音识别模型vad_dir=\"damo/speech_fsmn_vad_zh-cn-16k-common-onnx\" # 这是指定 vad 模型punc_dir=\"damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx\" # 这是指定实时标点符号预测模型itn_dir=\"thuduj12/fst_itn_zh\" # 这是逆文本化模型,也即是把中文的数字转为阿拉伯数字lm_dir=\"damo/speech_ngram_lm_zh-cn-ai-wesp-fst\" # 这是语言模型port=10095 # 端口号certfile=\"$(pwd)/ssl_key/server.crt\" # ssl 证书keyfile=\"$(pwd)/ssl_key/server.key\" # ssl 证书hotword=\"$(pwd)/websocket/hotwords.txt\" # 热词,使用热词模型才有效果# set decoder_thread_num # 服务端线程池个数(支持的最大并发路数),脚本会根据服务器线程数自动配置decoder-thread-num、io-thread-numdecoder_thread_num=$(cat /proc/cpuinfo | grep \"processor\"|wc -l) || { echo \"Get cpuinfo failed. Set decoder_thread_num = 32\"; decoder_thread_num=32; }multiple_io=16io_thread_num=$(( (decoder_thread_num + multiple_io - 1) / multiple_io )) # 服务端启动的IO线程数model_thread_num=1 # 每路识别的内部线程数(控制ONNX模型的并行),默认为 1,其中建议 decoder-thread-num*model-thread-num 等于总线程数cmd_path=/workspace/FunASR/runtime/websocket/build/bin # 执行命令的路径cmd=funasr-wss-server-2pass
详细内容可以参考官方文档。
如何访问可以参考官方文档。
2. 安装docker
#安装前先卸载操作系统默认安装的docker,sudo apt-get remove docker docker-engine docker.io containerd runc#安装必要支持sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release# 阿里源(推荐使用阿里的gpg KEY)curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg#阿里apt源echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null#更新源sudo apt updatesudo apt-get update#安装最新版本的Dockersudo apt install docker-ce docker-ce-cli containerd.io#等待安装完成#查看Docker版本sudo docker version#查看Docker运行状态sudo systemctl status docker# 设置开机自启动sudo systemctl enable dockersudo apt-get install bash-completionsudo curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker.shsource /etc/bash_completion.d/docker.sh
参考文章
有偿部署,欢迎联系我。