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

news/2024/12/26 19:21:58/

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/news/1558330.html

相关文章

网站使用站群服务器都有哪些好处?

站群服务器主要是通过集中的资源管理和高效的分布式架构,支持多个网站的稳定运行,是专门用于托管多个独立网站的服务器系统,站群服务器通常还拥有着大量的独立IP地址,可以分配给不同的网站。 当网站使用站群服务器时能带来哪些好处…

vscode python pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。()

问题: PS C:\Users\EDY\Desktop\vscodeTest> pip pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保 路径正确,然后再试一次。 所在位置 行:1 字符: 1 pip …

深度分析 es multi_match 中most_fields、best_fields、cross_fields区别

文章目录 1. multi_match 查询的类型1.1 best_fields(默认)1.2 most_fields1.3 cross_fields 2. 不同类型的示例查询示例数据: 3. 示例 1: 使用 best_fields查询:说明: 4. 示例 2: 使用 most_fields查询:说…

kkfileview代理配置,Vue对接kkfileview实现图片word、excel、pdf预览

kkfileview部署 官网:https://kkfileview.keking.cn/zh-cn/docs/production.html 这个是官网部署网址,这里推荐大家使用docker镜像部署,因为我是直接找运维部署的,所以这里我就不多说明了,主要说下nginx代理配置&am…

前端编程训练 异步编程篇 请求接口 vue与react中的异步

文章目录 前言代码执行顺序的几个关键点接口请求vue与react中的异步 vue中的异步react的state修改异步 前言 本文是B站三十的前端课的笔记前端编程训练,异步编程篇 代码执行顺序的几个关键点 我们可以理解为代码就是一行一行,一句一句是执行(定义变…

神经网络初学总结(一)

概述 梳理神经网络的核心内容,可以从以下几个方面进行组织,包括神经网络的基本概念、结构、训练方法和优化技术等。以下是一个清晰的框架来帮助你理解神经网络的基础和进阶内容: 1. 神经网络基础 1.1 什么是神经网络 神经网络是由大量的神…

ffmpeg源码分析(九)解协议

本文将聚焦于FFmpeg协议处理模块,以avformat_open_input函数为核心,详细剖析其在最新FFmpeg源码中的实现。 音视频处理流程简介 avformat_open_input概述 avformat_open_input是FFmpeg用于打开输入多媒体数据的关键函数。它通过统一的接口处理多种协议…

python 随笔80%核心笔记(一)

目录 一、海龟 二、pygame 三、函数 四、类与对象 五、列表与元组 六、其他 1、格式化输出 2、最大公约数、最小公倍数 3、print、多变量一起定义赋值、end以及列表的方法 4、序列重复、字符串方法、其他列表方法、input 5、字典的方法、ASCII码转换、返回值、修改私人…