admin 管理员组

文章数量: 887016

Windows下编译语音识别引擎Wenet

  • 一、Wenet简介
  • 二、Wenet首次编译过程
    • 2.1下载第三方库源码
    • 2.2替换软链接
    • 2.3下载gRPC的third_party
  • 三、Wenet第二次编译过程
    • 3.1Git中设置代理
    • 3.2Cmake中设置代理
    • 3.3进行编译
  • 参考文档

一、Wenet简介

Wenet是出门问问语音团队联合西工大语音实验室开源的一款面向工业落地应用的语音识别工具包,该工具用一套简洁的方案提供了语音识别从训练到部署的一条龙服务。该工具在GitHub上开源,GitHub地址为
https://github/wenet-e2e/wenet,是使用C++语音进行开发,可以通过Python安装也可以在Windows环境和Linux环境编译。
本文是在Windows系统通过cmake编译wenet,编译期间走过不少弯路,所以将编译过程记录在这里,为大家进行编译时提供借鉴。

二、Wenet首次编译过程

先介绍一下本文编译环境,系统为Windows10系统,使用的Visual Studio 2019,Cmake版本为3.18.0。
首先到GitHub上下载Wenet源代码,然后解压,进入runtime/server/x86文件夹下,建立build文件夹。

2.1下载第三方库源码

打开Cmake界面程序,选择源代码和build文件夹,点击Configure,如下图所示:

在config过程中,Cmake会到GitHub下载gRPC框架,gRPC是一个开源的RPC框架,用于客户端与服务端通信使用,但GitHub下载速度极慢,整个Config过程会首先卡在下载第三方源码这一步。
打开x86文件夹下的CMakeLists.txt文件,可以看到Cmake会下载一系列第三方源码,如下图所示,考虑到GitHub下载速度和不稳定,config过程完成起来将十分困难

这时作者想到可以CMakeLists文件中的GitHub网址https://github替换为https://hub.fastgit(在Windows下使用PaddleOCR识别中提及,是一个镜像网站),从而加快下载速度。

2.2替换软链接

在x86文件夹下有很多无后缀的文件,如bin、decoder等,除Dockerfile以外共有8个,这些是Linux系统中常用的软链接,可以理解为文件夹的链接,但这些在Windows系统下无法识别,Cmake时会报出错误,将这些文件以文本文件格式打开后,发现里面内容指向runtime/core文件夹下文件夹,共有8个,如下图所示:

将8个文件夹复制粘贴至runtime/server/x86文件夹下,同时将无后缀的bin等文件删除。

2.3下载gRPC的third_party

当完成上述步骤后,会发现config过程还是会报错,报出一些grpc的third_party如abseil-cpp没有CMakeLists等错误,打开对应文件夹发现文件夹内是空的,这时发现2.1步骤中替换网址的方法存在缺陷,一些第三方库的第三方库并没有能够自动下载下来,这时即使手动下载abseil-cpp等源码,然后解压至对应文件夹,分别进行cmake编译,config成功之后,在Generate时也会报错。

三、Wenet第二次编译过程

按照GitHub上说明,使用Cmake编译过程只需建立build文件夹,然后打开cmd命令行,进入build后使用cmake … && cmake --build .命令就可编译完成。而实际情况是本文经过近一周的尝试,始终没能成功编译,这时作者意识到原因可能是使用GitHub网址替代的方法存在问题,这时最好的方法是通过代理的方式使用原始GitHub网址进行下载,具体代理使用方式读者自寻。使用代理工具后,还需要在Git命令行工具中设置代理方式和在Cmake中设置代理方式,否则下载速度还是很慢。

3.1Git中设置代理

在CMakeLists文件中指定GIT_REPOSITORY的库,Cmake是通过Git命令行工具下载的,所以在使用Cmake编译前还需下载Git工具,这点在这里补充说明。
打开Git CMD程序,输入

git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080

上面命令中的1080端口需要根据实际进行修改。

3.2Cmake中设置代理

在CMakeLists文件中指定URL地址的文件下载是使用Cmake内部的下载工具进行下载的,所以还需要对Cmake设置一次代理。
打开系统环境变量,在系统变量中点击新建,输入变量名和变量值,如下图所示:

确定退出,即设置成功。

3.3进行编译

打开cmd工具,以管理员运行,进入build文件夹,然后输入

cmake ..

只需等待一段时间,不出意外会提示生成成功,如下图所示:

然后进行编译,输入

cmake --build .

结果编译失败,如下图所示:

根据错误提示,是在进行openfst编译时报错,通过查阅官方资料发现openfst在Windows下编译目前存在困难,暂时无法解决,因此Wenet在Windows下编译只能进行到这一步,后续如能编译成功会将编译过程分享出来。

参考文档

Wenet - 面向工业落地的E2E语音识别工具
语音识别开源项目汇总
grpc cmake编译安装(ubuntu 18.04)
git 设置和取消代理
Windows下Cmake\CMD\CURL等命令实现代理
理解cmake --build .

本文标签: 语音识别 引擎 Windows Wenet