Docker 部署 funasr 语音转文字服务
共计 3275 个字符,预计需要花费 9 分钟才能阅读完成。
前言
由于家人有需要,经常需要听会议记录或者通话录音,于是想着直接将录音导出,然后进行转文字,再通过 gpt 进行总结或者其他的操作。找了很多项目,最好还是在 nodeseek 论坛的坛友建议下,找到了 funasr 这个项目。使用感受是,识别准确率确实还不错,非常满足我的需求。
FunASR 是一个基础语音识别工具包,提供多种功能,包括语音识别(ASR)、语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等。FunASR 提供了便捷的脚本和教程,支持预训练好的模型的推理与微调。
目前 FunASR 支持 docker 部署,不过只有 cpu 版本,并且支持实时转换和离线转换。
官方服务
如果仅仅是简单使用,那么其实不必要自己搭建服务,因为这个毕竟比较吃硬件。
此时可以访问官方 h5 页面:链接
/>
可以看见,页面确实比较简陋,但是该有的功能基本都有。
这里需要注意的是 asr 服务器地址:
-
wss://www.funasr.com:10096/: 这个为实时语音识别地址,支持麦克风、文件如 pcm、wav 格式,但是不支持 mp3、m4a 等格式
-
wss://www.funasr.com:10095/: 支持 mp3、m4a 等格式
效果:
/>
自建asr服务器
这里是把两个实时和离线两个服务都部署了,所以直接使用 docker-compose
。
version: '3'
services:
funasr:
image: registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.5
container_name: funasr
ports:
- "10095:10095"
privileged: true
volumes:
- /home/docker/funasr/models:/workspace/models
- /home/docker/funasr/samples:/samples
- /home/docker/funasr/mp3:/mp3
command: tail -f /dev/null
funasr-online:
image: registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.10
container_name: funasr-online
ports:
- "10096:10095"
privileged: true
volumes:
- /home/docker/funasr/models:/workspace/models
- /home/docker/funasr/samples:/samples
- /home/docker/funasr/mp3:/mp3
command: tail -f /dev/null
其实只需要映射模型目录 /home/docker/funasr/models:/workspace/models
即可,其余的目录是为了方便测试而进行的映射。
如果需要查看官方测试案例和下载官方测试包,可以查看快速开始。
- 启动离线语音识别服务
# 进入容器
docker exec -it funasr bash
# 进入服务目录
cd /workspace/FunASR/runtime
# 启动服务
nohup bash run_server_2pass.sh \
--model-thread-num 8 \
--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 \
--hotword /workspace/models/hotwords.txt > 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
如果是第一次启动,那么需要等模型下载完成才可以使用,可以查看 log.txt
查看情况。
- 启动实时语音识别服务
# 进入容器
docker exec -it funasr-online bash
# 进入服务目录
cd /workspace/FunASR/runtime
# 启动服务
nohup bash run_server.sh \
--model-thread-num 8 \
--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 \
--punc-dir damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx \
--lm-dir damo/speech_ngram_lm_zh-cn-ai-wesp-fst \
--itn-dir thuduj12/fst_itn_zh \
--hotword /workspace/models/hotwords.txt > 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
同样如果是第一次启动,也需要等待模型下载完成。
等待服务启动完毕以后,可以使用官方的 h5 页面,将 asr 替换为自己的服务器地址。或者将上面提到的 快速开始 里面的测试包下载,里面也有一样 h5 页面,并且可以自行修改一些内容,下面就是经过修改后的,时间上更为明显了。
/>
Tips:清朝云网络工作室