Commit 658d9128 authored by dcuai's avatar dcuai
Browse files

Merge branch 'SCNet_icon' into 'master'

Sc net icon

See merge request !1
parents a7785cc6 66603032
# Conformer_Wenet_PyTorch # Conformer_Wenet_PyTorch
## 论文 ## 论文
`WeNet: Production Oriented Streaming and Non-streaming End-to-End Speech Recognition Toolkit` `WeNet: Production Oriented Streaming and Non-streaming End-to-End Speech Recognition Toolkit`
- [https://arxiv.org/pdf/2102.01547.pdf](https://arxiv.org/pdf/2102.01547.pdf) - [https://arxiv.org/pdf/2102.01547.pdf](https://arxiv.org/pdf/2102.01547.pdf)
## 模型结构 ## 模型结构
Conformer模型是一种结合了Transformer的自注意力机制和卷积神经网络的模型结构,用于语音识别和自然语言处理任务,具有时域和频域特征的建模能力。 Conformer模型是一种结合了Transformer的自注意力机制和卷积神经网络的模型结构,用于语音识别和自然语言处理任务,具有时域和频域特征的建模能力。
![model](./img/model.png) ![model](./img/model.png)
## 算法原理 ## 算法原理
Conformer算法原理是通过结合多层的Transformer编码器和深度卷积神经网络,实现对输入序列的时域和频域特征进行建模,从而提高语音识别和自然语言处理任务的性能。 Conformer算法原理是通过结合多层的Transformer编码器和深度卷积神经网络,实现对输入序列的时域和频域特征进行建模,从而提高语音识别和自然语言处理任务的性能。
![conformer encoder](./img/conformer_encoder.png) ![conformer encoder](./img/conformer_encoder.png)
## 环境配置 ## 环境配置
### Docker(方法一) ### Docker(方法一)
此处提供[光源](https://www.sourcefind.cn/#/service-details)拉取docker镜像的地址与使用步骤 此处提供[光源](https://www.sourcefind.cn/#/service-details)拉取docker镜像的地址与使用步骤
``` ```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash
cd /path/workspace/ cd /path/workspace/
pip3 install typeguard==2.13.3 pip3 install typeguard==2.13.3
``` ```
### Dockerfile(方法二) ### Dockerfile(方法二)
此处提供dockerfile的使用方法 此处提供dockerfile的使用方法
``` ```
cd ./docker cd ./docker
docker build --no-cache -t conformer . docker build --no-cache -t conformer .
docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash
``` ```
### Anaconda(方法三) ### Anaconda(方法三)
此处提供本地配置、编译的详细步骤,例如: 此处提供本地配置、编译的详细步骤,例如:
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。 关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。
``` ```
DTK驱动:dtk22.10 DTK驱动:dtk22.10
python:python3.8 python:python3.8
torch:1.10 torch:1.10
torchvision:0.10 torchvision:0.10
``` ```
`Tips:以上dtk驱动、python、paddle等DCU相关工具版本需要严格一一对应` `Tips:以上dtk驱动、python、paddle等DCU相关工具版本需要严格一一对应`
其它非深度学习库参照requirements.txt安装: 其它非深度学习库参照requirements.txt安装:
``` ```
pip3 install -r requirements.txt pip3 install -r requirements.txt
pip3 install typeguard==2.13.3 pip3 install typeguard==2.13.3
``` ```
## 数据集 ## 数据集
`Aishell` `Aishell`
- [http://openslr.org/33/](http://openslr.org/33/) - [http://openslr.org/33/](http://openslr.org/33/)
此处提供数据预处理脚本的使用方法
`Aishell`在SCNet上的快速下载链接:
```
#如果自行下载了aishell数据集,只需要在run.sh文件中修改数据集路径,然后执行如下指令即可
cd ./examples/aishell/s0 - [http://113.200.138.88:18080/aidatasets/project-dependency/aishell/-/raw/master/resource_aishell.tgz](http://113.200.138.88:18080/aidatasets/project-dependency/aishell/-/raw/master/resource_aishell.tgz)
#设置stage为-1会自动下载数据集,若有下载好的数据集,可手动设置run.sh脚本中的data路径即可省去下载过程
bash run.sh --stage -1 --stop_stage -1 - [http://113.200.138.88:18080/aidatasets/project-dependency/aishell/-/raw/master/data_aishell.tgz](http://113.200.138.88:18080/aidatasets/project-dependency/aishell/-/raw/master/data_aishell.tgz)
bash run.sh --stage 0 --stop_stage 0 此处提供数据预处理脚本的使用方法
bash run.sh --stage 1 --stop_stage 1 ```
#如果自行下载了aishell数据集,只需要在run.sh文件中修改数据集路径,然后执行如下指令即可
bash run.sh --stage 2 --stop_stage 2 cd ./examples/aishell/s0
#设置stage为-1会自动下载数据集,若有下载好的数据集,可手动设置run.sh脚本中的data路径即可省去下载过程
bash run.sh --stage 3 --stop_stage 3 bash run.sh --stage -1 --stop_stage -1
``` bash run.sh --stage 0 --stop_stage 0
预处理好的训练数据目录结构如下,用于正常训练的完整数据集请按此目录结构进行制备: bash run.sh --stage 1 --stop_stage 1
该工程数据集分为两个部分,一个是原始数据,另一个是索引和音频提取的特征文件
bash run.sh --stage 2 --stop_stage 2
1、原始数据
bash run.sh --stage 3 --stop_stage 3
```
├── data_aishell ```
│   ├── transcript
│   │   └── aishell_transcript_v0.8.txt 预处理好的训练数据目录结构如下,用于正常训练的完整数据集请按此目录结构进行制备:
│   └── wav 该工程数据集分为两个部分,一个是原始数据,另一个是索引和音频提取的特征文件
│   ├── dev
│   ├── test 1、原始数据
│   └── train
├── data_aishell.tgz ```
├── resource_aishell ├── data_aishell
│   ├── lexicon.txt │   ├── transcript
│   └── speaker.info │   │   └── aishell_transcript_v0.8.txt
└── resource_aishell.tgz │   └── wav
``` │   ├── dev
│   ├── test
2、索引和音频提取的特征文件 │   └── train
├── data_aishell.tgz
``` ├── resource_aishell
├── dev │   ├── lexicon.txt
│   ├── data.list │   └── speaker.info
│   ├── text └── resource_aishell.tgz
│   └── wav.scp ```
├── dict
│   └── lang_char.txt 2、索引和音频提取的特征文件
├── local
│   ├── dev ```
│   │   ├── text ├── dev
│   │   ├── transcripts.txt │   ├── data.list
│   │   ├── utt.list │   ├── text
│   │   ├── wav.flist │   └── wav.scp
│   │   ├── wav.scp ├── dict
│   │   └── wav.scp_all │   └── lang_char.txt
│   ├── test ├── local
│   │   ├── text │   ├── dev
│   │   ├── transcripts.txt │   │   ├── text
│   │   ├── utt.list │   │   ├── transcripts.txt
│   │   ├── wav.flist │   │   ├── utt.list
│   │   ├── wav.scp │   │   ├── wav.flist
│   │   └── wav.scp_all │   │   ├── wav.scp
│   └── train │   │   └── wav.scp_all
│   ├── text │   ├── test
│   ├── transcripts.txt │   │   ├── text
│   ├── utt.list │   │   ├── transcripts.txt
│   ├── wav.flist │   │   ├── utt.list
│   ├── wav.scp │   │   ├── wav.flist
│   └── wav.scp_all │   │   ├── wav.scp
├── test │   │   └── wav.scp_all
│   ├── data.list │   └── train
│   ├── text │   ├── text
│   └── wav.scp │   ├── transcripts.txt
└── train │   ├── utt.list
├── data.list │   ├── wav.flist
├── global_cmvn │   ├── wav.scp
├── text │   └── wav.scp_all
└── wav.scp ├── test
``` │   ├── data.list
│   ├── text
│   └── wav.scp
└── train
## 训练 ├── data.list
├── global_cmvn
``` ├── text
# 默认是4卡,可以通过修改run_train.sh文件修改卡数 └── wav.scp
# 需要注意训练默认在evaluation过程输出识别的结果,结果的输出会增加训练的时间,单独测试可以在/wenet/bin/recognize.py 文件中注释掉355行的logging.info('{} {}'.format(key, args.connect_symbol.join(content))),不显示输出的结果,从而减少训练的耗时 ```
bash train.sh
```
## 推理 ## 训练
``` ```
# 默认使用exp/conformer/final.pt进行推理,可以手动修改 # 默认是4卡,可以通过修改run_train.sh文件修改卡数
# 注意如果训练过程中关闭了日志输出,需要手动打开,否则将不会输出识别的内容 # 需要注意训练默认在evaluation过程输出识别的结果,结果的输出会增加训练的时间,单独测试可以在/wenet/bin/recognize.py 文件中注释掉355行的logging.info('{} {}'.format(key, args.connect_symbol.join(content))),不显示输出的结果,从而减少训练的耗时
bash validate.sh bash train.sh
``` ```
## result ## 推理
![result](./img/result.png) ```
# 默认使用exp/conformer/final.pt进行推理,可以手动修改
### 精度 # 注意如果训练过程中关闭了日志输出,需要手动打开,否则将不会输出识别的内容
bash validate.sh
测试数据:[aishell](http://openslr.org/33/),使用的加速卡:Z100L。 ```
根据测试结果情况填写表格: ## result
| 卡数 | 数据精度 | 精度 | ![result](./img/result.png)
| :--: | :------: | :-----: |
| 4 | fp32 | 93.1294 | ### 精度
## 应用场景 测试数据:[aishell](http://openslr.org/33/),使用的加速卡:Z100L。
### 算法类别 根据测试结果情况填写表格:
`语音识别` | 卡数 | 数据精度 | 精度 |
| :--: | :------: | :-----: |
### 热点应用行业 | 4 | fp32 | 93.1294 |
`金融,通信,广媒` ## 应用场景
## 源码仓库及问题反馈 ### 算法类别
- [https://developer.hpccube.com/codes/modelzoo/conformer_pytorch](https://developer.hpccube.com/codes/modelzoo/conformer_pytorch) `语音识别`
## 参考资料 ### 热点应用行业
- https://github.com/wenet-e2e/wenet `金融,通信,广媒`
## 源码仓库及问题反馈
- [https://developer.hpccube.com/codes/modelzoo/conformer_pytorch](https://developer.hpccube.com/codes/modelzoo/conformer_pytorch)
## 参考资料
- https://github.com/wenet-e2e/wenet
icon.png

68.4 KB

Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment