whisper.cpp: Android端测试 -- Android端手机部署音频大模型

whisper.cpp: Android端测试


1.环境需要

以下是经实验验证可行的环境参考,也可尝试其他版本。

(1)PC:Ubuntu 22.04.4

(2)硬件设备:Android 手机

(3)软件环境:如下表所示

工具 版本 安装
Anaconda 2021.05 参考:Anaconda3安装及使用
cmake 3.26.0 conda install -c conda-forge cmake
make 4.4.1 conda install -c conda-forge make
ndk android-ndk-r26c 官网下载解压,设置环境变量
adb 1.0.41 conda install -c conda-forge adb
git 2.34.1 sudo apt-get update
sudo apt-get install git
git-lfs 3.6.0 sudo apt-get install git-lfs

2.构建项目

(1)克隆项目:

shell 复制代码
git lfs install
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp

(2)下载模型:

shell 复制代码
# 修改脚本./models/download-ggml-model.sh:
#      替换huggingface.co为镜像网站hf-mirror.com(因不能访问外网)
#src="https://huggingface.co/ggerganov/whisper.cpp"
src="https://hf-mirror.com/ggerganov/whisper.cpp"
    #src="https://huggingface.co/akashmjn/tinydiarize-whisper.cpp"
    src="https://hf-mirror.com/akashmjn/tinydiarize-whisper.cpp"

# 下载模型:下载其中一个 Whisper 模型 转换为 ggml 格式。例如:
sh ./models/download-ggml-model.sh base.en

(3)Android构建:

shell 复制代码
# 构建适用于 Android 的版本
$ cmake \
  -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
  -DANDROID_ABI=arm64-v8a \
  -DANDROID_PLATFORM=android-28 \
  -DCMAKE_C_FLAGS="-march=armv8.7a" \
  -DCMAKE_CXX_FLAGS="-march=armv8.7a" \
  -DGGML_OPENMP=OFF \
  -DGGML_LLAMAFILE=OFF \
  -B build-android
  
$ cmake --build build-android --config Release -j{n}
$ cmake --install build-android --prefix ${install-dir} --config Release
$ cp build-android/bin ${install-dir}

3.Android测试

(1)设备连接:确认设备连接好了,使用以下命令查看是否有adb设备连接:

shell 复制代码
$ adb devices

(2)push文件到设备:

shell 复制代码
$ adb shell "mkdir /data/local/tmp/whisper.cpp"
$ adb push ${install-dir} /data/local/tmp/whisper.cpp/
$ adb push ./models /data/local/tmp/whisper.cpp/
$ adb push ./samples /data/local/tmp/whisper.cpp/

(3)设备上运行:

shell 复制代码
$ adb shell
$ cd /data/local/tmp/whisper.cpp
$ export LD_LIBRARY_PATH=lib ./bin/main -f ${audio_file_16bit.wav}

注意,main示例仅使用 16 位 WAV 运行,因此请确保音频是此格式文件,如不是请转换格式。例如:

shell 复制代码
# mp3转wav
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

声明:资源可能存在第三方来源,若有侵权请联系删除!

相关推荐
蒸鱼Yuzheng2 小时前
设备端性能工件可靠导出:断点续传、哈希、manifest 与失败恢复
android·自动化测试·python·adb·数据完整性
DQQzero3 小时前
小米18 Pro 硬件防窥屏被指侧看偏色:这是翻车了吗?
智能手机·小米·隐私安全·屏幕技术
爱上纯净的蓝天3 小时前
只输出选项和概率的模型:判别层的接口契约与阈值工程
人工智能·大模型·llm·模型评估·架构设计
美狐美颜sdk4 小时前
直播APP接入美颜SDK后出现卡顿怎么办?从性能瓶颈寻找解决方案
android·人工智能·音视频·美颜sdk·直播美颜sdk
美狐美颜SDK开放平台4 小时前
直播APP开发实战:从摄像头调用到视频美颜sdk集成
android·人工智能·计算机视觉·音视频·直播美颜sdk
流浪0015 小时前
大模型技术全景(十二):人工介入 HITL、HOTL 与 HOOTL
llm·hitl·人工介入·hotl·hootl
老李IT笔记5 小时前
纳管链路的断点,有时不在设备侧在门户侧
智能手机
alexhilton5 小时前
生命周期感知的多模块启动模式
android·kotlin·android jetpack
三少爷的鞋6 小时前
Android 架构指南:suspend 如何响应取消?别再给 Repository 加 `cancel()`
android
迪飞特科技7 小时前
【无标题】
android·人工智能·本地化大模型