<ul id="gu0q4"></ul>
  • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
    <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    • <samp id="gu0q4"></samp>

      面向嵌入式場景:ELF 2 開發(fā)板 Whisper 模型本地化部署與優(yōu)化教程

      發(fā)布時間:2025-11-05 17:52:36

      技術貼 | 如何在ELF 2開發(fā)板上完成Whisper的本地化部署

      Whisper是由OpenAI開發(fā)的一種通用語音識別模型,具備多語言語音識別、翻譯和語言檢測能力。該模型基于大規(guī)模多樣化的音頻數(shù)據(jù)進行訓練,能夠有效應對不同口音、背景噪聲及專業(yè)術語,在語音轉(zhuǎn)文本任務中表現(xiàn)出較高的準確性和魯棒性。

      其支持多種音頻格式和實時處理特性,使其廣泛應用于語音交互、會議記錄、字幕生成、內(nèi)容審核等多個領域。Whisper的開源版本為語音技術的研究與應用提供了重要基礎,尤其在與邊緣計算設備(如搭載NPU的嵌入式芯片)結合時,可實現(xiàn)低延遲、高效率的端側語音處理,進一步拓展了其在物聯(lián)網(wǎng)、智能助理、遠程教育、跨境通信等場景中的實用價值。

      一、環(huán)境搭建

      1. Anaconda安裝及使用

      1.1 Anaconda介紹

      Anaconda是一個流行的開源軟件包管理和環(huán)境管理系統(tǒng),用于科學計算、數(shù)據(jù)分析和大數(shù)據(jù)處理,特別是在Python環(huán)境中。它包含了許多常用的科學計算和數(shù)據(jù)分析的軟件包,并提供了一個方便的方式來管理這些軟件包的安裝、更新和環(huán)境配置。以下是Anaconda的主要特點和用途:

      • 軟件包管理:提供conda包管理工具,可輕松安裝、更新和刪除軟件包,支持數(shù)千個科學計算相關包(如NumPy、Pandas、Matplotlib)。
      • 環(huán)境管理:允許創(chuàng)建多個獨立Python環(huán)境,每個環(huán)境可配置不同Python版本和軟件包集合,避免版本沖突。
      • 跨平臺:支持Windows、macOS和Linux,便于開發(fā)人員共享和復制數(shù)據(jù)分析項目。
      • 集成開發(fā)環(huán)境(IDE):包含Jupyter Notebook等工具,支持在瀏覽器中創(chuàng)建結合代碼、公式、可視化的文檔。
      • 大數(shù)據(jù)支持:適配Apache Spark等分布式計算平臺,可處理大規(guī)模數(shù)據(jù)和復雜計算任務。

      1.2 Anaconda安裝

      提供的虛擬機系統(tǒng)內(nèi)已預裝Python 3.10及RKNN-Toolkit 2.1.0,專為模型轉(zhuǎn)換與量化打造。若需使用其他版本Python或相關工具,推薦在虛擬機中另行安裝Anaconda以避免環(huán)境沖突。虛擬機系統(tǒng)來自“ELF 2開發(fā)板資料包”的“08-開發(fā)環(huán)境”路徑。

      可通過以下兩種方式獲取安裝文件:

      安裝步驟(上傳腳本至虛擬機后執(zhí)行):

      # 賦予腳本執(zhí)行權限
      elf@ubuntu:~$ chmod +x Miniconda3-4.7.12.1-Linux-x86_64.sh
      
      # 執(zhí)行安裝腳本
      elf@ubuntu:~$ ./Miniconda3-4.7.12.1-Linux-x86_64.sh

      執(zhí)行腳本后按Enter鍵,輸入“yes”同意協(xié)議,設置安裝路徑后等待安裝完成。若出現(xiàn)硬件架構提示(如“Your machine hardware does not appear to be aarch64”),仍輸入“yes”繼續(xù)。

      安裝驗證:安裝完成后重新打開終端,命令行前出現(xiàn)“(base)”字樣,代表Anaconda安裝成功。

      1.3 Anaconda基本使用

      conda操作指令跨平臺(支持Linux/Windows),以下為虛擬機環(huán)境中的操作示范:

      • 查看虛擬環(huán)境列表
        conda env list

        執(zhí)行后將顯示已創(chuàng)建的虛擬環(huán)境及路徑,示例輸出:

        (base) elf@ubuntu:~$ conda env list
        # conda environments:
        #
        base                  /home/elf/miniconda3
      • 創(chuàng)建新虛擬環(huán)境
        conda create --name <虛擬環(huán)境名稱> python=<版本號>

        示例(創(chuàng)建名為myenv、Python 3.10的環(huán)境):

        conda create --name myenv python=3.10

        說明:不指定Python版本時,將安裝Anaconda發(fā)行版默認版本。

      • 激活虛擬環(huán)境
        conda activate <虛擬環(huán)境名稱>

        示例(激活myenv環(huán)境):

        (base) elf@ubuntu:~$ conda activate myenv
        (myenv) elf@ubuntu:~$

        說明:激活后安裝的包僅在當前環(huán)境可用,避免依賴沖突。

      • 退出虛擬環(huán)境
        conda deactivate

        說明:執(zhí)行一次退出當前環(huán)境(返回base環(huán)境),再次執(zhí)行退出base環(huán)境。

      • 安裝庫
        # 方式1:使用conda安裝(推薦,自動處理依賴)
        conda install <包名>
        
        # 方式2:使用pip安裝(conda無對應包時使用)
        pip install <包名>

        示例(安裝numpy):

        conda install numpy 或 pip install numpy
      • 刪除虛擬環(huán)境
        conda env remove --name <虛擬環(huán)境名稱>

        示例(刪除myenv環(huán)境):

        elf@ubuntu:~$ conda env remove --name myenv

        說明:將刪除指定環(huán)境及旗下所有安裝包。

      1.4 創(chuàng)建用于部署的虛擬環(huán)境

      創(chuàng)建并激活專為Whisper部署設計的虛擬環(huán)境:

      # 創(chuàng)建虛擬環(huán)境(Python 3.10)
      elf@ubuntu:~$ conda create --name RKLLM-Toolkit-pyth3.10 python=3.10
      
      # 激活虛擬環(huán)境
      elf@ubuntu:~$ conda activate RKLLM-Toolkit-pyth3.10
      
      # 激活后終端提示(驗證)
      (RKLLM-Toolkit-pyth3.10) elf@ubuntu:~$

      二、RKNN-Toolkit2介紹及安裝

      2.1 RKNN-Toolkit2介紹

      RKNN-Toolkit2是瑞芯微電子開發(fā)的深度學習模型優(yōu)化與推理工具,支持Caffe、TensorFlow、PyTorch等框架的模型轉(zhuǎn)換為RKNN格式,提供模型轉(zhuǎn)換、量化、推理等功能。主要面向瑞芯微SoC的AI應用開發(fā),也可在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開發(fā)板資料包\03-例程源碼\03-4 AI例程源碼\rknn-toolkit2-2.1.0\rknn-toolkit2\packages”。

      安裝步驟(在RKLLM-Toolkit-pyth3.10環(huán)境中執(zhí)行):

      # 安裝依賴包(使用清華鏡像加速)
      (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
      注意事項:若安裝中出現(xiàn)庫版本沖突報錯,再次執(zhí)行安裝命令即可自動解決版本兼容問題。

      三、RKNN-Toolkit-Lite2介紹及安裝

      3.1 RKNN-Toolkit-Lite2介紹

      RKNN-Toolkit-Lite2是瑞芯微為輕量級NPU(神經(jīng)網(wǎng)絡處理單元)提供的工具包,專注于簡化深度學習模型在瑞芯微硬件平臺的部署與推理過程,相比RKNN-Toolkit2更適配輕量級應用和低計算需求場景。

      3.2 開發(fā)板安裝RKNN-Toolkit-Lite2

      需先將“rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl”拷貝到ELF 2開發(fā)板中,文件獲取路徑:“ELF 2開發(fā)板資料包\03-例程源碼\03-4 AI例程源碼\rknn-toolkit2-2.1.0\rknn-toolkit-lite2\packages”。

      安裝步驟(在開發(fā)板終端執(zhí)行):

      # 更新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交互式環(huán)境導入庫):

      # 啟動Python3
      elf@elf2-desktop:~$ python3
      
      # 查看Python版本(確認環(huán)境)
      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
      >>> 
      驗證標準:導入庫時未出現(xiàn)報錯,代表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/”),后續(xù)編譯時需指定該工具路徑。

      四、下載whisper模型

      步驟如下:

      1. 將“rknn_model_zoo-2.1.0.zip”壓縮包上傳至虛擬機(文件獲取路徑:“ELF 2開發(fā)板資料包\03-例程源碼\03-4 AI例程源碼\”,或從GitHub下載:airockchip/rknn_model_zoo at v2.1.0)。
      2. 執(zhí)行解壓與權限設置命令:
      # 解壓壓縮包
      (RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ unzip rknn_model_zoo-2.1.0.zip
      
      # 設置文件夾權限(避免后續(xù)操作權限不足)
      (RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ chmod -R 755 rknn_model_zoo-2.1.0
      • 進入模型下載路徑,執(zhí)行下載腳本:
      # 進入whisper模型目錄
      (RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ cd rknn_model_zoo-2.1.0/examples/whisper/model
      
      # 執(zhí)行模型下載腳本
      (RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/rknn_model_zoo-2.1.0/examples/whisper/model$ sh download_model.sh

      腳本執(zhí)行完成后,將自動下載Whisper的encoder和decoder模型。

      五、模型轉(zhuǎn)換成rknn格式

      進入指定路徑,執(zhí)行轉(zhuǎn)換命令(將ONNX格式模型轉(zhuǎn)為RKNN格式,適配RK3588芯片):

      # 進入whisper模型轉(zhuǎn)換腳本目錄
      (RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work$ cd rknn_model_zoo-2.1.0/examples/whisper/python
      
      # 轉(zhuǎn)換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
      
      # 轉(zhuǎn)換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
      轉(zhuǎn)換驗證:轉(zhuǎn)換完成后,在模型目錄(../model/)下將生成“whisper_encoder_base_20s.rknn”和“whisper_decoder_base_20s.rknn”文件,代表轉(zhuǎn)換成功。

      六、應用編譯

      模型轉(zhuǎn)換正常后,需編譯CPP例程并推送至開發(fā)板,步驟如下:

      # 進入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”路徑下,包含可執(zhí)行文件、庫文件、模型文件等。

      七、板卡部署及測試

      7.1 文件拷貝

      將編譯生成的“rknn_whisper_demo”文件夾內(nèi)容拷貝到ELF 2開發(fā)板,注意:

      • 庫文件(.so后綴)需拷貝到開發(fā)板的“/usr/lib/”目錄(確保運行時可調(diào)用)。
      • 可執(zhí)行文件、模型文件(.rknn后綴)、測試音頻文件(如test.wav)可拷貝到開發(fā)板任意路徑(如“~/rknn_whisper_demo/”)。

      7.2 執(zhí)行測試

      在開發(fā)板終端進入部署目錄,執(zhí)行測試命令:

      # 進入部署目錄
      elf@elf2-desktop:~$ cd rknn_whisper_demo
      
      # 執(zhí)行whisper推理 demo(格式:./可執(zhí)行文件 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 測試結果說明

      正常執(zhí)行后,終端將輸出模型輸入輸出信息、初始化耗時、推理耗時及最終識別結果,示例輸出:

      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”一致(如采樣率、位深、聲道數(shù)),否則可能導致識別失敗。

      其它推薦:

      推薦閱讀:

      /* 53客服*/ /* 百度統(tǒng)計*/ /* 百度站長*/
      <ul id="gu0q4"></ul>
    • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
      <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      • <samp id="gu0q4"></samp>