whisper_android
将 OpenAI Whisper 语音识别能力落地 Android 端,实现完全离线的语音转文字
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
将 OpenAI Whisper 语音识别能力落地 Android 端,实现完全离线的语音转文字
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你正在地铁里,周围嘈杂,手机网络信号断断续续——你想把脑海中一闪而过的灵感记录下来,但主流的语音识别应用无一例外都需要联网云端处理,要么转圈等待,要么直接罢工。这个时候,如果手机本身就能完成从语音到文字的转换,不依赖任何服务器,那该有多好。
vilassn/whisper_android 正是为解决这个痛点而生。这个开源项目将 OpenAI 的 Whisper 语音识别模型,通过 TensorFlow Lite(TFLite)压缩优化后,成功运行在 Android 智能手机上,实现了完全离线、低延迟、高准确率的端侧语音转文字能力。截至目前已收获 681 颗 GitHub Stars,在移动端离线 ASR(自动语音识别)领域属于标杆级项目。

Whisper Android 应用截图,展示录音与实时语音识别转写界面
过去几年,语音识别技术经历了从云端向边缘端迁移的显著趋势。早期方案(如 Google 语音输入、讯飞输入法)依赖云端 API,网络质量直接决定体验质量——信号差时延迟飙升,用户体验断崖式下降。随着 Whisper 的横空出世和移动端推理能力的飞速提升,这条技术路线的可能性被彻底打开了。
Whisper 是 OpenAI 于 2022 年发布的语音识别模型系列,以多语言支持、强大泛化能力和相对轻量著称。但原始 Whisper 模型体积庞大(最小的 tiny 模型也有约 39M 参数),直接塞进手机并不现实。TFLite(TensorFlow Lite) 提供的模型量化、算子融合和硬件加速支持,使得在手机 CPU/GPU 上高效运行压缩后的 Whisper 模型成为可能——这正是 whisper_android 所做的事。
从项目维护者 profile(vilassn)来看,这是一个个人开发者主导的项目,主要聚焦于移动端 AI 推理优化方向。项目采用 MIT 开源许可证,社区贡献相对有限,但功能实现完整度和代码质量足以支撑生产级别的离线语音转写场景。
whisper_android 项目提供了两套并行的 Android 应用实现,分别对应不同的集成场景和性能需求:
基于 TensorFlow Lite Java API 构建的 Android 应用,使用 Kotlin 语言开发,对已有 Android 生态的 Java 开发者极度友好。核心依赖包括:
org.tensorflow:tensorflow-lite:2.14.0 — TFLite 运行时核心org.tensorflow:tensorflow-lite-support:0.4.4 — TFLite 支持库(用于输入输出张量处理)集成方式极其简洁,只需数行代码即可完成模型加载和推理调用:
Whisper mWhisper = new Whisper(this);
mWhisper.loadModel("path/to/whisper-tiny.tflite", "path/to/filters_vocab_multilingual.bin", true);
mWhisper.setListener(new IWhisperListener() {
@Override public void onResultReceived(String result) {
// 处理识别结果
}
});
mWhisper.setFilePath("path/to/audio.wav");
mWhisper.setAction(Whisper.ACTION_TRANSCRIBE);
mWhisper.start();
Whisper Java 实现对音频格式有明确要求:16KHz、16位单声道 WAV 文件,这与 Whisper 模型训练数据的声音特征直接相关。项目同时提供了 Recorder 录音类,支持实时音频采集并可与 Whisper 联动,实现边录边转的流式识别体验。
基于 TensorFlow Lite Native API(即 C++ JNI 调用)构建,提供接近原生性能的推理效率。适合追求最低延迟、愿意深入 native 代码层进行定制的开发者。相比 Java API,Native 实现可以更精细地控制模型推理的生命周期,减少 Java→Native 边界调用(JNI)的性能开销。
项目提供了完整的 Whisper 模型到 TFLite 格式的转换脚本 generate_model.py,以及一个详尽的 Jupyter Notebook 演示转换和测试全流程(whisper_tflite_model_generation_and_test.ipynb)。这意味着开发者不仅可以下载预编译的 APK,还可以自行选择不同规模的 Whisper 模型(tiny/base/small/medium/large)进行量化转换,获得不同的精度-速度权衡。
| 模型规模 | 参数量 | 建议内存 | 适用场景 |
|---|---|---|---|
| Whisper Tiny | ~39M | 2GB+ RAM | 快速响应、基础场景 |
| Whisper Base | ~74M | 3GB+ RAM | 日常对话 |
| Whisper Small | ~244M | 4GB+ RAM | 高精度需求 |
项目提供了最直接的体验路径:demo_and_apk/WhisperASR.apk(约 96MB),下载安装后即可在 Android 设备上直接使用,无需任何配置。APK 内已包含预置的 TFLite 模型,录音后数秒内即可得到转写结果。
对于想深入定制的开发者,项目结构清晰、模块职责明确:
whisper_java/ 或 whisper_native/ 目录实测硬件要求:推荐 4GB 以上 RAM 的 Android 8.0+ 设备,中高端机型体验更佳。项目代码中已将 NDK/ABI 过滤器移除,理论上支持主流 ARM64 设备。
没有任何技术方案是完美的,whisper_android 也不例外:
1. 模型体积与精度取舍:TFLite 量化模型相比 FP16/FP32 全精度模型会有一定精度损失。对于专业转录场景(如医学记录、法律口述),云端大模型仍然是金标准。离线端侧方案更适合日常记录、会议备忘等容错率较高的场景。
2. 推理速度瓶颈:手机 CPU/GPU 的算力与桌面级 GPU 差距巨大。Whisper Medium/Large 在手机上推理一条 1 分钟音频可能需要数十秒到数分钟不等。Tiny 模型响应快但识别质量有限,这是移动端 AI 的固有矛盾。
3. GPU 加速尚未激活:代码中 GPU Delegate(tensorflow-lite-gpu、play-services-tflite-gpu)均处于注释状态,意味着目前只能利用 CPU 推理。激活 GPU 加速有望显著提升推理速度,但需要针对具体设备 GPU 架构进行适配。
4. 长音频处理:受限于手机内存和 TFLite 推理的流式能力,超长音频(如 1 小时以上的会议录音)需要分片处理,目前代码中未内置自动分片机制。
whisper_android 的出现,是端侧 AI 落地进程中的一个有意义的注脚。在 Whisper 出现之前,移动端离线语音识别的主流方案是基于 Kaldi、Vosk 等轻量级 ASR 引擎,效果与 Whisper 有明显差距。Whisper 的强大泛化能力首次让移动端设备有机会获得接近云端质量的识别体验。
从更宏观的视角看,随着高通、联发科、苹果等厂商在 NPU(神经网络处理器)上的持续投入,设备端 AI 推理的效率正在快速提升。whisper_android 这类项目验证了在消费级硬件上运行 SOTA 语音模型的可行性,为未来更强大的端侧多模态 AI 应用铺路。
项目速览
| 维度 | 详情 |
|---|---|
| 语言 | C++(核心推理)+ Kotlin(Android 应用) |
| 许可证 | MIT |
| 主要依赖 | TensorFlow Lite 2.14.0, Whisper |
| 最低 Android 版本 | API 26(Android 8.0) |
| 预编译 APK | demo_and_apk/WhisperASR.apk(~96MB) |
| 核心特色 | 完全离线运行、多语言支持、双 API 实现 |