libtorch+GPU部署wenet语音识别(gRPC通信)

这篇具有很好参考价值的文章主要介绍了libtorch+GPU部署wenet语音识别(gRPC通信)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

业务App中部分功能需要通过ASR识别5-7秒的语音命令,App本身不支持流式协议,需录音完成后传输至服务端进行识别及后续的NLP。
根据实际情况仅对语音模型进行增强,使用libtorch+GPU方式部署,gRPC方式调用,由于并发不大,使用flask+gunicorn部署API。

一、docker镜像准备

拉取 nvidia官方的cuda11.3 runtime镜像。

docker pull nvidia/cuda:11.3.1-runtime-ubuntu18.04

若不使用上述镜像,也可以在现有镜像内部署,需要安装cuda环境,首先下载cuda安装包:

wget https://developer.download.nvidia.cn/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run

运行:

sh cuda_11.3.0_465.19.01_linux.run

安装时仅需安装cuda toolkit。libtorch+GPU部署wenet语音识别(gRPC通信),语音识别,python,人工智能
下载cudnn:

wget https://developer.nvidia.com/compute/machine-learning/cudnn/secure/8.2.1.32/11.3_06072021/cudnn-11.3-linux-x64-v8.2.1.32.tgz

安装cudnn,注意这里需要把cudnn_version.h拷贝过去:

cp cudnn/include/cudnn.h /usr/local/cuda-11.3/include
cp cudnn/lib/libcudnn* /usr/local/cuda-11.3/lib64*
cp cudnn/include/cudnn_version.h /usr/local/cuda-11.3/include/cudnn_version.h

chmod a+r /usr/local/cuda-11.3/include/cudnn.h
chmod a+r /usr/local/cuda-11.3/include/cudnn_version.h
chmod a+r /usr/local/cuda-11.3/lib64/libcudnn*

将so库加入路径:

export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH

二、编译运行wenet

这个步骤比较简单,先把项目clone到本地,根据文档中来就行。

cd wenet/runtime/libtorch
mkdir build && cd build && cmake -DGPU=ON -DGRPC=ON .. && cmake --build .

这里需要同时将GPU和GRPC设置为ON,由于编译项较多,编译速度比较慢,建议根据计算机配置加入 -j8 或者 -j16 多线程编译,加速明显。

cmake --build -j16 .

记录一些坑:
1.编译时部分依赖下载很慢或者无法下载,建议全程tizi。
2.windows下不支持GPU编译。
3.最新的cmake 3.25编译可能会遇到一些奇怪的问题,建议降级为3.22.5,亲测有效。
4.理论上通过修改\cmake\libtorch.cmake文件可以修改libtorch及cuda版本,没有实验过。

三、语言模型LM训练

通过对比研究测试,对语言模型增强+hotword可以有效提高降低本场景下的wer,训练LM有一点坎坷。

第一步,训练语言模型

使用srilm工具进行语言模型训练,tools文件夹下提供了安装srilm的sh,运行:

sh install_srilm.sh

若提示需要AWK,则运行:

apt-get install gawk

运行后程序将自动下载安装srilm工具。同时准备语料train.txt,以\n分割,运行命令以训练模型(arpa格式):

ngram-count -order 2 -no-sos -no-eos -text train.txt -lm train.arpa

完成后在同目录下将生成train.arqa文件。

第二步,ARPA生成FST

(1)启用GRAPH_TOOLS=ON编译【失败】
根据文档,在编译时设置GRAPH_TOOLS=ON

cd wenet/runtime/libtorch
mkdir build && cd build && cmake -DGRAPH_TOOLS=ON .. && cmake --build .

但是使用这种方案会未来会提示:

tools/fst/compile_lexicon_token_fst.sh: line 59: fstcompile: command not found
tools/fst/compile_lexicon_token_fst.sh: line 60: fstarcsort: command not found

发现这两个源码没有被编译,并且暂时无法找到解决方案,可能是我自己的问题,这里讲一个曲线救国的方案,殊途同归,不影响运行。

