README.md 3.33 KB
Newer Older
yangql's avatar
yangql committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# WeNet-Ort
## 论文
`WeNet: Production Oriented Streaming and Non-streaming End-to-End
Speech Recognition Toolkit`
- https://arxiv.org/pdf/2102.01547.pdf
## 模型结构
WeNet是一种hybird连接主义时间分类(CTC)/注意力架构,以transformer或conformer作为编码器和注意力解码器来重新存储CTC假设。为了在统一的模型中实现流和非流,以及使用了一种基于动态块的注意力策略,该策略允许自注意力以随机长度集中在正确的上下文上。

![img](./Doc/images/wenet1.PNG)
## 算法原理
底层堆栈完全基于PyTorch及其生态系统。中间的堆栈由两部分组成。开发研究模型时,TorchScript用于开发模型,Torchaudio用于动态特征提取,分布式数据并行(DDP)用于分布式训练,torch实时(JIT)用于模型导出,PyTorch量化用于模型量化,LibTorch用于生产运行时。LibTorch产品用于托管生产模型,旨在支持各种硬件和平台,如CPU、GPU(CUDA)Linux、Android和iOS。顶部堆栈显示了对WeNet中生产管道的典型研究

![img](./Doc/images/wenet2.PNG)
## 环境配置
### Docker(方法一)
拉取镜像:
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:ort1.14.0_migraphx3.0.0-dtk22.10.1
```
创建并启动容器,安装相关依赖:
```
docker run --shm-size 16g --network=host --name=wenet_ort --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/wenet_onnxruntime:/home/wenet_onnxruntime -it <Your Image ID> /bin/bash
# 激活dtk
source /opt/dtk/env.sh
```
### Dockerfile(方法二)
此处提供dockerfile的使用方法
```
docker build --no-cache -t wenet_onnxruntime:2.0 .

docker run --shm-size 16g --network=host --name=wenet_ort --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/wenet_onnxruntime:/home/wenet_onnxruntime -it <Your Image ID> /bin/bash
```

## 数据集
yangql's avatar
yangql committed
35
`aishell`
yangql's avatar
yangql committed
36
37
38
39
40
41
42
43

## 推理
### C++版本推理
本次采用经wenet模型完成问题语音识别任务,首先需要下载模型至Resouce/Models/,链接:https://pan.baidu.com/s/1aUt6LRcspYLAmmWu0fFTdQ 
提取码:sodg,下面介绍如何运行C++代码示例,C++示例的详细说明见Doc目录下的Tutorial_Cpp.md。

#### 构建工程
```
yangql's avatar
yangql committed
44
cd /home/wenet_onnxruntime
yangql's avatar
yangql committed
45
46
47
48
49
50
51
export LD_LIBRARY_PATH=$PWD/openfst-1.7.6/src/lib:$LD_LIBRARY_PATH
mkdir build && cd build
cmake ..
make install
```
#### 设置环境变量
```
yangql's avatar
yangql committed
52
cd /home/wenet_onnxruntime
yangql's avatar
yangql committed
53
54
55
56
57
58
59
60
61
export GLOG_logtostderr=1
export GLOG_v=2
wav_path=./Resource/BAC009S0764W0344.wav
onnx_dir=./Resource/models
units=./Resource/units.txt
```
#### 运行示例
```
# 进入wenet onnxruntime工程根目录
yangql's avatar
yangql committed
62
cd /home/wenet_onnxruntime
yangql's avatar
yangql committed
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

# 执行示例程序
./build/Src/bin/decoder_main --onnx_dir $onnx_dir  --wav_path $wav_path  --unit_path $units 2>&1 | tee log.txt

```
## result
```
test Final result: 脚踝和小腿的能力变弱
Decoded 3091ms audio taken 466ms.
Total: decoded 3091ms audio taken 466ms.
RTF: 0.1508
```

### 精度

## 应用场景
### 算法类别
`语音识别`
### 热点应用行业
`制造`,`金融`,`交通`,`教育`

## 源码仓库及问题反馈
- https://developer.hpccube.com/codes/modelzoo/wenet-onnxruntime
## 参考资料
- https://github.com/wenet-e2e/wenet
- https://wenet.org.cn/wenet/