阿里新开源GPU版本的FunASR安装避坑

当前安装过程没有cpu版本顺利

1.个人在自己的电脑上安装ubantu系统,以便使用本身的显卡功能(本人显卡NVIDIA GeForce RTX 4060)(这里需要注意,更新里面有附加驱动安装驱动会导致黑屏,小伙伴不要心急重装系统,可以ctrl+alt+f2用自己的账户登陆,删除驱动(自行百度)然后reboot,这情况例外,我之前有个电脑安装就没事),因此当前驱动是在官网下载安装的。
funasr安装教程参考

https://github.com/modelscope/FunASR/blob/main/runtime/docs/SDK_advanced_guide_offline_gpu_zh.md

2.这里注意端口10095:10095,官方给的是10098:10095,后面调用引擎的代码端口是10095.

sudo docker pull \
  registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-gpu-0.1.1
mkdir -p ./funasr-runtime-resources/models
sudo docker run --gpus=all -p 10095:10095 -it --privileged=true \
  -v $PWD/funasr-runtime-resources/models:/workspace/models \
  registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-gpu-0.1.1

这里拉取镜像大约20多G,建议磁盘空间大点60G以上,不然白白浪费时间。

启动镜像的时候失败,报错如下:

docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
ERRO[0000] error waiting for container: context canceled 

这里就需要安装NVIDIA Container Toolkit,具体教程参考https://blog.csdn.net/weixin_44212848/article/details/137013980

#如果是离线安装,参考
https://blog.csdn.net/weixin_47046791/article/details/142148517?spm=1001.2014.3001.5501

3.安装好NVIDIA Container Toolkit,启动镜像就可以了,开始运行funasr引擎,下载模型

cd /workspace/FunASR/runtime
nohup bash run_server.sh \
  --download-model-dir /workspace/models \
  --model-dir damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch \
  --vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-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 \
  --certfile  ../../../ssl_key/server.crt \
  --keyfile ../../../ssl_key/server.key \
  --hotword ../../hotwords.txt  > log.txt 2>&1 &

(我这里模型下载成功,但是没有启动,因为有个libtorch_global_deps.so文件不存在)比如:

cd /workspace/FunASR/runtime/websocket/build/bin
#1.执行
ldd funasr-wss-server
#2.会显示so文件,
libtorch_global_deps.so => not found
#3.这个时候可以输入下面命令查看so文件路径:
find / -name libtorch_global_deps.so
#结果:/usr/local/lib/python3.8/dist-packages/torch/lib/libtorch_global_deps.so
#4.将该so文件路径导入环境变量
export LD_LIBRARY_PATH=/usr/local/lib/python3.8/dist-packages/torch/lib
#5.再次执行ldd funasr-wss-server ,就会发现libtorch_global_deps.so可以找到了
#6.如需指定GPU卡号,在docker外面不会指定卡号
export CUDA_VISIBLE_DEVICES=1

4.模型下载好了,so文件也解决了,接下来启动引擎

run_server.sh命令参数介绍

--download-model-dir 模型下载地址,通过设置model ID从Modelscope下载模型
--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  服务端线程池个数(支持的最大并发路数),
                      **建议每路分配1G显存,即20G显存可配置20路并发**
--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),如果客户端提供热词,则与客户端提供的热词合并一起使用,服务端热词全局生效,客户端热词只针对对应客户端生效。

本人喜欢直接运行,方便看有没有报错(这里启动的时候,报错,有个python库=onnxruntime不存在需要pip install onnxruntime,cpu版本安装的时候这个库是在的,警告可以不用理会)

cd /workspace/FunASR/runtime/websocket/build/bin
#cpu调用
#这里参数可以参考原文档来设定,因为我模型下载好了,所以路径就是/workspace/models/damo
./funasr-wss-server --model-dir /workspace/models/damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch --vad-dir /workspace/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx --punc-dir /workspace/models/damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx --lm-dir /workspace/models/damo/speech_ngram_lm_zh-cn-ai-wesp-fst --itn-dir /workspace/models/thuduj12/fst_itn_zh 

#GPU调用
./funasr-wss-server --model-dir /workspace/models/damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch --vad-dir /workspace/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx --punc-dir /workspace/models/damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx --lm-dir /workspace/models/damo/speech_ngram_lm_zh-cn-ai-wesp-fst --itn-dir /workspace/models/thuduj12/fst_itn_zh --gpu &
./funasr-wss-server --model-dir /workspace/models/damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch --vad-dir /workspace/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx --punc-dir /workspace/models/damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx --lm-dir /workspace/models/damo/speech_ngram_lm_zh-cn-ai-wesp-fst --itn-dir /workspace/models/thuduj12/fst_itn_zh --decoder-thread-num 20 --model-thread-num 1 --io-thread-num  2 --bladedisc true --batch-size 20 --gpu &