(2)自行编译安装OpenFST
通过OpenFST官网下载OpenFST的源码,建议下载1.6.5版本,解压源码,进行安装:

./configure
make -j16
make install

-j16参数根据计算机配置调整。安装完成后fstcompile和fstarcsort命令可以用,若提示找不到libfstscript.so.8等库运行:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

OpenFST安装完成,在wenet项目中运行指令:

tools/fst/compile_lexicon_token_fst.sh dict tmp tmp2
tools/fst/make_tlg.sh lm tmp2 graph

graph文件夹下将生成fst文件:
libtorch+GPU部署wenet语音识别(gRPC通信),语音识别,python,人工智能

若需要生成可视化pdf,运行:

mkdir -p pdf
fstdraw --isymbols=graph/tokens.txt --osymbols=graph/tokens.txt graph/T.fst | dot -Tpdf -o pdf/T.pdf
fstdraw --isymbols=graph/tokens.txt --osymbols=graph/words.txt graph/L.fst | dot -Tpdf -o pdf/L.pdf
fstdraw --isymbols=graph/words.txt --osymbols=graph/words.txt graph/G.fst | dot -Tpdf -o pdf/G.pdf
fstdraw --isymbols=graph/tokens.txt --osymbols=graph/words.txt graph/LG.fst | dot -Tpdf -o pdf/LG.pdf
fstdraw --isymbols=graph/tokens.txt --osymbols=graph/words.txt graph/TLG.fst | dot -Tpdf -o pdf/TLG.pd

四、API服务部署

拷贝build/bin文件夹下的主程序grpc_server_main到单独目录下,拷贝fc_base\libtorch-src\lib文件夹下的所有so依赖库到单独目录的lib中,目录结构。

├─你的文件夹
│  ├─lib
│  └─grpc_server_main

编写一个run.sh,或者直接启动grpc服务:

export LD_LIBRARY_PATH=/【你的文件夹】/lib:$LD_LIBRARY_PATH
export GLOG_logtostderr=1
export GLOG_v=2

model_dir=./model/
./grpc_server_main \
    --port 10090 \
    --workers 16 \
    --chunk_size -1 \
    --model_path $model_dir/final.zip \
    --context_path hotwords.txt \
    --context_score 9 \
    --unit_path $model_dir/units.txt

注意chunk_size为-1,hotword为热词,比如人名、地名、专有名词等。启动成功并在GPU中运行:
libtorch+GPU部署wenet语音识别(gRPC通信),语音识别,python,人工智能文章来源地址https://www.toymoban.com/news/detail-687957.html

