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

devtools/2024/12/26 12:35:41/

whisper.cpp: Android端测试

    • 1.环境需要
    • 2.构建项目
    • 3.Android测试


1.环境需要

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

(1)PC:Ubuntu 22.04.4

(2)硬件设备:Android 手机

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

工具版本安装
Anaconda2021.05参考:Anaconda3安装及使用
cmake3.26.0conda install -c conda-forge cmake
make4.4.1conda install -c conda-forge make
ndkandroid-ndk-r26c官网下载解压,设置环境变量
adb1.0.41conda install -c conda-forge adb
git2.34.1sudo apt-get update
sudo apt-get install git
git-lfs3.6.0sudo apt-get install git-lfs

2.构建项目

(1)克隆项目:

git lfs install
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp

(2)下载模型:

# 修改脚本./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构建:

# 构建适用于 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设备连接:

$ adb devices

(2)push文件到设备:

$ 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)设备上运行:

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

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

# mp3转wav
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

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


http://www.ppmy.cn/devtools/145527.html

相关文章

肿瘤电场治疗费用

肿瘤电场治疗作为一种前沿的肿瘤治疗方法,近年来备受关注。该方法通过利用特定频率的交流电场,作用于恶性肿瘤细胞,以达到抑制肿瘤生长的目的。然而,随着这种治疗方法的普及,其费用问题也逐渐成为患者和家属关注的焦点…

低代码开发中 DDD 领域驱动的页面权限控制

在低代码开发的领域中,应用安全与灵活性是两大关键考量因素。领域驱动设计(DDD)作为一种在软件设计领域广泛应用且颇具影响力的方法论,正逐渐在低代码开发的页面权限控制方面展现出其独特的价值与潜力。本文旨在客观地探讨如何借助…

选择排序:简单算法的实现与优化探索

目录 一、选择排序的基本步骤 二、时间复杂度 三、优缺点 四、Java 实现选择排序 总结 选择排序是一种简单直观的排序算法。它的基本思想是每次从未排序的部分中选择最小(或最大)元素,将其放到已排序部分的末尾。尽管选择排序的时间复杂…

2.利用docker进行gitlab服务器迁移

一、Docker安装 安装Ubuntu 22.04.3 LTS \n \l 1、旧版本安装包清理 sudo apt-get remove docker docker-engine docker.io containerd runc当你卸载Docker时,存储在/var/lib/docker/中的图像、容器、卷和网络不会自动删除。如果你想从一个干净的安装开始&#x…

Leecode刷题C语言之切蛋糕的最小总开销①

执行结果:通过 执行用时和内存消耗如下: int idx(int m, int n, int row1, int col1, int row2, int col2) {return (row1 * n col1) * m * n row2 * n col2; }int dp(int m, int n, int row1, int col1, int row2, int col2, int *horizontalCut, int *vertica…

JVM系列(十二) -常用调优命令汇总

最近对 JVM 技术知识进行了重新整理,再次献上 JVM系列文章合集索引,感兴趣的小伙伴可以直接点击如下地址快速阅读。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的加载过程JVM系列(三) -内存布局详解JVM系列(四) -对象的创建过程JVM系列(五) -对象的内存分…

如何进行POC概念验证

进行 POC(Proof of Concept,概念验证) 的目的是验证某个想法、技术或方案的可行性。以下是进行 POC 的详细步骤: 1. 明确目标和范围 定义问题:明确你要解决的核心问题或验证的关键点。 设定目标:确定 POC …

(Python+selenium)UI自动化测试详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 我们在进行UI自动化测试时,一般采用javaselenium或者pythonselenium的方式。由于python比较简单,上手快,因此建议大家采用pyt…