Skip to content

Repository files navigation

LocalCaption|面向听障人士的中文普通话离线实时字幕

把身边的普通话,在 Android 手机上实时显示为大字字幕。

本项目只面向中文普通话语音识别,不是多语言字幕应用。

功能与边界 · 真机画面 · 自行构建 · English

Android 8.0+ 中文普通话 本机识别 arm64-v8a Android 自动化检查

LocalCaption 为听障人士和有听力损失的用户提供面对面沟通辅助:说话者靠近手机麦克风说普通话,应用在手机本地完成流式语音识别,屏幕持续显示高对比度字幕。运行时不上传或保存音频;有文字的会话会自动保存在本机,并可逐条删除。

Important

当前版本仍处于 POC 阶段,仅支持 arm64-v8aGitHub Releases 提供 v0.5.0-beta.1 预发行版的已签名 APK;AAB 可作为附加产物提供。新模型尚未完成真机验证,因此它不是稳定版。LocalCaption 不是医疗器械,也不能作为急救、医疗或其他安全关键场景中的唯一沟通方式。

功能与边界

项目 当前情况
识别语言 中文普通话;没有针对粤语、吴语等方言或其他语言优化
实时字幕 流式 partial 字幕持续刷新,final 文本写入当前会话
显示方式 标准、大、超大三档字号;高对比度;自动滚动
识别模式 “短停顿模式”和“长停顿模式”共用同一套中文普通话 Zipformer 14M(INT8)模型,仅采用不同的停顿切分策略;模式名称不代表准确率高低
本地记录 有文本的会话结束时自动保存到 Room,可复制、收藏或逐条删除
音频隐私 运行时只在内存中处理麦克风音频,不上传、不生成录音文件
无障碍 已实现大触控区域和基础 TalkBack 语义;尚未完成系统化真机验证
后台行为 按 Home 后前景服务可继续;从最近任务中划掉应用会停止识别
音频来源 只采集手机麦克风附近声音,不直接捕获电话或系统媒体音频
系统支持 Android 8.0 及以上,目前只构建 arm64-v8a

真机画面

以下画面来自 OnePlus PHB110(Android 16)上的既有离线 POC。该设备完成了 Debug APK 安装、应用启动、旧版 2025 CTC 模型加载和简短普通话出字检查。当前发行版已经迁移到 Apache-2.0 的 14M Transducer 模型;由于已无法继续连接这台设备,本次迁移只完成桌面构建、签名和静态检查,没有完成新模型的真机运行验证。历史画面不能作为当前模型已经通过真机验证的证据,也不能代表识别准确率、复杂环境效果或多机型兼容性。

OnePlus PHB110 上的中文普通话实时字幕 OnePlus PHB110 上的旧版普通话模型选择 OnePlus PHB110 上的字幕显示设置

由真实设备截图帧组成的 LocalCaption 演示

由于该设备的 OxygenOS 阻止 ADB screenrecord,上方 GIF 是真实截图帧轮播,不是连续录屏。截图未使用生成式界面或设备模型。详细记录见真机验证报告

目前没有 WER、端到端延迟、噪声、口音、30 分钟稳定性、功耗、多机型或完整 TalkBack 真机数据;这些项目不列为已完成能力。

为什么在本机识别

  • 应用清单不申请网络权限,识别时不会把音频发送到服务器。
  • 原始音频只用于内存中的流式识别,不写入 PCM、WAV 或其他录音文件。
  • 转写文本和时间等会话信息保存在本机 Room 数据库中。
  • 有文本的会话停止时会自动保存;历史页面支持复制、收藏和逐条删除。
  • 首次准备构建工具、sherpa-onnx AAR 和普通话模型时仍需联网下载文件。

中文普通话识别链路

手机麦克风
  └─ AudioRecord · 16 kHz · PCM 16-bit · 单声道
       └─ sherpa-onnx Streaming Zipformer Transducer 14M(中文普通话)
            ├─ partial → 屏幕实时字幕
            └─ final   → 会话文本 → Room 本地数据库

