1
Whisper简介
Whisper是OpenAI开源的,识别语音识别能力已达到人类水准自动语音识别系统。Whisper作为一个通用的语音识别模型,它使用了大量的多语言和多任务的监督数据来训练,能够在英语语音识别上达到接近人类水平的鲁棒性和准确性。Whisper还可以进行多语言语音识别、语音翻译和语言识别等任务。Whisper的架构是一个简单的端到端方法,采用了编码器-解码器的Transformer模型,将输入的音频转换为对应的文本序列,并根据特殊的标记来指定不同的任务。

本教程针对语音识别Whisper的训练和部署到EASY-EAI-Orin-nano(RK3576)进行说明。
接下来对算法流程进行说明,whisper算法系统流程如下图所示:
预处理器流程:
编码器流程:
解码器流程:
2
Whisper模型训练
Whisper工程下载百度网盘下载链接:
https://pan.baidu.com/s/1rX422_7AUMNB_MvZRKL9CQ?pwd=1234(提取码: 1234)
数据集准备
在本例中,whisper-finetuning工程为whisper模型微调训练工程,该工程提供whisper数据转换,模型微调训练代码。本章节将以AiShell数据集演示whisper模型微调训练过程。
其中AiShell下载链接:
https://openslr.magicdatatech.com/resources/33/
AiShell数据转SRT
在本例中我们提供了AiShell数据集转成SRT的python脚本,请根据示例修改脚本内容,其中:
1. aishell_extract.py 解压AiShell数据集,解压后:
data_aishell
├── transcript
│ └── aishell_transcript_v0.8.txt
└── wav
├── dev
├── test
└── train
2. aishell2srt.py 将解压后的AiShell数据集转成SRT格式,其格式如下:
datas/data_aishell/wav/test/S0907/BAC009S0907W0352.wav 作为 此次 赛事 上 唯一 一 场 纯泰 式 规则 的 超级 战
datas/data_aishell/wav/test/S0907/BAC009S0907W0269.wav 苹果 正在 全力 以 赴 出售 尽 可能 多 的 智能 手机
datas/data_aishell/wav/test/S0907/BAC009S0907W0147.wav 从业 人员 五万 人
datas/data_aishell/wav/test/S0907/BAC009S0907W0495.wav 港媒 称 内地 人 不 穷 了 为 何 仍 爱 抢 学者 抢 习惯 了
3. 在本例中我们提供了create_data.py,将SRT数据转成训练数据,执行命令:
python create_data.py --data-file --language --output train.json
#suchas:
python create_data.py --data-file datas/data_aishell/train.txt --language zh --output train.json
转换后数据格式如下:
{"audio_path": "datas/data_aishell/wav/test/S0907/BAC009S0907W0352.wav", "text":"作为 此次 赛事 上 唯一 一 场 纯泰 式 规则 的 超级 战", "language": "zh", "prompt":""}
{"audio_path": "datas/data_aishell/wav/test/S0907/BAC009S0907W0269.wav", "text": "苹果 正在 全力 以 赴 出售 尽 可能 多 的 智能 手机", "language": "zh", "prompt":""}
{"audio_path": "datas/data_aishell/wav/test/S0907/BAC009S0907W0147.wav", "text": "从业 人员 五万 人", "language": "zh", "prompt":""}
{"audio_path": "datas/data_aishell/wav/test/S0907/BAC009S0907W0495.wav", "text": "港媒 称 内地 人 不 穷 了 为 何 仍 爱 抢 学者 抢 习惯 了", "language": "zh", "prompt":""}
模型训练
在本例中我们提供了run_finetuning.py用于模型训练,执行命令如下:
python run_finetuning.py --train-json --dev-json --model --save-dir
注:其中model可以为tiny, base, small, medium等值,程序会自动下载对应的模型;如果,model的值为本地模型文件,则程序会直接加载本地模型进行微调训练。训练好的模型将保存在save-dir目录下。
PT模型转ONNX
convert工程为whisper模型转换工程,提供了将pt模型转rknn过程的所有脚本。在本例中我们提供了export_onnx.py脚本将pt模型转成onnx,转换命令:
pip install openai-whisper==20231117
python export_onnx.py --model_type
注:
model_type可以为tiny, base, small, medium等值,程序会自动下载对应的模型。如果model的值为本地模型文件,则程序会直接加载本地模型进行转换。同时,onnx模型保存地址需要修改export_onnx.py代码。
3
rknn-toolkit模型转换
rknn-toolkit模型转换环境搭建
onnx模型需要转换为rknn模型才能在EASY-EAI-Orin-nano运行,所以需要先搭建rknn-toolkit模型转换工具的环境。当然tensorflow、tensroflow lite、caffe、darknet等也是通过类似的方法进行模型转换,只是本教程onnx为例。
概 述
模型转换环境搭建流程如下所示:
下载模型转换工具
为了保证模型转换工具顺利运行,请下载网盘里“06.AI算法开发/01.rknn-toolkit2模型转换工具/rknn-toolkit2-v2.3.0/docker/rknn-toolkit2-v2.3.0-cp38-docker.tar.gz”。
网盘下载链接:
https://pan.baidu.com/s/1J86chdq1klKFnpCO1RCcEA?pwd=1234(提取码:1234)
把工具移到ubuntu20.04
把下载完成的docker镜像移到我司的虚拟机ubuntu20.04的rknn-toolkit2目录,如下图所示:
运行模型转换工具环境
在该目录打开终端
执行以下指令加载模型转换工具docker镜像:
docker load --input rknn-toolkit2-v2.3.0-cp38-docker.tar.gz
执行以下指令进入镜像bash环境:
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb rknn-toolkit2:2.3.0-cp38 /bin/bash
现象如下图所示:
输入“python”加载python相关库,尝试加载rknn库,如下图环境测试成功:
至此,模型转换工具环境搭建完成。
模型转换为RKNN
EASY EAI Orin-nano支持.rknn后缀的模型的评估及运行,对于常见的tensorflow、tensroflow lite、caffe、darknet、onnx和Pytorch模型都可以通过我们提供的 toolkit 工具将其转换至 rknn 模型,而对于其他框架训练出来的模型,也可以先将其转至 onnx 模型再转换为 rknn 模型。模型转换操作流程入下图所示:
模型转换Demo下载
下载百度网盘链接:
https://pan.baidu.com/s/1C1lQN1U9YhKwpi6PwuyxxA?pwd=1234(提取码: 1234)
把whisper_convert_rk3576.tar.bz2解压到虚拟机,如下图所示:
进入模型转换工具docker环境
执行以下指令把工作区域映射进docker镜像,其中,/home/developer/rknn-toolkit2/model_convert_test为工作区域,/test为映射到docker镜像,/dev/bus/usb:/dev/bus/usb为映射usb到docker镜像
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /home/developer/rknn-toolkit2/model_convert_test:/test rknn-toolkit2:2.3.0-cp38 /bin/bash
执行成功如下图所示:
模型转换操作说明
1、模型转换Demo目录结构
2、 onnx模型转换为rknn模型
在本例中我们提供了rknn_convert.py脚本将onnx模型转成rknn,脚本代码清单如下所示:
import os
importurllib
importtraceback
importtime
importsys
importnumpy as np
importcv2
from rknn.apiimportRKNN
ONNX_MODEL ='./whisper_decoder_base_20s.onnx'
RKNN_MODEL ='./whisper_decoder_base_20s.rknn'
DATASET ='./pic_path.txt'
QUANTIZE_ON = False
if__name__ =='__main__':
# Create RKNN object
rknn =RKNN(verbose=True)
ifnot os.path.exists(ONNX_MODEL):
print('model not exist')
exit(-1)
#pre-process config
print('--> Config model')
rknn.config(target_platform ='rk3576')
print('done')
# Load ONNX model
print('--> Loading model')
ret = rknn.load_onnx(model=ONNX_MODEL)
ifret !=0:
print('Load model failed!')
exit(ret)
print('done')
# Build model
print('--> Building model')
ret = rknn.build(do_quantization=QUANTIZE_ON)
ifret !=0:
print('Build model failed!')
exit(ret)
print('done')
# Export RKNN model
print('--> Export RKNN model')
ret = rknn.export_rknn(RKNN_MODEL)
ifret !=0:
print('Export model failed!')
exit(ret)
print('done')
切换目录到模型转换工作目录:
cd /test/whisper_convert_rk3576
执行模型转换脚本,转换解码模型:
python rknn_convert.py
注:whisper是编码器-解码器的Transformer模型,所以encoder和decoder模型均需转换。生成模型如下图所示,模型将保存至output_path 路径,此模型可以在rknn环境和EASY EAI Orin-nano环境运行:
修改rknn_convert.py脚本的ONNX_MODEL和RKNN_MODEL,改为编码模型的信息。
执行模型转换脚本,转换编码模型:
至此,模型转换流程已完成。
4
模型部署示例
本小节展示Whisper模型的在EASY EAI Orin-nano的部署过程,本章章节使用解码模型whisper_decoder_base_20s.rknn和编码模型whisper_encoder_base_20s.rknn。
源码下载及说明
下载whisper C Demo示例文件
百度网盘链接:
https://pan.baidu.com/s/1ID5s2LAs_EdgHYcLds3Tvw?pwd=1234(提取码:1234)。
下载程序包移至ubuntu环境后,执行以下指令解压:
tar xvf whisper_C_demo.tar.bz2
下载解压后如下图所示:
例程编译
通过adb接口连接EASY-EAI-Orin-nano,
接下来需要通过adb把源码传输到板卡上,先切换目录然后执行以下指令:
adb push whisper_C_demo /userdata
登录到板子切换到例程目录执行编译操作
adb shell
cd /userdata/whisper_C_demo
chmod777build.sh
./build.sh
运行结果
编译成功后会得到whisper_demo可执行程序,切换到whisper_C_demo_release/目录:
cd whisper_C_demo_release/
进行中文语音识别测试:
./whisper_demo whisper_encoder_base_20s.rknn whisper_decoder_base_20s.rknn mel_80_filters.txt vocab_zh.txt zh12345678910_CN.wav
执行成功识别出中文语音内容,RTF值约为0.046:
进行英文语音识别测试,RTF值为0.055:
至此,whisper语音识别例程已成功在板卡运行。
- 随机文章
- 热门文章
- 热评文章
- 世界科幻动漫周执委会永久落户河南郑州,世界科幻动漫周执委会永久落户河南郑州
- 云南青年画家12年专注描绘大象的“人间烟火”,云南青年画家12年专注描绘大象的“人间烟火”
- 考古成果揭示蟠螭镜中的“文景之治”,考古成果揭示蟠螭镜中的“文景之治”
- 民族艺术绽放世界:延边歌舞团架起文化交流之桥,民族艺术绽放世界:延边歌舞团架起文化交流之桥
- 故宫博物院上线青少网站英文版、繁体版,故宫博物院上线青少网站英文版、繁体版
- 李敬泽谈经典阅读:让“情感考古”照见文化根脉,李敬泽谈经典阅读:让“情感考古”照见文化根脉
- 跨越时空的对话:浙江南湖“红船星河”闪耀雪域高原,跨越时空的对话:浙江南湖“红船星河”闪耀雪域高原
- 乌兰毛都草原上的札萨克图刺绣:指尖上盛开炽热之花,乌兰毛都草原上的札萨克图刺绣:指尖上盛开炽热之花
- “民歌大观”走进阿诗玛的故乡石林 天籁飘荡在世界遗产地,“民歌大观”走进阿诗玛的故乡石林 天籁飘荡在世界遗产地
- 西藏自治区成立60周年重点影片《天宝》西藏首映仪式在拉萨举行,西藏自治区成立60周年重点影片《天宝》西藏首映仪式在拉萨举行
- 1原创粤语音乐剧《大状王》内地火爆上演 业者望助力行业发展,原创粤语音乐剧《大状王》内地火爆上演 业者望助力行业发展
- 2一抹青色入夏来 “青·韵”特展亮相成都金沙,一抹青色入夏来 “青·韵”特展亮相成都金沙
- 3乌兰毛都草原上的札萨克图刺绣:指尖上盛开炽热之花,乌兰毛都草原上的札萨克图刺绣:指尖上盛开炽热之花
- 4正青春正时尚!广东推动粤剧“破圈”拥抱年轻一代,正青春正时尚!广东推动粤剧“破圈”拥抱年轻一代
- 5第二届中国(沈阳)喜剧电影周打造全民共享光影盛宴,第二届中国(沈阳)喜剧电影周打造全民共享光影盛宴
- 6原创话剧《一张报纸的抗战》将艺术呈现中国报人形象,原创话剧《一张报纸的抗战》将艺术呈现中国报人形象
- 776件明清扇面山水珍品在广西南宁展出 游客纷至沓来,76件明清扇面山水珍品在广西南宁展出 游客纷至沓来
- 8三部东北抗联主题图书在吉林长春发布,三部东北抗联主题图书在吉林长春发布
- 9“蝠桃瓶”文创产品引发“不尊重历史”争议?上海博物馆回应,“蝠桃瓶”文创产品引发“不尊重历史”争议?上海博物馆回应
- 10中国原创话剧《杂拌、折罗或沙拉》纪念版出海日本,留学生称“深感文化自豪”,中国原创话剧《杂拌、折罗或沙拉》纪念版出海日本,留学生称“深感文化自豪”
- 1《龙·中华民族的图腾》新书分享会在中国考古博物馆举办,《龙·中华民族的图腾》新书分享会在中国考古博物馆举办
- 22025上合组织国家电影节在重庆闭幕,2025上合组织国家电影节在重庆闭幕
- 3第十四届中国儿童艺术节嘉兴分会场开幕 见证央地合作硕果,第十四届中国儿童艺术节嘉兴分会场开幕 见证央地合作硕果
- 4捡到身份证怎么办?律师:交给公安机关最稳妥,捡到身份证怎么办?律师:交给公安机关最稳妥
- 5中国圆号重奏团德国巡演奏响东方旋律,中国圆号重奏团德国巡演奏响东方旋律
- 6上海迎来普希金文学大展,上海迎来普希金文学大展
- 7(八闽千姿)“刀”耕不辍 福州古稀匠人传承软木画,(八闽千姿)“刀”耕不辍 福州古稀匠人传承软木画
- 8700余中俄青少年齐聚牡丹江开展文化艺术交流,700余中俄青少年齐聚牡丹江开展文化艺术交流
- 9“良渚文明的五重奏”国风系列动画短视频全球发布,“良渚文明的五重奏”国风系列动画短视频全球发布
- 10小暑节气,也要吃饺子?,小暑节气,也要吃饺子?