WeNet runtime/libtorch 执行步骤

语音识别框架

Posted by BY on November 4, 2022

WeNet runtime/libtorch 执行步骤

一、拉取WeNet仓库

git clone https://github.com/wenet-e2e/wenet.git

二、编译runtime/libtorch

建议先看完2.1节 再执行这一步的编译。 根据 wenet/runtime/libtorch/README_CN.md 可知,需要先 cd ${YourWenetPath}/runtime/libtorch, 然后执行:

mkdir build && cd build && cmake -DGPU=OFF .. && cmake --build .

这一步坑比较多,可能遇到如下问题:

2.1 CMake问题

2.1.1 提示CMake 版本过低,最低版本要求 cmake-3.14 。

原因:使用的CMake版本过低,要升级到3.14以上。

2.1.2 Protocol “https” not supported or disabled in libcurl 。

原因: 由于CMake在执行过程中需要调用libcurl进行依赖库下载,而使用的CMake在编译安装时没有配置curl。

执行下载libtorch库的cmake文件路径: fc_base/libtorch-subbuild/libtorch-populate-prefix/src/libtorch-populate-stamp/download-libtorch-populate.cmake, 其中文件下载的cmake内容如下:↓

参考:CMake file函数–文件操作命令:https://www.cnblogs.com/faithlocus/p/15613809.html

🚀3.1.1和3.1.2的问题都可以通过重新编译安装CMake来解决:

## 1.下载 CMake源码
wget https://cmake.org/files/v3.16/cmake-3.16.0.tar.gz

## 2.解压缩
tar -zxf cmake-3.16.0.tar.gz

## 3.编译安装,指定配置curl
cd cmake-3.16.0
./bootstrap --system-curl --prefix=/usr/local/cmake
make -j 4 && make install

## 4.配置PATH
export PATH=/usr/local/cmake/bin/:$PATH

## 5.查看cmake版本
cmake --version

## 6.查看cmake是否链接 libcurl
ldd $(which cmake)

### 正确安装的情况下应该会出现:  libcurl.so.4 => /lib64/libcurl.so.4 (0x00007f0a13efe000)

3.1.3 报错:INTTYPES_FORMAT没有设置

报错内容:c++: error: unrecognized command line option ‘-std=c++14’

  • 可能是当前使用的gcc版本过低, 建议升级到 gcc-5.4以上,然后重新执行。
  • 若还是报错,请设置CC, CXX环境变量, 然后重试。
CC=$YourGccPath/bin/gcc
export CC

CXX=$YourGccPath/bin/g++
export CXX

⚙️⚙️ 为了避免之前CMake生成的缓存文件的干扰,在重新源码编译安装完CMake之后,我删除了之前的build文件,然后重新执行如下命令:

## DGPU=OFF 表示下载的是不含cuda的纯CPU版本的 libtorch。
mkdir build && cd build && cmake -DINTTYPES_FORMAT:STRING=C99 -DGPU=OFF .. && cmake --build .

_编译成功:_

执行decoder_main

参考:runtime/libtorch/README_CN.md

4.1 下载模型文件

# root @ bjdd-isa-ai-chip1 in /docker_workspace/icode-api/baidu/xpu/api/example/wenet-conformer/wenet/runtime/libtorch on git:main o [5:49:35] 
wget https://wenet-1256283475.cos.ap-shanghai.myqcloud.com/models/aishell/20210601_u2%2B%2B_conformer_libtorch.tar.gz
tar -zxf 20210601_u2++_conformer_libtorch.tar.gz 

4.2 准备wav格式音频文件

要求准备一个16k采样率,单通道,16bits的 wav格式的音频文件。 README_CN.md 中并没有说明从哪里下载符合要求的 wav格式文件,我在网上找到了一些wav格式的数据集。 参考:https://www.aishelltech.com/aishell_2

## 下载希尔贝壳提供的 wav格式音频文件
wget https://aishell-2-sample.oss-cn-beijing.aliyuncs.com/AISHELL-2-sample.zip
## 解压缩
unzip AISHELL-2-sample.zip

## 设置变量
export GLOG_logtostderr=1
export GLOG_v=3

wav_path=$PWD/iOS/data/wav/C0936/IC0936W0002.wav
model_dir=$PWD/20210601_u2++_conformer_libtorch/

## 执行测试
./build/bin/decoder_main --chunk_size -1 --wav_path $wav_path --model_path $model_dir/final.zip --unit_path $model_dir/units.txt 2>&1 | tee log.txt

4.3 执行结果