ModelZoo模型示例
ModelZoo提供了帮助用户快速将模型移植到后摩设备上的模型合集,其中包括推理、精度和性能评估等一套完整的代码和工具。
示例介绍
ModelZoo的 models 目录下有部分C++示例支持交叉编译后在Android Native环境运行推理,目前包括:
Whisper-Medium
Qwen3-VL
cosyvoice3
样例运行
示例需在Linux主机端Docker环境中完成构建与模型准备;由于Android设备与主机在架构及运行环境上存在差异,无法直接本地编译运行,因此需通过Android NDK进行交叉编译生成设备可执行程序,并依赖驱动SDK与Runtime提供运行支持。
下面以Whisper模型示例为例,介绍如何在Android上完成模型推理。
该示例位于开发样例包中 houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper/cpp 目录下。
整体流程如下:
在执行本章节前,请确保已完成Android端Runtime推理环境部署。
图 3 模型应用示例部署流程
编译示例程序与模型准备
配置主机端Docker镜像环境 完成后,在主机端Docker镜像中,继续执行下面步骤,编译示例程序并准备模型:
进入模型示例目录:
cd houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper
下载编译后模型文件:
python3 get_model.py --type hmm
获得编译后的模型,存放在
houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper/output/xh2目录下,共有whisper_prefill.hmm、whisper_encode.hmm及whisper_decode.hmm三个模型,并生成了houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper/whisper-medium/tokenizer.json文件。进入示例程序编译目录:
cd houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper/cpp
执行下面指令编译可执行文件:
./build_ndk.sh
编译后生成
houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper/android/whisper-demo可执行文件。在
houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper目录下创建models文件夹:mkdir models
执行下面指令将下载的模型文件拷贝到
models文件夹中:cp output/xh2/whisper_prefill.hmm models cp output/xh2/whisper_encode.hmm models cp output/xh2/whisper_decode.hmm models cp whisper-medium/tokenizer.json models cp ../../../data/audio/audio.mp3 models
audio.mp3位于houmo-examples_<release>/houmo-examples-xh2/data/audio目录下。
退出Docker镜像:
exit
推送模型文件
执行下面步骤,在主机端,推送模型文件到Android设备。
将下载的模型文件
$PWD/houmo-examples-xh2/models/asr/whisper/models传输到Android设备的/data/houmo目录:cd $PWD/houmo-examples-xh2/models/asr/whisper adb push models /data/houmo
$PWD 所指定的目录为Docker容器创建时关联目录。
将可执行文件传输到Android设备的
/data/houmo目录:cd android adb push whisper-demo /data/houmo/models
推理模型
通过adb进入Android设备开发板命令行,并获取root权限:
adb shell su
在Android设备端,确保下面环境变量已设置:
export HOUMO_TARGET=xh2 export TCIM_BACKEND=Xh2HalBackend export TCIM_RUNTIME_PATH=$TCIM_RUNTIME export LD_LIBRARY_PATH=$DRV_HAL:${TCIM_RUNTIME_PATH}/lib其中
$DRV_HAL应替换为驱动安装后系统软件动态库hal目录,如/data/houmo/houmo-drv-xh2/hal;$TCIM_RUNTIME为TCIM 运行时开发工具的路径,如/data/houmo/houmo-tcim-runtime-xh2。在Android设备端,执行下面指令推理模型:
cd /data/houmo/models ./whisper-demo \ --audio_path audio.mp3 \ --encode_path whisper_encode.hmm \ --decode_path whisper_decode.hmm \ --prefill_path whisper_prefill.hmm \ --tokenizer_path tokenizer.json