【语音识别】在Win11使用Docker部署FunASR服务器

文章目录

在 Win11 使用 Docker 部署 FunASR 服务器

该文章因官网文档不详细故写的经验论

官网文章:https://github.com/alibaba-damo-academy/FunASR/blob/main/runtime/docs/SDK_advanced_guide_online_zh.md

且官网只针对 Linux/Max 系统出的教程,故利用Win11记录

镜像启动

shell 复制代码
docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.9
mkdir D://FunASR//model
docker run -p 10095:10095 -it --privileged=true -v D:/FunASR/model:/workspace/models registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.9

docker pull 拉取镜像
docker run 启动镜像
-p 10095:10095 将容器内部的端口 10095 映射到宿主机的端口 10095
-it 分配一个伪终端并保持标准输入打开
--privileged=true 赋予容器特权,允许它执行特权操作,如访问宿主机的硬件设备等
-v D:/FunASR/model:/workspace/models 将本地文件系统中的 D:/FunASR/model 目录挂载到容器内的 /workspace/models 目录,实现本地文件与容器内部的文件共享
registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.9 拉取下来的镜像

服务端启动

docker启动之后,启动 funasr-wss-server-2pass服务程序:

shell 复制代码
cd FunASR/runtime
nohup bash run_server_2pass.sh \
  --certfile 0  \
  --download-model-dir /workspace/models \
  --vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx \
  --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  \
  --punc-dir damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx \
  --itn-dir thuduj12/fst_itn_zh > log.txt 2>&1 &
# 如果您想关闭ssl,增加参数:--certfile 0
# 如果您想使用时间戳或者nn热词模型进行部署,请设置--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(nn热词)
# 如果您想在服务端加载热词,请在宿主机文件./funasr-runtime-resources/models/hotwords.txt配置热词(docker映射地址为/workspace/models/hotwords.txt):
#   每行一个热词,格式(热词 权重):阿里巴巴 20(注:热词理论上无限制,但为了兼顾性能和效果,建议热词长度不超过10,个数不超过1k,权重1~100)

run_server_2pass.sh命令参数介绍

txt 复制代码
--download-model-dir 模型下载地址,通过设置model ID从Modelscope下载模型
--model-dir  modelscope model ID 或者 本地模型路径
--online-model-dir  modelscope model ID 或者 本地模型路径
--vad-dir  modelscope model ID 或者 本地模型路径
--punc-dir  modelscope model ID 或者 本地模型路径
--lm-dir modelscope model ID 或者 本地模型路径
--itn-dir modelscope model ID 或者 本地模型路径
--port  服务端监听的端口号,默认为 10095
--decoder-thread-num  服务端线程池个数(支持的最大并发路数),
                      脚本会根据服务器线程数自动配置decoder-thread-num、io-thread-num
--io-thread-num  服务端启动的IO线程数
--model-thread-num  每路识别的内部线程数(控制ONNX模型的并行),默认为 1,
                    其中建议 decoder-thread-num*model-thread-num 等于总线程数
--certfile  ssl的证书文件,默认为:../../../ssl_key/server.crt,如果需要关闭ssl,参数设置为0
--keyfile   ssl的密钥文件,默认为:../../../ssl_key/server.key
--hotword   热词文件路径,每行一个热词,格式:热词 权重(例如:阿里巴巴 20),
            如果客户端提供热词,则与客户端提供的热词合并一起使用,服务端热词全局生效,客户端热词只针对对应客户端生效。

监控服务端日志

shell 复制代码
tail -f /workspace/FunASR/runtime/log.txt

下载测试案例

开启服务的终端不关闭,另开一个终端用于下载示例

shell 复制代码
# 查看运行的容器
docker ps 
CONTAINER ID   IMAGE                                                                                      COMMAND       CREATED          STATUS          PORTS                      NAMES
0c81b11d2791   registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.9   "/bin/bash"   19 minutes ago   Up 19 minutes   0.0.0.0:10095->10095/tcp   inspiring_banzai
# 另开终端
docker exec -it 0c81b11d2791 /bin/bash
# 下载示例
 wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/sample/funasr_samples.tar.gz

使用测试案例

打开基于 HTML 的案例

shell 复制代码
# 在 /workspace/models 目录下创建一个目录 funasr_samples
mkdir /workspace/models/funasr_samples
# 解压文件到 /workspace/models/funasr_samples 目录下
tar -xzf funasr_samples.tar.gz -C /workspace/models/funasr_samples

前面镜像启动时,我们将容器的目录 /workspace/models 挂载到了宿主机的 D:/FunASR/model 下面,因此下载到 /workspace/models/funasr_samples 目录里面的内容,可以在 D:/FunASR/model 上面看到

连接ASR服务端

修改asr服务器地址为 ws://127.0.0.1:10095/,因为没有开启 SSL,所以不是 wss 而是 ws,使用本地地址 127.0.0.1,端口号为镜像启动时配置的,与宿主机映射的端口号对应

关闭FunASR服务

shell 复制代码
# 查看 funasr-wss-server-2pass 对应的PID
ps -x | grep funasr-wss-server-2pass
 133 pts/0    Sl     0:18 /workspace/FunASR/runtime/websocket/build/bin/funasr-wss-server-2pass --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 --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 --decoder-thread-num 8 --model-thread-num 1 --io-thread-num 1 --port 10095 --certfile  --keyfile  --hotword /workspace/FunASR/runtime/websocket/hotwords.txt
 2106 pts/1    S+     0:00 grep --color=auto funasr-wss-server-2pass
# 关闭进程
kill -9 133
相关推荐
茉莉玫瑰花茶1 小时前
ProtoBuf - 3
服务器·c++·protobuf
KingRumn1 小时前
Linux进程间通信之消息队列(POSIX)
linux·服务器
laoliu19961 小时前
Odoo 18企业版源码 包含 部署教程
运维·服务器
程序员老赵2 小时前
Supabase Postgres Docker 容器化部署指南
docker·postgresql
开开心心就好2 小时前
免费卸载工具,可清理残留批量管理启动项
linux·运维·服务器·windows·随机森林·pdf·1024程序员节
Lbwnb丶2 小时前
检测服务器是否是虚拟化,如KVM,VM等
linux·运维·服务器
老猿讲编程2 小时前
【车载信息安全系列4】基于Linux中UIO的HSE应用实现
linux·运维·服务器
鸡吃丸子3 小时前
初识Docker
运维·前端·docker·容器
wanhengidc3 小时前
巨椰 云手机 云游戏稳定运行
运维·服务器·arm开发·游戏·云计算
qq_455760854 小时前
docker run
运维·docker·容器