1 概述
1.1 案例介绍
随着人工智能的发展,语音识别技术已成为连接人与数字世界的重要工具。本实验旨在构建一个基于云主机和Whisper语音识别系统的平台,利用云计算资源和先进的人工智能技术,为开发者提供便捷高效的开发环境。Whisper语音识别系统是一种基于深度学习的语音识别技术。它使用了端到端的模型,能够将语音输入转换为文本输出。Whisper采用了自注意力机制和卷积神经网络,能够更好地处理不同语音信号的变化和噪音。
通过本实验,开发者可以学习如何使用云计算资源优化模型训练流程、使用Whisper_AI进行语音识别处理、应用LoRA等微调技术提升模型性能。本实验还将帮助开发者掌握数据预处理、模型训练和结果评估等关键步骤。
1.2 适用对象
- 企业
- 个人开发者
- 高校学生
1.3 案例时间
本案例总时长预计120分钟。
1.4 案例流程
说明:
- 用户登录华为云开发者空间-Notebook进行环境配置;
- 下载预训练数据集和测试数据集;
- 训练和微调Whisper_base语音识别模型;
- 推理模型实现语音识别。
1.5 资源总览
本案例预计花费0元。
资源名称 | 规格 | 单价(元) | 时长(分钟) |
开发者空间-Notebook | euler2.9-py310-torch2.1.0-cann8.0-openmind0.9.1-notebook | 0 | 120 |
最新案例动态,请查阅 《基于开发者空间Notebook进行LoRA微调Whisper_base实现语音识别》。小伙伴快来领取华为开发者空间进行实操体验吧!
2 环境配置
2.1 开发者空间昇腾Notebook资源配置
详细步骤请 参考案例步骤2.1。
2.2 环境配置
进入Notebook后,点击终端。
在终端输入以下命令完成数据集和库的下载。
- kagglehub:下载数据集;
- datasets:支持多种格式的数据集,并提供方便的数据处理工具;
- transformers:包含了大量预训练的语音处理模型;
- librosa:一个用于音频分析的Python库,提供了音频信号处理的各个功能,如音频读取、特征提取等;
- peft:提供了参数高效微调的方法,可以帮助在保持模型性能的同时减少微调所需的参数量;
- torch:提供了灵活的张量计算和动态计算图功能;
- ffmpeg:可以用于视频和音频的转换、剪辑、编码等操作。
3 下载数据集和预训练模型
3.1 下载预训练数据
新建文件夹,在左侧工程目录空白处鼠标右击新建文件夹,设置名称为data。
新建文件,在data文件夹点击鼠标右键,选择创建文件,设置名称为 data.py。
将以下代码复制到data.py文件中,用来下载预训练数据。
返回终端,进入data目录下,运行data.py文件,执行预训练代码完成数据集下载。
下载完毕后在终端输入:pwd获取当前路径。
将预训练语音数据移动到data文件的目录下。
3.2 下载测试数据
新建文件,在data文件夹点击鼠标右键,选择创建文件,设置名称为data_ce.py
将以下代码复制到data_ce.py文件中,用来下载测试数据集。
返回终端,运行data_ce.py文件,下载测试所需的数据集。
下载完毕后在data文件夹目录下新建wavs文件夹,并将测试所需的数据集移动到wavs文件夹内。
首先,获取wavs文件夹当前路径,终端进入到wavs文件夹下输入pwd获取当前路径。
获取到wavs文件夹路径后,将下载的测试数据集移动到wavs文件夹下。
3.3 下载预训练模型
在Notebook主目录下创建文件夹,将文件夹名称设置为pretrained_model,用来存放下载的预训练模型。
在终端进入到pretrained_model文件夹目录下,并将以下命令复制到终端进行预训练模型下载。
下载完毕后进行压缩。
解压后内容如下。
4 语音识别
4.1 处理数据
选取100个样本,移除不需要的列,将数据统一调整为16khz,提高模型训练效率,统一数据格式的一致性,将数据转化为模型可接受的输入格式。
在pretrained_model目录下新建prepared_common_voice文件夹,用来保存处理后的数据。
在Notebook主目录下创建文件夹,名称为whisper_api。
在whisper_api文件夹内创建文件名为preprocess_data.py。
将以下代码复制到preprocess_data.py文件中。
注:将以下路径进行更改
model_name_or_path:"/opt/huawei/edu-apaas/src/init/pretrained_model/whisper_base"(预训练模型路径);
dataset_name:"/opt/huawei/edu-apaas/src/init/data/1/common_voice_zh_CN"(训练数据集保存的文件路径);
prepared_dataset_path:"/opt/huawei/eduapaas/src/init/pretrained_model/prepared_common_voice"(创建的preparde_common_voice文件夹路径)。
返回终端页面,进行MP3格式解码包的升级,将以下命令复制到终端中运行。
进入到whisper_api文件夹目录下,运行preprocess_data.py。
4.2 设置LoRA参数
LoRA(Low-Rank Adaptation)是一种轻量级微调方法。它适用于在预训练模型上进行微调的一种技术。在传统的微调方法中,所有参数都会被更新,但这会导致计算和存储开销较大。相比之下,LoRA通过将参数分解为两个低秩矩阵,只更新其中一个矩阵,从而减少了计算和存储开销。这种方法在保存模型性能的同时,大大降低了模型的复杂性。它在轻量级应用场景下具有很好的效果,可以提高模型的效率和可用性。
设置LoRA参数中,主要通过设置原始模型中低秩矩阵的大小以及缩放因子,用于控制LoRA更新速度,以及将dropout参数设置到0.05左右来增加模型的泛化能力。
将以下代码复制到终端中,进行torch-NPU下载。
将以下命令复制到终端进行transformers升级。注:报错和警告可以忽略。
在whisper_api文件夹中新建文件,名称为load_model.py。
将以下代码复制到load_model.py文件中,用于设置LoRA参数的功能。
注:将以下路径进行修改:
model_name_or_path:"/opt/huawei/edu-apaas/src/init/pretrained_model/whisper_base"(预训练模型路径)。
运行load_model.py文件,完成LoRA参数设置。
4.3 微调模型
微调模型可以帮助模型学习到更多的任务相关特征,从而提高性能。通过特定的数据,可以使模型更好的在特定领域的语音数据,提高识别的准确性、改进性能。
在终端输入以下命令,解决依赖包冲突问题。注:报错和警告可以忽略。
在pretrained_model文件夹下创建checkpoint_1000_samples文件夹保存LoRA模型。
在whisper_api文件夹下创建文件名为train_model.py。
将以下代码复制到train_model.py文件中,进行模型微调训练。
注:将以下路径进行修改:
model_name_or_path:"/opt/huawei/edu-apaas/src/init/pretrained_model/whisper_base"(修改为预训练模型路径);
prepared_dataset_path:"/opt/huawei/edu-apaas/src/init/pretrained_model/prepared_common_voice"(修改为保存预处理后的数据文件路径);
运行train_model.py文件,实现模型微调。
4.4 推理模型实现语音识别
模型推理是指已经训练好的模型对新的数据进行预测或生成的过程。确保在特定领域识别的准确性,具体的流程包括:加载LoRA模型配置、加载基础模型、构建LoRA模型、合并模型、加载分词器和处理器、构建pipeline、加载音频文件、进行推理、保存结果。
在Notebook主目录下创建文件夹,名称为**output,**用来后续保存输出内容。
在whisper_api文件夹中创建文件,名称设置为save_and_infer.py。
注意:将以下路径进行修改:
peft_model_id:"/opt/huawei/edu-apaas/src/init/pretrained_model/checkpoint_1000_samples"(LoRA模型保存的路径),
output_directory:"/opt/huawei/edu-apaas/src/init/output"(创建的output文件夹路径)。
在终端输入以下命令进行模型测试。
注:运行结果较慢,请耐心等待,终端会实时输出转换结果。
至此,LoRA微调whisper_base实现语音识别到此结束。