Whisper是由OpenAI开发的一种通用语音识别模型,具备多语言语音识别、翻译和语言检测能力。该模型基于大规模多样化的音频数据进行训练,能够有效应对不同口音、背景噪声及专业术语,在语音转文本任务中表现出较高的准确性和鲁棒性。
其支持多种音频格式和实时处理特性,使其广泛应用于语音交互、会议记录、字幕生成、内容审核等多个领域。Whisper的开源版本为语音技术的研究与应用提供了重要基础,尤其在与边缘计算设备(如搭载NPU的嵌入式芯片)结合时,可实现低延迟、高效率的端侧语音处理,进一步拓展了其在物联网、智能助理、远程教育、跨境通信等场景中的实用价值。
Anaconda是一个流行的开源软件包管理和环境管理系统,用于科学计算、数据分析和大数据处理,特别是在Python环境中。它包含了许多常用的科学计算和数据分析的软件包,并提供了一个方便的方式来管理这些软件包的安装、更新和环境配置。以下是Anaconda的主要特点和用途:
提供的虚拟机系统内已预装Python 3.10及RKNN-Toolkit 2.1.0,专为模型转换与量化打造。若需使用其他版本Python或相关工具,推荐在虚拟机中另行安装Anaconda以避免环境冲突。虚拟机系统来自“ELF 2开发板资料包”的“08-开发环境”路径。
可通过以下两种方式获取安装文件:
安装步骤(上传脚本至虚拟机后执行):
# 赋予脚本执行权限
elf@ubuntu:~$ chmod +x Miniconda3-4.7.12.1-Linux-x86_64.sh
# 执行安装脚本
elf@ubuntu:~$ ./Miniconda3-4.7.12.1-Linux-x86_64.sh
执行脚本后按Enter键,输入“yes”同意协议,设置安装路径后等待安装完成。若出现硬件架构提示(如“Your machine hardware does not appear to be aarch64”),仍输入“yes”继续。
conda操作指令跨平台(支持Linux/Windows),以下为虚拟机环境中的操作示范:
conda env list
执行后将显示已创建的虚拟环境及路径,示例输出:
(base) elf@ubuntu:~$ conda env list
# conda environments:
#
base /home/elf/miniconda3
conda create --name <虚拟环境名称> python=<版本号>
示例(创建名为myenv、Python 3.10的环境):
conda create --name myenv python=3.10
说明:不指定Python版本时,将安装Anaconda发行版默认版本。
conda activate <虚拟环境名称>
示例(激活myenv环境):
(base) elf@ubuntu:~$ conda activate myenv
(myenv) elf@ubuntu:~$
说明:激活后安装的包仅在当前环境可用,避免依赖冲突。
conda deactivate
说明:执行一次退出当前环境(返回base环境),再次执行退出base环境。
# 方式1:使用conda安装(推荐,自动处理依赖)
conda install <包名>
# 方式2:使用pip安装(conda无对应包时使用)
pip install <包名>
示例(安装numpy):
conda install numpy 或 pip install numpy
conda env remove --name <虚拟环境名称>
示例(删除myenv环境):
elf@ubuntu:~$ conda env remove --name myenv
说明:将删除指定环境及旗下所有安装包。
创建并激活专为Whisper部署设计的虚拟环境:
# 创建虚拟环境(Python 3.10)
elf@ubuntu:~$ conda create --name RKLLM-Toolkit-pyth3.10 python=3.10
# 激活虚拟环境
elf@ubuntu:~$ conda activate RKLLM-Toolkit-pyth3.10
# 激活后终端提示(验证)
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~$
RKNN-Toolkit2是瑞芯微电子开发的深度学习模型优化与推理工具,支持Caffe、TensorFlow、PyTorch等框架的模型转换为RKNN格式,提供模型转换、量化、推理等功能。主要面向瑞芯微SoC的AI应用开发,也可在PC平台进行模型预处理操作。
需先将以下文件拷贝到虚拟机中:
文件获取路径:“ELF 2开发板资料包\03-例程源码\03-4 AI例程源码\rknn-toolkit2-2.1.0\rknn-toolkit2\packages”。
安装步骤(在RKLLM-Toolkit-pyth3.10环境中执行):
# 安装依赖包(使用清华镜像加速)
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/qwen2_vl$ pip install -r requirements_cp310-2.1.0.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package
# 安装RKNN-Toolkit2
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/qwen2_vl$ pip install rknn_toolkit2-2.1.0+708089d1-cp310-cp310-linux_x86_64.whl -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package
RKNN-Toolkit-Lite2是瑞芯微为轻量级NPU(神经网络处理单元)提供的工具包,专注于简化深度学习模型在瑞芯微硬件平台的部署与推理过程,相比RKNN-Toolkit2更适配轻量级应用和低计算需求场景。
需先将“rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl”拷贝到ELF 2开发板中,文件获取路径:“ELF 2开发板资料包\03-例程源码\03-4 AI例程源码\rknn-toolkit2-2.1.0\rknn-toolkit-lite2\packages”。
安装步骤(在开发板终端执行):
# 更新apt源
elf@elf2-desktop:~$ sudo apt-get update
# 安装pip3
elf@elf2-desktop:~$ sudo apt-get install python3-pip
# 安装RKNN-Toolkit-Lite2(使用清华镜像加速)
elf@elf2-desktop:~$ pip install rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package
安装验证(启动Python交互式环境导入库):
# 启动Python3
elf@elf2-desktop:~$ python3
# 查看Python版本(确认环境)
Python 3.10.12 (main, Nov 6 2024, 20:22:13) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
# 导入RKNNLite库
>>> from rknnlite.api import RKNNLite
>>>
需使用瑞芯微提供的交叉编译工具,否则编译应用例程会报错。工具包名称:“gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz”。
下载后解压至虚拟机指定路径(如“/home/elf/work/”),后续编译时需指定该工具路径。
步骤如下:
# 解压压缩包
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ unzip rknn_model_zoo-2.1.0.zip
# 设置文件夹权限(避免后续操作权限不足)
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ chmod -R 755 rknn_model_zoo-2.1.0
# 进入whisper模型目录
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ cd rknn_model_zoo-2.1.0/examples/whisper/model
# 执行模型下载脚本
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0/examples/whisper/model$ sh download_model.sh
脚本执行完成后,将自动下载Whisper的encoder和decoder模型。
进入指定路径,执行转换命令(将ONNX格式模型转为RKNN格式,适配RK3588芯片):
# 进入whisper模型转换脚本目录
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ cd rknn_model_zoo-2.1.0/examples/whisper/python
# 转换encoder模型
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0/examples/whisper/python$ python3 convert.py ../model/whisper_encoder_base_20s.onnx rk3588
# 转换decoder模型
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0/examples/whisper/python$ python3 convert.py ../model/whisper_decoder_base_20s.onnx rk3588
模型转换正常后,需编译CPP例程并推送至开发板,步骤如下:
# 进入rknn_model_zoo根目录
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ cd rknn_model_zoo-2.1.0
# 设置交叉编译工具路径(替换为实际解压路径)
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0$ export GCC_COMPILER=/home/elf/work/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu
# 编译whisper应用例程(适配rk3588芯片,aarch64架构)
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0$ ./build-linux.sh -t rk3588 -a aarch64 -d whisper
编译完成后,生成文件将保存在“rknn_model_zoo-2.1.0/install/rk3588_linux_aarch64/rknn_whisper_demo”路径下,包含可执行文件、库文件、模型文件等。
将编译生成的“rknn_whisper_demo”文件夹内容拷贝到ELF 2开发板,注意:
在开发板终端进入部署目录,执行测试命令:
# 进入部署目录
elf@elf2-desktop:~$ cd rknn_whisper_demo
# 执行whisper推理 demo(格式:./可执行文件 encoder模型路径 decoder模型路径 测试音频路径)
elf@elf2-desktop:~/rknn_whisper_demo$ ./rknn_whisper_demo model/whisper_encoder_base_20s.rknn model/whisper_decoder_base_20s.rknn model/test.wav
正常执行后,终端将输出模型输入输出信息、初始化耗时、推理耗时及最终识别结果,示例输出:
model input num: 1, output num: 1
input tensors:
index=0, name=x, n_dims=3, dims=[1, 80, 2000], n_elems=160000, size=320000, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
output tensors:
index=0, name=out, n_dims=3, dims=[1, 1000, 512], n_elems=512000, size=1024000, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
-- init_whisper_encoder_model use: 72.816002 ms
model input num: 2, output num: 1
input tensors:
index=0, name=tokens, n_dims=2, dims=[1, 12], n_elems=12, size=96, fmt=UNDEFINED, type=INT64, qnt_type=AFFINE, zp=0, scale=1.000000
index=1, name=audio, n_dims=3, dims=[1, 1000, 512], n_elems=512000, size=1024000, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
output tensors:
index=0, name=out, n_dims=3, dims=[1, 12, 51865], n_elems=622380, size=1244760, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
-- init_whisper_decoder_model use: 238.526001 ms
-- read_mel_filters & read_vocab & read_audio use: 11.602000 ms
-- inference_whisper_model use: 1436.499023 ms
Whisper result: Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.
Real Time Factor (RTF): 1.436 / 5.855 = 0.245
