| # wenet.axera |
|
|
| WeNet on Axera. |
|
|
| 预转换好的模型在[Release](https://github.com/ml-inory/wenet.axera/releases/download/v1.0/axmodel.tar.gz) 基于AIShell数据集的100条语音量化 |
|
|
| ## 安装依赖 |
|
|
| x86: |
|
|
| ```bash |
| pip install -r requirements_x86.txt |
| ``` |
|
|
| 开发板: |
|
|
| ```bash |
| pip install -r requirements_ax.txt |
| ``` |
|
|
| ## 导出 ONNX |
|
|
| ```bash |
| python export_onnx.py \ |
| --pretrained_model_dir pretrained/aishell_u2pp_conformer_exp \ |
| --output_onnx_dir onnx_model |
| ``` |
|
|
| 如果不指定参数,默认会下载并使用 `pretrained/aishell_u2pp_conformer_exp`。 |
|
|
| 输出: |
|
|
| ```text |
| onnx_model/encoder_offline.onnx |
| onnx_model/encoder_online.onnx |
| onnx_model/decoder.onnx |
| ``` |
|
|
| ## 生成量化数据集 |
|
|
| ```bash |
| wget https://github.com/ml-inory/whisper.axera/releases/download/v1.0/datasets.zip |
| unzip datasets.zip -d datasets |
| ``` |
|
|
| ```bash |
| python generate_data.py \ |
| -i datasets \ |
| --config pretrained/aishell_u2pp_conformer_exp/train.yaml \ |
| --vocab pretrained/aishell_u2pp_conformer_exp/units.txt \ |
| --onnx_dir onnx_model \ |
| --calib_data_path calibration_dataset \ |
| --max_num 100 |
| ``` |
|
|
| ## 转 axmodel |
|
|
| 转换: |
|
|
| ```bash |
| pulsar2 build \ |
| --input onnx_model/encoder_offline.onnx \ |
| --config config_encoder_offline.json \ |
| --output_dir axmodel/encoder_offline \ |
| --output_name encoder_offline.axmodel \ |
| --target_hardware AX650 \ |
| --npu_mode NPU3 |
| |
| pulsar2 build \ |
| --input onnx_model/encoder_online.onnx \ |
| --config config_encoder_online.json \ |
| --output_dir axmodel/encoder_online \ |
| --output_name encoder_online.axmodel \ |
| --target_hardware AX650 \ |
| --npu_mode NPU3 |
| |
| pulsar2 build \ |
| --input onnx_model/decoder.onnx \ |
| --config config_decoder.json \ |
| --output_dir axmodel/decoder \ |
| --output_name decoder.axmodel \ |
| --target_hardware AX650 \ |
| --npu_mode NPU3 |
| ``` |
|
|
| ## 跑 ONNX |
|
|
| Offline CTC: |
|
|
| ```bash |
| python run_ort.py \ |
| -i demo.wav \ |
| --config pretrained/aishell_u2pp_conformer_exp/train.yaml \ |
| --vocab pretrained/aishell_u2pp_conformer_exp/units.txt \ |
| --onnx_dir onnx_model \ |
| --mode ctc_prefix_beam_search \ |
| --calib_data_path "" |
| ``` |
|
|
| Online CTC: |
|
|
| ```bash |
| python run_ort.py \ |
| -i demo.wav \ |
| --online \ |
| --config pretrained/aishell_u2pp_conformer_exp/train.yaml \ |
| --vocab pretrained/aishell_u2pp_conformer_exp/units.txt \ |
| --onnx_dir onnx_model \ |
| --mode ctc_prefix_beam_search \ |
| --calib_data_path "" |
| ``` |
|
|
| Attention rescoring: |
|
|
| ```bash |
| python run_ort.py \ |
| -i demo.wav \ |
| --config pretrained/aishell_u2pp_conformer_exp/train.yaml \ |
| --vocab pretrained/aishell_u2pp_conformer_exp/units.txt \ |
| --onnx_dir onnx_model \ |
| --mode attention_rescoring \ |
| --calib_data_path "" |
| ``` |
|
|
| ## 跑 axmodel |
|
|
| 在开发板仓库目录运行。 |
|
|
| Offline CTC: |
|
|
| ```bash |
| python3 run_ax.py -i demo.wav --mode ctc_prefix_beam_search --provider AxEngineExecutionProvider |
| ``` |
|
|
| Online CTC: |
|
|
| ```bash |
| python3 run_ax.py -i demo.wav --online --mode ctc_prefix_beam_search --provider AxEngineExecutionProvider |
| ``` |
|
|
| Offline attention rescoring: |
|
|
| ```bash |
| python3 run_ax.py -i demo.wav --mode attention_rescoring --provider AxEngineExecutionProvider |
| ``` |
|
|
| Online attention rescoring: |
|
|
| ```bash |
| python3 run_ax.py -i demo.wav --online --mode attention_rescoring --provider AxEngineExecutionProvider |
| ``` |
|
|
| RTF 测试结果,`demo.wav` 时长 4.204s,repeat 5,不含模型加载: |
|
|
| | 模式 | 平均耗时 | RTF | |
| | --- | ---: | ---: | |
| | offline CTC | 0.5202s | 0.1237 | |
| | online CTC | 0.5582s | 0.1328 | |
| | offline attention rescoring | 0.5266s | 0.1253 | |
| | online attention rescoring | 0.5626s | 0.1338 | |
|
|