PaddleSpeech-ASR-910B:基于昇腾910B的语音识别项目

百度PaddleSpeech模型适配迁移到昇腾910B(A2),适用于采用conformer架构的7个ASR模型。

分支1Tags0
文件最后提交记录最后更新时间
1 个月前
30 天前
1 个月前
30 天前
30 天前
30 天前

1. PaddleSpeech-ASR模型介绍

模型介绍:https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/docs/source/asr/PPASR_cn.md

PaddleSpeech是百度开源的基于PaddlePaddle框架的工业级语音工具包,包含语音识别(ASR)、语音合成(TTS)、声音分类等模块。

ASR语音识别的基本流程如下图所示:

image.png

PaddleSpeech ASR 模块包含多种架构,最具代表性的是Conformer 和DeepSpeech2 ,如下所示:

模型架构 核心特点
Conformer PaddleSpeech 主推的生产级模型,基于 U2/U2++ 统一框架,结合自注意力与卷积模块,准确率高,支持流式与非流式推理 (本次完成迁移)
DeepSpeech2 经典的"卷积 + RNN"架构,是 PaddleSpeech 早期主力模型(本次未涉及)

迁移模型列表

由于 Conformer 是 PaddleSpeech 官方主推的一组生产级模型,能够覆盖 PaddleSpeech ASR 的主要使用场景。根据训练数据和应用场景,Conformer有以下 7 个模型,本次都完成昇腾迁移和验证:

模型 训练数据 推理模式 应用场景
conformer_aishell AIShell(150h) 离线 中文静音/短音频离线转写,适合对准确率要求高、不要求实时的场景,如会议录音转文字
conformer_online_aishell AIShell(150h) 流式 中文实时语音转写,适合语音输入法、实时字幕等低延迟场景
conformer_wenetspeech WenetSpeech(10000h) 离线 大数据量训练,泛化能力更强,适合多种中文口音和领域的离线转写场景
conformer_online_wenetspeech WenetSpeech 流式 大数据量训练的流式版本,适合对泛化和实时性均有要求的场景,如直播字幕
conformer_u2pp_online_wenetspeech WenetSpeech 流式(U2++) U2++ 双向 chunk 增强,流式精度更高,适合对准确率要求较高的流式生产场景
conformer_online_multicn 多中文数据集 流式 多数据集混合训练,覆盖面广,适合通用中文实时识别场景
conformer_talcs TALCS(中英夹杂,587h) 离线 中英夹杂语音识别,适合口语中频繁中英混说的场景,如"我觉得这个 app 不错"

2. 模型迁移

2.1 容器环境信息

项目 内容
NPU 型号 910B(A2)
固件版本 7.8.0.7.220
驱动版本 25.5.2
CANN 版本 8.1.RC1
OS Ubuntu 22.04.5 LTS
内核 Linux 5.10.0-153.56.0.134.oe2203sp2.aarch64 aarch64
Python 3.10.17(python3
PaddlePaddle 3.0.0
paddle-custom-npu 3.0.0
PaddleSpeech 1.5.0

2.2下载镜像

从ModelScope下载镜像,将下面命令中的<下载目录>替换为实际使用的工程目录

# 1、安装魔塔
pip install -U modelscope

# 2、下载镜像
TORCH_DEVICE_BACKEND_AUTOLOAD=0 modelscope download Composite/PaddleSpeech_a2 --include paddlespeech_a2.tar.gz --local_dir <下载目录> 

# 3、恢复镜像
cd  <下载目录> 
docker load -i paddlespeech_a2.tar.gz

执行完成后通过docker images确认镜像拉取成功

REPOSITORY                                                      TAG                                                                                  IMAGE ID       CREATED         SIZE
paddlespeech-asr_with_ckpt                                      v1.0.1                                                                               9d90035ab183   4 months ago    45.6GB

2.3 下载测试脚本

clone本工程

mkdir  -p <工程目录> 
git clone https://gitcode.com/Ascend-SACT/PaddleSpeech-ASR-910B.git  <工程目录>

2.4 下载测试数据

运行download_dataset.sh下载数据脚本,从 https://modelscope.cn/datasets/speech_asr/speech_asr_aishell1_trainsets 下载aishell1测试数据集和元数据

cd  <工程目录>
bash download_dataset.sh

下载单条测试音频,方便通过命令行快速测试

cd  test-data
wget -c https://paddlespeech.cdn.bcebos.com/PaddleAudio/zh.wav
wget -c https://paddlespeech.cdn.bcebos.com/PaddleAudio/en.wav

2.5. 创建容器

请注意修改下面<工程目录>内容为自己的工作目录

#创建容器
docker run -itd  \
--name paddlespeech_env \
--privileged --network=host --shm-size=256G -w=/home/projects \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/dcmi:/usr/local/dcmi \
-e ASCEND_RT_VISIBLE_DEVICES="0,1,2,3,4,5,6,7" \
-v <工程目录>:/home/projects \
paddlespeech-asr_with_ckpt:v1.0.1 \
/bin/bash

#进入容器
docker exec -it paddlespeech_env /bin/bash

2.6 PP框架功能验证

python -c "import paddle; paddle.utils.run_check()"

预期输出结果如下(略掉前面过程信息,只保留最后两行),表示PaddlePaddle框架安装成功

PaddlePaddle works well on 8 npus.
PaddlePaddle is installed successfully! Let's start deep learning with PaddlePaddle now.

2.7 模型权重下载

模型权重存放目录在容器内的~/.paddlespeech/models目录,权重不需要单独下载,在3.2或3.3节中执行语音识别指令时会自动下载,配置了哪个模型,就会自动下载哪个模型的权重。

3. ASR功能验证

3.1. 工程目录说明

image.png

3.2. Paddle原生测试命令

#可更换模型
# conformer_wenetspeech,conformer_online_wenetspeech,conformer_u2pp_online_wenetspeech,conformer_online_multicn,conformer_aishell,
# conformer_online_aishell

#命令行
paddlespeech asr \
  --input  test-data/zh.wav \
  --model conformer_wenetspeech \
  --lang zh \
  --device npu:0

预计输出结果如下:

我认为跑步最重要的就是给我带来了身体健康

3.3. 集成测试脚本

bash run_infer.sh

脚本可配置参数如下:

--device npu:2 \
--model_type ${MODEL} \
--test_num 10 \
--warmup_num 5 \

1000条aishell的语音文件测试结果参考:

========================================
测试设备: 910B3
测试卡: npu:2
模型: conformer_aishell
字错率 (CER): 1.50 %
实时率 (RTF): 0.2305
处理速度: 4.34 倍速 (X)
========================================


项目介绍

百度PaddleSpeech模型适配迁移到昇腾910B(A2),适用于采用conformer架构的7个ASR模型。

定制我的领域