[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-vilassn--whisper_android":3,"tool-vilassn--whisper_android":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":77,"owner_website":80,"owner_url":81,"languages":82,"stars":123,"forks":124,"last_commit_at":125,"license":126,"difficulty_score":127,"env_os":128,"env_gpu":129,"env_ram":130,"env_deps":131,"category_tags":140,"github_topics":142,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":161,"updated_at":162,"faqs":163,"releases":199},5208,"vilassn\u002Fwhisper_android","whisper_android","Offline Speech Recognition with OpenAI Whisper and TensorFlow Lite for Android","whisper_android 是一款专为 Android 平台打造的离线语音识别解决方案，它成功将 OpenAI 强大的 Whisper 模型移植到移动端，并基于 TensorFlow Lite 进行深度优化。该工具主要解决了传统语音识别依赖网络连接、存在隐私泄露风险以及高延迟等痛点，让用户在没有网络的环境下也能享受高精度的实时语音转文字服务。\n\n该项目非常适合 Android 开发者使用，特别是那些希望在应用中集成本地化语音功能的技术团队。为了满足不同开发需求，whisper_android 提供了两套完整的应用示例：一套基于 TensorFlow Lite Java API，便于快速集成和上手；另一套则采用 Native API，专为追求极致性能的场景设计。此外，项目还附带了 Python 脚本，支持开发者自定义转换和生成优化的 TFLite 模型。\n\n其核心技术亮点在于实现了真正的端侧推理，不仅保障了用户数据隐私，还通过预编译的 APK 和清晰的代码示例大幅降低了部署门槛。无论是需要处理敏感信息的办公应用，还是面向弱网环境的户外工具，whisper_android 都能提供稳定","whisper_android 是一款专为 Android 平台打造的离线语音识别解决方案，它成功将 OpenAI 强大的 Whisper 模型移植到移动端，并基于 TensorFlow Lite 进行深度优化。该工具主要解决了传统语音识别依赖网络连接、存在隐私泄露风险以及高延迟等痛点，让用户在没有网络的环境下也能享受高精度的实时语音转文字服务。\n\n该项目非常适合 Android 开发者使用，特别是那些希望在应用中集成本地化语音功能的技术团队。为了满足不同开发需求，whisper_android 提供了两套完整的应用示例：一套基于 TensorFlow Lite Java API，便于快速集成和上手；另一套则采用 Native API，专为追求极致性能的场景设计。此外，项目还附带了 Python 脚本，支持开发者自定义转换和生成优化的 TFLite 模型。\n\n其核心技术亮点在于实现了真正的端侧推理，不仅保障了用户数据隐私，还通过预编译的 APK 和清晰的代码示例大幅降低了部署门槛。无论是需要处理敏感信息的办公应用，还是面向弱网环境的户外工具，whisper_android 都能提供稳定高效的语音交互能力，帮助开发者轻松构建智能化的移动应用。","# Offline Speech Recognition with Whisper & TFLite\n\nThis repository offers two Android apps leveraging the OpenAI Whisper speech-to-text model. One app uses the TensorFlow Lite Java API for easy Java integration, while the other employs the TensorFlow Lite Native API for enhanced performance. It also includes a Python script for model generation and pre-built APKs for straightforward deployment.\n\n\n## 📂 Folder Structure\n\n- **whisper_java**:  \n  An Android app using the TensorFlow Lite Java API for model inference with Whisper, ideal for Java developers integrating TensorFlow Lite.\n\n- **whisper_native**:  \n  An Android app utilizing the TensorFlow Lite Native API for model inference, offering optimized performance for developers preferring native code.\n\n- **models_and_scripts**:  \n  Contains a Python script to convert Whisper models into TensorFlow Lite format and includes pre-generated TFLite models.\n  - `generate_model.py`: Script for generating TFLite models.\n  - `generated_model`: Directory with optimized TFLite models.\n\n- **demo_and_apk**:  \n  Contains pre-built APKs for direct Android installation.\n\n## 🚀 How to Use\n\n- **Running the Whisper Java App**\n  1. Navigate to the `whisper_java` folder.\n  2. Open the project in Android Studio.\n  3. Build and run on an Android device or emulator.\n\n- **Running the Whisper Native App**\n  - Follow similar steps as above for the `whisper_native` app.\n\n## Whisper ASR Integration Guide\nThis guide explains how to integrate Whisper and Recorder class in Android apps for audio recording and speech recognition.\n\nHere are separate code snippets for using `Whisper` and `Recorder`:\n\n### Whisper (Speech Recognition)\n\n**Initialization and Configuration:**\n```java\n\u002F\u002F Initialize Whisper\nWhisper mWhisper = new Whisper(this); \u002F\u002F Create Whisper instance\n\n\u002F\u002F Load model and vocabulary for Whisper\nString modelPath = \"path\u002Fto\u002Fwhisper-tiny.tflite\"; \u002F\u002F Provide model file path\nString vocabPath = \"path\u002Fto\u002Ffilters_vocab_multilingual.bin\"; \u002F\u002F Provide vocabulary file path\nmWhisper.loadModel(modelPath, vocabPath, true); \u002F\u002F Load model and set multilingual mode\n\n\u002F\u002F Set a listener for Whisper to handle updates and results\nmWhisper.setListener(new IWhisperListener() {\n    @Override\n    public void onUpdateReceived(String message) {\n        \u002F\u002F Handle Whisper status updates\n    }\n\n    @Override\n    public void onResultReceived(String result) {\n        \u002F\u002F Handle transcribed results\n    }\n});\n```\n\n**Transcription:**\n```java\n\u002F\u002F Set the audio file path for transcription. Audio format should be in 16K, mono, 16bits\nString waveFilePath = \"path\u002Fto\u002Fyour_audio_file.wav\"; \u002F\u002F Provide audio file path\nmWhisper.setFilePath(waveFilePath); \u002F\u002F Set audio file path\n\n\u002F\u002F Start transcription\nmWhisper.setAction(Whisper.ACTION_TRANSCRIBE); \u002F\u002F Set action to transcription\nmWhisper.start(); \u002F\u002F Start transcription\n\n\u002F\u002F Perform other operations\n\u002F\u002F Add your additional code here\n\n\u002F\u002F Stop transcription\nmWhisper.stop(); \u002F\u002F Stop transcription\n```\n\n### Recorder (Audio Recording)\n\n**Initialization and Configuration:**\n```java\n\u002F\u002F Initialize Recorder\nRecorder mRecorder = new Recorder(this); \u002F\u002F Create Recorder instance\n\n\u002F\u002F Set a listener for Recorder to handle updates and audio data\nmRecorder.setListener(new IRecorderListener() {\n    @Override\n    public void onUpdateReceived(String message) {\n        \u002F\u002F Handle Recorder status updates\n    }\n\n    @Override\n    public void onDataReceived(float[] samples) {\n        \u002F\u002F Handle audio data received during recording\n        \u002F\u002F You can forward this data to Whisper for live recognition using writeBuffer()\n        \u002F\u002F mWhisper.writeBuffer(samples);\n    }\n});\n```\n\n**Recording:**\n```java\n\u002F\u002F Check and request recording permissions\ncheckRecordPermission(); \u002F\u002F Check and request recording permissions\n\n\u002F\u002F Set the audio file path for recording. It record audio in 16K, mono, 16bits format\nString waveFilePath = \"path\u002Fto\u002Fyour_audio_file.wav\"; \u002F\u002F Provide audio file path\nmRecorder.setFilePath(waveFilePath); \u002F\u002F Set audio file path\n\n\u002F\u002F Start recording\nmRecorder.start(); \u002F\u002F Start recording\n\n\u002F\u002F Perform other operations\n\u002F\u002F Add your additional code here\n\n\u002F\u002F Stop recording\nmRecorder.stop(); \u002F\u002F Stop recording\n```\n\nPlease adapt these code snippets to your specific use case, provide the correct file paths, and handle exceptions appropriately in your application.\n\n**Note**: Ensure that you have the necessary permissions, error handling, and file path management in your application when using the `Recorder` class.\n\n\n## Demo Video\n[![Video](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvilassn_whisper_android_readme_ec631ec4a326.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=w9pohi9NQrg)\n\n## Live Transcription\n[![Video](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvilassn_whisper_android_readme_fd1f180a9374.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=qUg6_v7b9Io)\n\n## Important Note\n\nWhisper ASR is a powerful tool for transcribing speech into text. However, keep in mind that handling audio data and transcriptions may require careful synchronization and error handling in your Android application to ensure a smooth user experience.\n\n\nEnjoy using the Whisper ASR Android app to enhance your speech recognition capabilities!\n\n## 💖 Support This Project\nMaintaining this project requires time and effort. If you find it useful and would like to support its development, you can contribute via PayPal:\n\n🔹 PayPal Direct Link: [https:\u002F\u002Fwww.paypal.com\u002Fvilassn](https:\u002F\u002Fwww.paypal.me\u002Fvilassn)\n\nFor any inquiries or business-related discussions, feel free to reach out:\n📧 Email: vilassninawe@gmail.com\n\nThank you for your support! 🚀\n\n## Acknowledgements\n\nThis project uses the following open-source implementation:\n\n- Niranjan Yadla (2022)  \n  *Whisper TFLite: OpenAI Whisper Model Port for Edge Devices*  \n  https:\u002F\u002Fgithub.com\u002Fnyadla-sys\u002Fwhisper.tflite\n\n```bibtex\n@misc{nyadla-sys,\n  author = {Niranjan Yadla},\n  title = {{Whisper TFLite: OpenAI Whisper Model Port for Edge Devices}},\n  year = 2022,\n  howpublished = {GitHub Repository},\n  url = {https:\u002F\u002Fgithub.com\u002Fnyadla-sys\u002Fwhisper.tflite},\n  note = {Original TFLite implementation of OpenAI Whisper for on-device automatic speech recognition}\n}\n","# 使用 Whisper 和 TFLite 的离线语音识别\n\n此仓库提供了两款利用 OpenAI Whisper 语音转文本模型的 Android 应用。其中一款应用使用 TensorFlow Lite Java API，便于 Java 集成；另一款则采用 TensorFlow Lite Native API，以获得更高的性能。此外，还包含用于生成模型的 Python 脚本以及预构建的 APK 文件，方便直接部署。\n\n\n## 📂 文件夹结构\n\n- **whisper_java**:  \n  一个使用 TensorFlow Lite Java API 进行 Whisper 模型推理的 Android 应用，非常适合集成 TensorFlow Lite 的 Java 开发者。\n\n- **whisper_native**:  \n  一个使用 TensorFlow Lite Native API 进行模型推理的 Android 应用，为偏好原生代码的开发者提供优化的性能。\n\n- **models_and_scripts**:  \n  包含将 Whisper 模型转换为 TensorFlow Lite 格式的 Python 脚本，并附带预生成的 TFLite 模型。\n  - `generate_model.py`: 用于生成 TFLite 模型的脚本。\n  - `generated_model`: 存放优化后的 TFLite 模型的目录。\n\n- **demo_and_apk**:  \n  包含可直接安装在 Android 设备上的预构建 APK 文件。\n\n## 🚀 使用方法\n\n- **运行 Whisper Java 应用程序**\n  1. 进入 `whisper_java` 文件夹。\n  2. 在 Android Studio 中打开项目。\n  3. 构建并在 Android 设备或模拟器上运行。\n\n- **运行 Whisper Native 应用程序**\n  - 对于 `whisper_native` 应用，步骤与上述类似。\n\n## Whisper ASR 集成指南\n本指南介绍了如何在 Android 应用中集成 Whisper 和 Recorder 类，实现音频录制与语音识别功能。\n\n以下是分别使用 `Whisper` 和 `Recorder` 的代码片段：\n\n### Whisper（语音识别）\n\n**初始化与配置：**\n```java\n\u002F\u002F 初始化 Whisper\nWhisper mWhisper = new Whisper(this); \u002F\u002F 创建 Whisper 实例\n\n\u002F\u002F 加载 Whisper 的模型和词汇表\nString modelPath = \"path\u002Fto\u002Fwhisper-tiny.tflite\"; \u002F\u002F 提供模型文件路径\nString vocabPath = \"path\u002Fto\u002Ffilters_vocab_multilingual.bin\"; \u002F\u002F 提供词汇表文件路径\nmWhisper.loadModel(modelPath, vocabPath, true); \u002F\u002F 加载模型并设置多语言模式\n\n\u002F\u002F 设置监听器以处理 Whisper 的状态更新和识别结果\nmWhisper.setListener(new IWhisperListener() {\n    @Override\n    public void onUpdateReceived(String message) {\n        \u002F\u002F 处理 Whisper 状态更新\n    }\n\n    @Override\n    public void onResultReceived(String result) {\n        \u002F\u002F 处理转录结果\n    }\n});\n```\n\n**转录：**\n```java\n\u002F\u002F 设置要转录的音频文件路径。音频格式应为 16K、单声道、16 位\nString waveFilePath = \"path\u002Fto\u002Fyour_audio_file.wav\"; \u002F\u002F 提供音频文件路径\nmWhisper.setFilePath(waveFilePath); \u002F\u002F 设置音频文件路径\n\n\u002F\u002F 开始转录\nmWhisper.setAction(Whisper.ACTION_TRANSCRIBE); \u002F\u002F 设置操作为转录\nmWhisper.start(); \u002F\u002F 启动转录\n\n\u002F\u002F 执行其他操作\n\u002F\u002F 在此处添加您的额外代码\n\n\u002F\u002F 停止转录\nmWhisper.stop(); \u002F\u002F 停止转录\n```\n\n### Recorder（音频录制）\n\n**初始化与配置：**\n```java\n\u002F\u002F 初始化 Recorder\nRecorder mRecorder = new Recorder(this); \u002F\u002F 创建 Recorder 实例\n\n\u002F\u002F 设置监听器以处理 Recorder 的状态更新和音频数据\nmRecorder.setListener(new IRecorderListener() {\n    @Override\n    public void onUpdateReceived(String message) {\n        \u002F\u002F 处理 Recorder 状态更新\n    }\n\n    @Override\n    public void onDataReceived(float[] samples) {\n        \u002F\u002F 处理录制过程中接收到的音频数据\n        \u002F\u002F 您可以将这些数据通过 writeBuffer() 转发给 Whisper 进行实时识别\n        \u002F\u002F mWhisper.writeBuffer(samples);\n    }\n});\n```\n\n**录制：**\n```java\n\u002F\u002F 检查并请求录音权限\ncheckRecordPermission(); \u002F\u002F 检查并请求录音权限\n\n\u002F\u002F 设置录音的音频文件路径。录音将以 16K、单声道、16 位格式进行\nString waveFilePath = \"path\u002Fto\u002Fyour_audio_file.wav\"; \u002F\u002F 提供音频文件路径\nmRecorder.setFilePath(waveFilePath); \u002F\u002F 设置音频文件路径\n\n\u002F\u002F 开始录音\nmRecorder.start(); \u002F\u002F 开始录音\n\n\u002F\u002F 执行其他操作\n\u002F\u002F 在此处添加您的额外代码\n\n\u002F\u002F 停止录音\nmRecorder.stop(); \u002F\u002F 停止录音\n```\n\n请根据您的具体应用场景调整这些代码片段，提供正确的文件路径，并在应用程序中妥善处理异常情况。\n\n**注意**：在使用 `Recorder` 类时，请确保您的应用程序具备必要的权限、错误处理机制以及文件路径管理功能。\n\n\n## 演示视频\n[![视频](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvilassn_whisper_android_readme_ec631ec4a326.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=w9pohi9NQrg)\n\n## 实时转录\n[![视频](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvilassn_whisper_android_readme_fd1f180a9374.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=qUg6_v7b9Io)\n\n## 重要提示\n\nWhisper ASR 是一款强大的语音转文字工具。然而，请注意，在 Android 应用中处理音频数据和转录内容时，可能需要仔细同步并做好错误处理，以确保流畅的用户体验。\n\n\n祝您使用 Whisper ASR Android 应用提升语音识别能力！\n\n## 💖 支持本项目\n维护该项目需要投入大量时间和精力。如果您觉得它很有用，并希望支持其开发，可以通过 PayPal 进行捐助：\n\n🔹 PayPal 直接链接：[https:\u002F\u002Fwww.paypal.com\u002Fvilassn](https:\u002F\u002Fwww.paypal.me\u002Fvilassn)\n\n如有任何疑问或商务合作事宜，欢迎随时联系：\n📧 邮箱：vilassninawe@gmail.com\n\n感谢您的支持！🚀\n\n## 致谢\n\n本项目使用了以下开源实现：\n\n- Niranjan Yadla (2022)  \n  *Whisper TFLite: OpenAI Whisper 模型的边缘设备移植版*  \n  https:\u002F\u002Fgithub.com\u002Fnyadla-sys\u002Fwhisper.tflite\n\n```bibtex\n@misc{nyadla-sys,\n  author = {Niranjan Yadla},\n  title = {{Whisper TFLite: OpenAI Whisper 模型的边缘设备移植版}},\n  year = 2022,\n  howpublished = {GitHub 仓库},\n  url = {https:\u002F\u002Fgithub.com\u002Fnyadla-sys\u002Fwhisper.tflite},\n  note = {OpenAI Whisper 的原始 TFLite 实现，适用于设备端自动语音识别}\n}","# whisper_android 快速上手指南\n\n本指南帮助中国开发者快速在 Android 设备上部署和使用基于 OpenAI Whisper 模型的离线语音识别工具。该项目提供两种实现方案：基于 Java API（易于集成）和基于 Native API（性能更优）。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Windows, macOS 或 Linux\n*   **IDE**: Android Studio (推荐最新稳定版)\n*   **JDK**: Java Development Kit 11 或更高版本\n*   **Android SDK**: 已配置好 SDK Tools 和 Build Tools\n*   **设备**: Android 真机或模拟器（建议真机以获得最佳音频处理性能）\n*   **前置依赖**:\n    *   无需额外安装 Python 环境即可运行示例 App（如需自定义转换模型，需安装 Python 及 TensorFlow 相关库）。\n    *   项目已包含预生成的 TFLite 模型和词汇表文件。\n\n> **提示**：国内开发者若在下载 Gradle 依赖时遇到困难，建议在项目级 `build.gradle` 或 `settings.gradle` 中配置阿里云或腾讯云镜像源以加速构建。\n\n## 安装步骤\n\n您可以选择直接安装预编译包或通过源码构建。\n\n### 方式一：直接安装预编译 APK（最快）\n\n1.  进入项目根目录下的 `demo_and_apk` 文件夹。\n2.  根据您的性能需求选择 APK 文件：\n    *   `whisper_java.apk`: 适合大多数场景，集成简单。\n    *   `whisper_native.apk`: 适合对推理速度有更高要求的场景。\n3.  将 APK 文件传输至 Android 设备并安装。\n4.  授予应用“录音”权限后即可使用。\n\n### 方式二：源码构建（适合二次开发）\n\n#### 1. 构建 Java 版本\n```bash\n# 进入 Java 实现目录\ncd whisper_java\n\n# 使用 Android Studio 打开当前目录，或在命令行执行：\n.\u002Fgradlew assembleDebug\n# 生成的 APK 位于 build\u002Foutputs\u002Fapk\u002Fdebug\u002F\n```\n\n#### 2. 构建 Native 版本\n```bash\n# 进入 Native 实现目录\ncd whisper_native\n\n# 使用 Android Studio 打开当前目录，或在命令行执行：\n.\u002Fgradlew assembleDebug\n```\n\n#### 3. (可选) 自定义模型转换\n如果需要转换其他尺寸的 Whisper 模型，可使用 `models_and_scripts` 目录下的脚本：\n```bash\ncd models_and_scripts\npython generate_model.py --model_name tiny --output_dir generated_model\n```\n\n## 基本使用\n\n本项目核心功能通过 `Whisper` 类（语音识别）和 `Recorder` 类（音频录制）实现。以下是集成到现有 Android 项目的最小化代码示例。\n\n### 1. 初始化 Whisper 引擎\n\n在 Activity 或 Service 中初始化模型。请确保 `whisper-tiny.tflite` 和 `filters_vocab_multilingual.bin` 文件已放置在 assets 或内部存储的正确路径。\n\n```java\n\u002F\u002F 初始化 Whisper 实例\nWhisper mWhisper = new Whisper(this);\n\n\u002F\u002F 加载模型和词汇表\nString modelPath = \"path\u002Fto\u002Fwhisper-tiny.tflite\"; \nString vocabPath = \"path\u002Fto\u002Ffilters_vocab_multilingual.bin\";\n\u002F\u002F 第三个参数 true 表示启用多语言模式\nmWhisper.loadModel(modelPath, vocabPath, true);\n\n\u002F\u002F 设置监听器处理状态和结果\nmWhisper.setListener(new IWhisperListener() {\n    @Override\n    public void onUpdateReceived(String message) {\n        \u002F\u002F 处理状态更新（如：加载中、就绪等）\n        Log.d(\"Whisper\", \"Status: \" + message);\n    }\n\n    @Override\n    public void onResultReceived(String result) {\n        \u002F\u002F 处理最终转录文本\n        Log.d(\"Whisper\", \"Transcription: \" + result);\n    }\n});\n```\n\n### 2. 执行文件转录\n\n如果您已有录音文件（格式要求：**16kHz, 单声道，16bit WAV**），可直接进行转录：\n\n```java\n\u002F\u002F 设置音频文件路径\nString waveFilePath = \"path\u002Fto\u002Fyour_audio_file.wav\";\nmWhisper.setFilePath(waveFilePath);\n\n\u002F\u002F 设置动作为转录并开始\nmWhisper.setAction(Whisper.ACTION_TRANSCRIBE);\nmWhisper.start();\n\n\u002F\u002F ... 执行其他逻辑 ...\n\n\u002F\u002F 完成后停止\nmWhisper.stop();\n```\n\n### 3. 实时录音与识别（进阶）\n\n结合 `Recorder` 类实现实时流式识别：\n\n```java\n\u002F\u002F 初始化录音器\nRecorder mRecorder = new Recorder(this);\n\nmRecorder.setListener(new IRecorderListener() {\n    @Override\n    public void onUpdateReceived(String message) {\n        \u002F\u002F 处理录音状态\n    }\n\n    @Override\n    public void onDataReceived(float[] samples) {\n        \u002F\u002F 将录音数据实时写入 Whisper 进行处理\n        \u002F\u002F 注意：需确保 Whisper 已初始化并处于监听状态\n        if (mWhisper != null) {\n            mWhisper.writeBuffer(samples);\n        }\n    }\n});\n\n\u002F\u002F 请求权限并设置录音路径\ncheckRecordPermission(); \nString recordPath = \"path\u002Fto\u002Foutput_recording.wav\";\nmRecorder.setFilePath(recordPath);\n\n\u002F\u002F 开始录音\nmRecorder.start();\n\n\u002F\u002F 停止录音\n\u002F\u002F mRecorder.stop();\n```\n\n> **注意**：\n> 1. 音频数据格式必须严格为 **16kHz, Mono, 16-bit PCM**，否则识别结果将为空或不准确。\n> 2. 在实际应用中，请务必妥善处理文件路径权限（Android 10+ 需使用 Scoped Storage）及异常捕获。","一位野外地质勘探队员需要在无网络信号的深山洞穴中，通过安卓平板实时记录口述考察笔记并转为文字报告。\n\n### 没有 whisper_android 时\n- 必须依赖不稳定的卫星网络或返回营地连接 Wi-Fi 才能使用云端语音识别，导致记录严重滞后。\n- 手动打字不仅效率低下，还因佩戴厚重手套操作屏幕困难，极易打断勘探思路。\n- 录音文件需事后统一整理转录，耗费大量额外工时，且容易遗漏关键现场细节。\n- 敏感地质数据上传至第三方云端服务存在泄露风险，不符合保密项目要求。\n\n### 使用 whisper_android 后\n- 利用内置的 TensorFlow Lite 模型实现完全离线识别，在无信号洞穴中也能秒级生成文字。\n- 队员只需口述，whisper_android 即可通过 Java 或 Native API 实时将语音流转为文本，解放双手专注于采样。\n- 支持边录音边转录（通过 `writeBuffer` 接口），考察结束即刻获得结构化笔记，大幅提升工作效率。\n- 所有数据处理均在本地设备完成，无需联网上传，彻底保障了核心地质数据的安全性。\n\nwhisper_android 通过将强大的 Whisper 模型轻量化部署到移动端，让高精度语音识别真正实现了随时随地、安全可靠的离线应用。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvilassn_whisper_android_fd1f180a.jpg","vilassn","Vilas","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fvilassn_69031d93.png","Android AOSP Multimedia Engineer || Proficient in C, C++, and Java || Passionate Trainer and Consultant",null,"Hyderabad, India","vilassninawe@gmail.com","https:\u002F\u002Fsoftware-skills.blogspot.com","https:\u002F\u002Fgithub.com\u002Fvilassn",[83,87,91,95,99,103,107,111,115,119],{"name":84,"color":85,"percentage":86},"C++","#f34b7d",52.2,{"name":88,"color":89,"percentage":90},"C","#555555",29.7,{"name":92,"color":93,"percentage":94},"Python","#3572A5",3.6,{"name":96,"color":97,"percentage":98},"Java","#b07219",2.2,{"name":100,"color":101,"percentage":102},"Starlark","#76d275",1.8,{"name":104,"color":105,"percentage":106},"Rust","#dea584",1.5,{"name":108,"color":109,"percentage":110},"Jupyter Notebook","#DA5B0B",1.3,{"name":112,"color":113,"percentage":114},"C#","#178600",1.1,{"name":116,"color":117,"percentage":118},"Swift","#F05138",1,{"name":120,"color":121,"percentage":122},"TypeScript","#3178c6",0.9,641,107,"2026-04-04T21:14:55","MIT",4,"Android","不需要 GPU，基于 TensorFlow Lite 在移动端 CPU 运行","未说明（取决于 Android 设备及所选 Whisper 模型大小，通常建议 2GB+）",{"notes":132,"python":133,"dependencies":134},"该工具主要面向 Android 开发环境。包含两个应用：一个使用 Java API 便于集成，另一个使用 Native API 以获得更佳性能。音频输入要求为 16kHz、单声道、16bit 的 WAV 格式。项目提供了预编译的 APK 和用于将 Whisper 模型转换为 TFLite 格式的 Python 脚本。运行推理时不需要联网或强大的服务器硬件，完全在设备端离线运行。","用于模型转换脚本（generate_model.py），具体版本未说明（通常需 Python 3.8+ 以兼容 Whisper 生态）",[135,136,137,138,139],"TensorFlow Lite","Android Studio","Java API \u002F Native API (C++)","Whisper TFLite Model","Vocabulary File (filters_vocab_multilingual.bin)",[14,141,35],"音频",[143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160],"asr","openai","texttospeech","tts","whisper","text-to-speech","speech-recognition","tensorflow","tflite","offline","tensorflowlite","android","automatic-speech-recognition","transcription","transcribe","embedded","mobile","translation","2026-03-27T02:49:30.150509","2026-04-08T03:57:07.777078",[164,169,174,179,184,189,194],{"id":165,"question_zh":166,"answer_zh":167,"source_url":168},23605,"如何解决 TensorFlow Lite 模型版本不匹配的错误（'ion ' vs 'TFL3'）？","该问题已在原始代码库中修复。请拉取最新的代码并重新编译项目。如果使用的是多语言或仅英语模型，最新代码通常能正常工作，无需额外配置。","https:\u002F\u002Fgithub.com\u002Fvilassn\u002Fwhisper_android\u002Fissues\u002F2",{"id":170,"question_zh":171,"answer_zh":172,"source_url":173},23606,"如何获取带有时间戳的字幕输出？","该项目已支持时间戳功能。请确保您使用的是最新版本的代码库，因为该功能在早期版本中可能尚未完全实现或默认开启。检查最新的提交记录以确认时间戳生成的相关逻辑已包含在内。","https:\u002F\u002Fgithub.com\u002Fvilassn\u002Fwhisper_android\u002Fissues\u002F22",{"id":175,"question_zh":176,"answer_zh":177,"source_url":178},23607,"如何设置输入语言以使输出语言与输入一致（例如中文输入得到中文输出）？","可以通过指定语言参数来实现。虽然具体代码实现可能随版本更新有所变化，但核心思路是在调用模型推理时传入目标语言代码（如 'zh' 代表中文）。建议参考项目中关于多语言支持的示例代码或 Release 目录中的 APK 演示效果。","https:\u002F\u002Fgithub.com\u002Fvilassn\u002Fwhisper_android\u002Fissues\u002F6",{"id":180,"question_zh":181,"answer_zh":182,"source_url":183},23608,"为什么语音活动检测（VAD）总是返回“静音”或不准确？","VAD 功能仍在持续开发和优化中。如果遇到检测结果不准确（如始终返回静音），可以尝试检查 `silent_detection.cpp` 的实现逻辑。目前该功能对不同采样率（16000 或 44100）的适应性还在调整中，可能需要根据具体音频文件手动调整阈值参数，或者等待后续版本的更新以获得更稳定的支持。","https:\u002F\u002Fgithub.com\u002Fvilassn\u002Fwhisper_android\u002Fissues\u002F3",{"id":185,"question_zh":186,"answer_zh":187,"source_url":188},23609,"如何提高 Whisper-Tiny 模型在实时录音中的识别准确率？","准确率低的主要原因是音频分段方式不当。当前若使用固定的 3 秒切片，往往会切断单词或句子。改进方法是实施语音活动检测（VAD），根据语音中的自然停顿进行分段，而不是按固定时间间隔切割。这样可以避免在单词或句子中间截断，从而显著提升识别准确率。","https:\u002F\u002Fgithub.com\u002Fvilassn\u002Fwhisper_android\u002Fissues\u002F14",{"id":190,"question_zh":191,"answer_zh":192,"source_url":193},23610,"demo_and_apk 的 Kotlin 源代码在哪里可以找到？","很遗憾，该项目中 demo 和 APK 对应的 Kotlin 代码并未开源。目前仓库中主要包含 C++ 核心逻辑和 Java 接口，Kotlin 层面的演示代码暂不公开。","https:\u002F\u002Fgithub.com\u002Fvilassn\u002Fwhisper_android\u002Fissues\u002F23",{"id":195,"question_zh":196,"answer_zh":197,"source_url":198},23611,"使用较大的模型（如 base 或 small）时应用崩溃报错 'TensorBuffer does not support data type: INT32' 怎么办？","这是一个已知的问题，通常发生在将较大的 Whisper 模型转换为 TFLite 格式并在 Android 上运行时。错误表明当前的 TensorBuffer 实现不支持 INT32 数据类型。这可能与模型转换脚本或 TFLite 解释器的配置有关。建议检查模型转换过程是否使用了正确的量化参数，或者尝试使用官方提供的预转换模型而非自行转换，直到社区提供针对大模型数据类型的修复方案。","https:\u002F\u002Fgithub.com\u002Fvilassn\u002Fwhisper_android\u002Fissues\u002F20",[]]