或者


cd /workspace/FunASR/runtime
#将下面内容写入sh脚本运行
export LD_LIBRARY_PATH=/usr/local/lib/python3.8/dist-packages/torch/lib
model_dir="/workspace/models/damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch"
vad_dir="/workspace/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx"
punc_dir="/workspace/models/damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx"
itn_dir="/workspace/models/thuduj12/fst_itn_zh"
lm_dir="/workspace/models/damo/speech_ngram_lm_zh-cn-ai-wesp-fst"
port=10095
certfile="$(pwd)/ssl_key/server.crt"
keyfile="$(pwd)/ssl_key/server.key"
# set decoder_thread_num
decoder_thread_num=20
multiple_io=10
io_thread_num=$(( (decoder_thread_num + multiple_io - 1) / multiple_io ))
model_thread_num=1
bladedisc=true
batch_size=1
cmd_path=/workspace/FunASR/runtime/websocket/build/bin
cmd=funasr-wss-server
cd $cmd_path
$cmd_path/${cmd}  \
  --model-dir "${model_dir}" \
  --vad-dir "${vad_dir}" \
  --punc-dir "${punc_dir}" \
  --itn-dir "${itn_dir}" \
  --lm-dir "${lm_dir}" \
  --decoder-thread-num ${decoder_thread_num} \
  --model-thread-num ${model_thread_num} \
  --io-thread-num  ${io_thread_num} \
  --port ${port} \
  --bladedisc "${bladedisc}" \
  --batch-size "${batch_size}" \
  --gpu &

5.引擎启动成功就可以使用python(3.7以上)调用测试了(工具下载:wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/sample/funasr_samples.tar.gz)

python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline \
        --audio_in "../audio/asr_example.wav" --output_dir "./results"

二:性能测试测试

官网路径:

https://github.com/modelscope/FunASR/blob/main/runtime/docs/benchmark_libtorch_cpp.md

编译路径在~/funasr/runtime/onnxruntime

编译方式参考

Building for Linux/Unix

Download onnxruntime


wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/dep_libs/onnxruntime-linux-x64-1.14.0.tgz

tar -zxvf onnxruntime-linux-x64-1.14.0.tgz

Download ffmpeg


wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/dep_libs/ffmpeg-master-latest-linux64-gpl-shared.tar.xz

tar -xvf ffmpeg-master-latest-linux64-gpl-shared.tar.xz

Install deps


# openblas

sudo apt-get install libopenblas-dev #ubuntu

# sudo yum -y install openblas-devel #centos

# openssl

apt-get install libssl-dev #ubuntu

# yum install openssl-devel #centos

Build runtime


git clone https://github.com/alibaba-damo-academy/FunASR.git && cd FunASR/runtime/onnxruntime

mkdir build && cd build

cmake -DCMAKE_BUILD_TYPE=release .. -DONNXRUNTIME_DIR=/path/to/onnxruntime-linux-x64-1.14.0 -DFFMPEG_DIR=/path/to/ffmpeg-master-latest-linux64-gpl-shared

如果使用GPU调用模型,其编译方式为

cmake  -DCMAKE_BUILD_TYPE=release .. -DGPU=ON -DONNXRUNTIME_DIR=/workspace/onnxruntime-linux-x64-1.14.0 -DFFMPEG_DIR=/workspace/ffmpeg-master-latest-linux64-gpl-shared

make -j 4

测试样例:
当前环境我使用docker里面,比较方便

./funasr-onnx-offline-rtf \
    --model-dir    /workspace/models/damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch \
    --vad-dir   /workspace/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx \
    --punc-dir  /workspace/models/damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx \
    --thread-num 20 \
    --bladedisc true \
    --batch-size 20 \
    --wav-path     /workspace/models/audio/40min.wav
	

这里测试scp的样例:
id wav路径

0 /workspace/models/samples/python/testtj_20160419_les_100096.wav
1 /workspace/models/samples/python/testtj_20160419_les_100096.wav
2 /workspace/models/samples/python/testtj_20160419_les_100096.wav

如果是使用最上面funasr-wss-server启动,scp的路径样例:
不需要加id了

/workspace/models/samples/python/testtj_20160419_les_100096.wav
/workspace/models/samples/python/testtj_20160419_les_100096.wav

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空弹壳

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值