运行时与集成

Android 离线转写的麦克风前台服务

离线模型不会自动授予后台录音权限。录音服务必须清晰反映用户操作并遵循 Android 的麦克风权限和服务限制。

审核状态: 内容已校验;中文稿供用户审核 · 2026-10-03 · Fact IDs: ANDROID-BG-01, ANDROID-AUDIO-01, ANDROID-MICROPHONE-FGS-2026-01

直接回答

离线模型并不会自动授予后台录音权限。Android 麦克风转写功能必须分别处理用户操作、运行时权限、服务类型、通知、生命周期和推理。适用的目标版本要求访问麦克风的前台服务声明麦克风类型;更新系统还会执行额外权限与启动限制。从后台启动麦克风服务可能失败,因为麦克风属于使用时权限。稳妥的设计应从应用可见界面里的用户操作开始,在满足所需权限时启动采集,持续告知用户录音正在进行,并清楚定义用户停止、锁屏、撤销权限或进程被移除时发生什么。 不能只为了让模型保持热状态或隐藏长任务而选择前台服务。服务必须对应用户可见且符合平台规则的任务,并遵循当前目标 SDK 的 Android 规则。模型下载等持久后台任务与麦克风采集是不同工作,需要不同生命周期机制。转写应用可以在合规运行的前台服务中采集音频,但服务本身不能证明转写准确、离线、可恢复或安全;采集、模型推理、存储和播报等环节需要各自证据。 有用的实现会把录音会话与推理拆开。服务持有麦克风录音器并更新通知;Repository 或任务协调器管理会话 ID 与事件;只有录音阶段生成了有限音频片段,才把它交给推理引擎。每种状态都应可观察:等待权限、录音中、音频收尾、转写中、显示结果、已停止和失败。不能因为推理协程仍在运行就一直占用麦克风。如果录音结束后转写可以继续,只保存完成或恢复任务必需的最少元数据。 要在产品支持的最低和目标 SDK 配置上测试平台边界。从可见 Activity 开始,分别授权与拒绝权限,启动服务,锁屏、切换应用、通过通知停止、撤销权限并重建进程。记录每种转换是否保留采集、是否有意停止以及用户看到什么。不能把某个模拟器或手机上的一次运行概括到全部设备。如果后台启动失败,应先对照平台限制定位,而不是添加未核实豁免或再套一层服务。若启动时用户尚未使用需要麦克风的功能,就不要请求麦克风权限。 本文是架构和验证方法,不表示 Cove Voice 已完成后台录音功能,也不表示 Cove 公开版能在锁屏时转写。仓库当前说明 Cove Voice 仍在进行中;公开分发状态和具体行为必须另行核实。 实施顺序:先写清录音是否由用户明确发起、屏幕锁定时是否继续、通知和停止控制如何显示、哪些中断会终止任务;再按目标 SDK 声明服务类型和权限,在功能场景下申请 RECORD_AUDIO 并处理拒绝;随后让服务拥有录音器和通知,由应用层 Repository 传递会话状态,推理只接收完成的音频片段;最后逐项测试授权与拒绝、前台启动、锁屏、切换应用、通知停止、进程重建、音频收尾、推理完成、清理以及失败后的新会话。每项结论都只适用于实际复现的应用版本。

用户开始长录音后锁定手机

用户在可见的转写页面按下录音,授予麦克风权限,随后锁屏等待一场私人会议的转写结果。团队需要决定哪个组件拥有采集,并明确中断时的行为。

决策

由可见的用户操作启动采集;只有平台规则要求且满足条件时才用正确声明的麦克风前台服务,并为每个生命周期事件定义停止或恢复边界。

预期结果

应用呈现明确录音状态和停止操作;测试记录把采集、音频收尾与转写分开,不笼统承诺“后台功能”。

需要收集的证据

只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:

  • 服务类型和目标 SDK
  • 权限授予与拒绝路径
  • 屏幕锁定、停止和进程重建结果

只有记录了模型身份、构建配置、实际后端、任务样例和失败情况,运行时比较才可复核。

实施流程

  1. 说明用户可见的录音行为. 写明何时可启动录音、哪些控件持续可用、是否预期锁屏继续、如何报告中断以及停止后保留哪些数据。不能只凭 manifest 里的服务声明推导对外承诺。
  2. 在需要时申请麦克风权限. 只有用户选择了需要麦克风的功能后才申请。每次使用前检查权限;若用户拒绝,应解释功能影响并提供可继续使用的路径,不能反复弹窗施压。
  3. 拆分采集、推理与持久化. 录音服务负责麦克风与前台通知。它通过会话标识和状态事件通知应用层,之后把完成且有限的音频片段交给推理。不要让原生推理的生命周期绑在录音器未关闭上。
  4. 验证生命周期转换. 测试前台启动、锁屏、切换应用、通知停止、权限撤销、进程重建、音频收尾、推理完成、清理和失败后重新录音。按目标 SDK 记录结果,不把单机测试推广到其他设备。

让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。

验收标准

  • 录音只从文档说明的用户可见路径启动,并具备必需权限。
  • 在测试过的生命周期里,前台通知和停止操作保持一致。
  • 采集中断、转写、清理和恢复分别以明确状态报告。

决策对照表

维度选择或证据解读方式
短时可见录音Activity 绑定采集生命周期更简单;离开或停止界面时可以有意结束采集。
用户请求持续录音符合平台规则的麦克风前台服务必须满足当前服务类型、权限、通知和启动限制。
模型下载或延后工作持久后台工作机制下载不等于麦克风录音,也不应复用录音服务承诺。

需要避免的失败模式

  • 为保持模型热状态而启动前台服务
  • 把文件下载与麦克风录音混为一谈
  • 假设锁屏后录音一定继续

还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。

最小复现记录

层级记录内容
设备厂商、型号、芯片、内存档位、操作系统版本
软件应用版本和 Git 提交号
模型系列、变体、版本、格式、文件长度、摘要、量化方式
运行时名称、版本、请求后端及实际后端证据
工作负载样例版本、输入摘要、提示词摘要、输出策略
结果完成、失败、取消、回退及保护隐私的诊断信息

发布检查表

  • ☐ 主要搜索问题已回答,且没有未经支持的数字。
  • ☐ 所有模型文件和运行时版本均已固定。
  • ☐ 代表性任务和失败处理策略均有说明。
  • ☐ 生命周期、取消、清理和回退均已测试。
  • ☐ 用户内容与网络边界均有说明。
  • ☐ 结论只适用于被记录的配置。
  • ☐ 新增测试结果时链接到原始方法或证据。

来源与相关证据

中文部署与排错专题见。奇连 AI 端侧专题。

常见问题

离线转写模型能让录音在锁屏后继续吗?

不能。模型放在哪里与麦克风生命周期是两件事。锁屏行为取决于应用的用户可见设计和前台服务规则,并且必须针对确切应用版本与目标 SDK 测试。

麦克风前台服务能在应用后台随时启动吗?

不能。Android 限制后台启动前台服务,麦克风还受到使用时权限约束。需要从符合条件的可见交互启动,或严格依赖文档规定的平台豁免。

前台服务能证明转写全程离线吗?

不能。服务只描述执行和通知机制。若要作端到端联网说明,仍要分别核验采集、推理、模型下载、日志、备份和导出。