面向嵌入式场景:ELF 2 开发板 Whisper 模型本地化部署与优化教程

发布时间:2025-11-05 17:52:36

技术贴 | 如何在ELF 2开发板上完成Whisper的本地化部署

Whisper是由OpenAI开发的一种通用语音识别模型,具备多语言语音识别、翻译和语言检测能力。该模型基于大规模多样化的音频数据进行训练,能够有效应对不同口音、背景噪声及专业术语,在语音转文本任务中表现出较高的准确性和鲁棒性。

其支持多种音频格式和实时处理特性,使其广泛应用于语音交互、会议记录、字幕生成、内容审核等多个领域。Whisper的开源版本为语音技术的研究与应用提供了重要基础,尤其在与边缘计算设备(如搭载NPU的嵌入式芯片)结合时,可实现低延迟、高效率的端侧语音处理,进一步拓展了其在物联网、智能助理、远程教育、跨境通信等场景中的实用价值。

一、环境搭建

1. Anaconda安装及使用

1.1 Anaconda介绍

Anaconda是一个流行的开源软件包管理和环境管理系统,用于科学计算、数据分析和大数据处理,特别是在Python环境中。它包含了许多常用的科学计算和数据分析的软件包,并提供了一个方便的方式来管理这些软件包的安装、更新和环境配置。以下是Anaconda的主要特点和用途:

  • 软件包管理:提供conda包管理工具,可轻松安装、更新和删除软件包,支持数千个科学计算相关包(如NumPy、Pandas、Matplotlib)。
  • 环境管理:允许创建多个独立Python环境,每个环境可配置不同Python版本和软件包集合,避免版本冲突。
  • 跨平台:支持Windows、macOS和Linux,便于开发人员共享和复制数据分析项目。
  • 集成开发环境(IDE):包含Jupyter Notebook等工具,支持在浏览器中创建结合代码、公式、可视化的文档。
  • 大数据支持:适配Apache Spark等分布式计算平台,可处理大规模数据和复杂计算任务。

1.2 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”继续。

安装验证:安装完成后重新打开终端,命令行前出现“(base)”字样,代表Anaconda安装成功。

1.3 Anaconda基本使用

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

    说明:将删除指定环境及旗下所有安装包。

1.4 创建用于部署的虚拟环境

创建并激活专为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介绍及安装

2.1 RKNN-Toolkit2介绍

RKNN-Toolkit2是瑞芯微电子开发的深度学习模型优化与推理工具,支持Caffe、TensorFlow、PyTorch等框架的模型转换为RKNN格式,提供模型转换、量化、推理等功能。主要面向瑞芯微SoC的AI应用开发,也可在PC平台进行模型预处理操作。

2.2 RKNN-Toolkit2安装

需先将以下文件拷贝到虚拟机中:

  • rknn_toolkit2-2.1.0+708089d1-cp310-cp310-linux_x86_64.whl
  • requirements_cp310-2.1.0.txt

文件获取路径:“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介绍及安装

3.1 RKNN-Toolkit-Lite2介绍

RKNN-Toolkit-Lite2是瑞芯微为轻量级NPU(神经网络处理单元)提供的工具包,专注于简化深度学习模型在瑞芯微硬件平台的部署与推理过程,相比RKNN-Toolkit2更适配轻量级应用和低计算需求场景。

3.2 开发板安装RKNN-Toolkit-Lite2

需先将“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
>>> 
验证标准:导入库时未出现报错,代表RKNN-Toolkit-Lite2安装成功。

3.3 交叉编译工具安装

需使用瑞芯微提供的交叉编译工具,否则编译应用例程会报错。工具包名称:“gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz”。

下载链接:https://gitcode.com/open-source-toolkit/72060/blob/main/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz

下载后解压至虚拟机指定路径(如“/home/elf/work/”),后续编译时需指定该工具路径。

四、下载whisper模型

步骤如下:

  1. 将“rknn_model_zoo-2.1.0.zip”压缩包上传至虚拟机(文件获取路径:“ELF 2开发板资料包\03-例程源码\03-4 AI例程源码\”,或从GitHub下载:airockchip/rknn_model_zoo at v2.1.0)。
  2. 执行解压与权限设置命令:
# 解压压缩包
(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模型。

五、模型转换成rknn格式

进入指定路径,执行转换命令(将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
转换验证:转换完成后,在模型目录(../model/)下将生成“whisper_encoder_base_20s.rknn”和“whisper_decoder_base_20s.rknn”文件,代表转换成功。

六、应用编译

模型转换正常后,需编译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”路径下,包含可执行文件、库文件、模型文件等。

七、板卡部署及测试

7.1 文件拷贝

将编译生成的“rknn_whisper_demo”文件夹内容拷贝到ELF 2开发板,注意:

  • 库文件(.so后缀)需拷贝到开发板的“/usr/lib/”目录(确保运行时可调用)。
  • 可执行文件、模型文件(.rknn后缀)、测试音频文件(如test.wav)可拷贝到开发板任意路径(如“~/rknn_whisper_demo/”)。

7.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

7.3 测试结果说明

正常执行后,终端将输出模型输入输出信息、初始化耗时、推理耗时及最终识别结果,示例输出:

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
自定义测试:可自行制作音频文件进行测试,需确保音频格式与例程中的“test.wav”一致(如采样率、位深、声道数),否则可能导致识别失败。

其它推荐:

推荐阅读:

/* 53客服*/ /* 百度统计*/ /* 百度站长*/