到了这里,关于libtorch+GPU部署wenet语音识别(gRPC通信)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Whisper JAX 语音识别本地部署 whisperX 语音识别本地部署视频教程

    https://nlpcloud.com/zh/how-to-install-and-deploy-whisper-the-best-open-source-alternative-to-google-speech-to-text.html whisper-jax最详细的安装教程 | 一个号称比whisper快70倍的语音识别项目 | 免费开源的语音识别项目 whisperX 语音识别本地部署_JoeManba的博客-CSDN博客 GitHub - sanchit-gandhi/whisper-jax: JAX implement

    2024年02月16日
    浏览(34)
  • 实现语音识别系统:手把手教你使用STM32C8T6和LD3320(SPI通信版)实现语音识别

    实现语音识别系统:手把手教你使用STM32C8T6和LD3320(SPI通信版)实现语音识别

            本文实际是对LD3320(SPI通信版)的个人理解,如果单论代码和开发板的资料而言,其实当你购买LD3320的时候,卖家已然提供了很多资料。我在大学期间曾经多次使用LD3320芯片的开发板用于设计系统,我在我的毕业设计作品中也有添加这个系统功能,用于添加整个系

    2024年02月06日
    浏览(21)
  • whisperX 语音识别本地部署

    whisperX 语音识别本地部署

    WhisperX 是一个优秀的开源Python语音识别库。 下面记录Windows10系统下部署Whisper 1、在操作系统中安装 Python环境 2、安装 CUDA环境 3、安装Annaconda或Minconda环境 4、下载安装ffmpeg 下载release-builds包,如下图所示 将下载的包解压到你想要的路径,然后配置系统环境:我的电脑-高级系

    2024年02月16日
    浏览(12)
  • whisper 语音识别项目部署

    whisper 语音识别项目部署

    1.安装anaconda软件 在如下网盘免费获取软件: 链接:https://pan.baidu.com/s/1zOZCQOeiDhx6ebHh5zNasA 提取码:hfnd 2.使用conda命令创建python3.8环境 3.进入whisper虚拟环境 4.安装cuda10.0的PyTorch环境 5.使用命令安装whisper库包 6.简单使用命令识别一段语音: 6.安装和配置ffmpeg软件 在如下网盘免费

    2024年02月11日
    浏览(12)
  • Whisper JAX 语音识别本地部署

    https://nlpcloud.com/zh/how-to-install-and-deploy-whisper-the-best-open-source-alternative-to-google-speech-to-text.html whisper-jax最详细的安装教程 | 一个号称比whisper快70倍的语音识别项目 | 免费开源的语音识别项目 whisperX 语音识别本地部署_JoeManba的博客-CSDN博客 GitHub - sanchit-gandhi/whisper-jax: JAX implement

    2024年02月08日
    浏览(11)
  • Arduino与LU-ASR01语音识别模块的双向串口通信实现

    Arduino与LU-ASR01语音识别模块的双向串口通信实现

        之前我写了一篇《Arduino的智能语言输入实现》,讨论了Arduino与LU-ASR01之间通过串口通信实现Arduino的中文语音输入,不过那个通信是不完整的,因为LU-ASR01的串口只有一个发送端口TX,而没有接收端口RX。其实在真正的应用中,LU-ASR01通常也需要接收上位机的数据,例如为确

    2024年02月05日
    浏览(185)
  • whisper语音识别部署及WER评价

    whisper语音识别部署及WER评价

    1.whisper部署 详细过程可以参照:🏠 创建项目文件夹 conda创建虚拟环境 安装pytorch 下载whisper 安装相关包 测试一下whispet是否安装成功(默认识别为中文) whisper识别中文的时候经常会输出繁体,加入一下参数可以避免: 2.脚本批量测试 创建test.sh脚本,输入一下内容,可以实

    2024年02月10日
    浏览(12)
  • 本地部署_语音识别工具_Whisper

    1 简介 Whisper 是 OpenAI 的语音识别系统(几乎是最先进),它是免费的开源模型,可供本地部署。 2 docker https://hub.docker.com/r/onerahmet/openai-whisper-asr-webservice 3 github https://github.com/ahmetoner/whisper-asr-webservice 4 运行 image 大小:11.5G 运行后,即可在9000端口通过swagger调用,我先用手机录

    2024年02月05日
    浏览(12)
  • 学习实践-Whisper语音识别模型实战(部署+运行)

    学习实践-Whisper语音识别模型实战(部署+运行)

    OpenAI的语音识别模型Whisper,Whisper 是一个自动语音识别(ASR,Automatic Speech Recognition)系统,OpenAI 通过从网络上收集了 68 万小时的多语言(98 种语言)和多任务(multitask)监督数据对 Whisper 进行了训练。OpenAI 认为使用这样一个庞大而多样的数据集,可以提高对口音、背景噪音

    2024年02月06日
    浏览(13)
  • 开源语音识别faster-whisper部署教程

    源码地址 模型下载地址: 下载 cuBLAS and cuDNN 在 conda 环境中创建 python 运行环境 激活虚拟环境 安装 faster-whisper 依赖 执行完以上步骤后,我们可以写代码了 说明: 更多内容欢迎访问博客 对应视频内容欢迎访问视频

    2024年02月04日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包