自行构建

需要直接安装时,请从 GitHub Releases 下载 v0.5.0-beta.1 预发行版的已签名 APK。它用于在明确知晓“新模型尚未真机验证”的前提下试用,不是稳定版。仓库同时保留完整的源代码构建路径,开发者可以下载经过 SHA-256 固定的运行资产并自行构建。

环境要求

  • Windows PowerShell 5.1 或更高版本
  • 可联网下载 Android 构建工具、sherpa-onnx AAR 和 14M 中文普通话模型
  • JDK 17、Android SDK 35;也可由仓库脚本准备
# 1. 准备 JDK 17、Gradle 8.10.2 和 Android SDK 35
powershell -ExecutionPolicy Bypass -File .\tools\setup-build-toolchain.ps1

# 2. 下载 sherpa-onnx AAR 和 14M 中文普通话模型
powershell -ExecutionPolicy Bypass -File .\tools\setup-runtime-assets.ps1

# 3. 校验运行资产和 SHA-256
powershell -ExecutionPolicy Bypass -File .\tools\verify-runtime-assets.ps1

# 4. 构建 Debug APK
powershell -ExecutionPolicy Bypass -File .\tools\build-debug-apk.ps1

APK 输出到 app/build/outputs/apk/debug/app-debug.apk

Note

本地缺少 sherpa-onnx AAR 时,工程会启用 app/src/stub/java 中的编译 stub。stub 只用于 CI、界面编译和静态检查,不能执行语音识别。

自动化检查

仓库包含 10 个 JVM 单元测试,覆盖端点控制、模型模式恢复、终稿修正和时间格式化。main 分支提交与 Pull Request 会运行单元测试、Android Lint 和 Debug 编译;Pull Request 还会执行依赖变更审查。

.\gradlew.bat testDebugUnitTest lintDebug assembleDebug

GitHub Actions 不下载 AAR 或大模型,因此生成的是编译验证用 stub APK。CI 通过只说明代码、测试、Lint 和 stub 构建通过,不代表真实普通话识别效果。

签名发行与许可证

仓库已经建立可重复的签名 APK/AAB 构建流程,包括单元测试、Release Lint、签名验证和 SHA-256 清单。签名凭据只通过本地环境变量或 GitHub Actions Secrets 注入,不提交到 Git。

常规 Android/Kotlin 依赖、sherpa-onnx、ONNX Runtime 和随包提供的 14M 中文普通话模型均已完成许可证审查。模型仓库 csukuangfj/sherpa-onnx-streaming-zipformer-zh-14M-2023-02-23 标注为 Apache-2.0,可随 APK/AAB 再分发;发行包必须同时保留相应的版权归属、许可证与第三方声明。

详见许可证审查第三方声明签名发布流程

项目状态

  • 中文普通话流式识别、前景服务和持续通知
  • 单一 14M 本机普通话模型与两种停顿切分策略
  • 大字字幕、高对比度、本地历史和基础无障碍语义
  • 旧版模型配置在单台 OnePlus PHB110 上的有限链路 POC、真实截图和真实帧 GIF
  • JVM 单元测试、Android Lint、GitHub Actions 和依赖审查
  • 依赖、模型、发行包许可证审查
  • 可重复并可验证的签名 APK/AAB 构建流程
  • 普通话 WER、延迟、噪声与口音基准
  • 多机型、30 分钟稳定性、功耗和完整 TalkBack 真机验证

项目文档

English summary

LocalCaption is an offline Android live-caption app built specifically for Mandarin Chinese speech recognition and hearing accessibility. It turns nearby microphone speech into large on-screen captions without uploading or recording audio. Signed APKs are distributed through GitHub Releases. The app uses one Apache-2.0-licensed 14M Mandarin model with two pause-segmentation modes; this does not imply an accuracy ranking.

Read the attached English introduction for details.


为听障沟通而做,专注中文普通话识别。

Releases

Packages

Used by

Contributors

Languages