TL;DR
结论:在“不付费 + 不碰 Xcode”的前提下,几乎无法让 Apple Watch 安装你的自定义 watchOS App;因此要满足“锁屏口袋一键开录”,最现实的路线是:
- 路线 A(可靠录音):改成“手表本地录音(系统或现成 App)→ 回到 iPhone 转写并归档”。牺牲:实时转写/统一体验。
- 路线 B(保留实时转写):只做 iPhone 端实时转写,手表触发只做 best-effort(Focus/Shortcuts/Siri),不承诺锁屏口袋 100% 唤起录音。
- 路线 C(换平台):Wear OS + Android 通常更容易做“手表按钮 → 手机锁屏后台录音”(前台服务/Tile/Data Layer)。代价:换硬件/生态。
下面给出限制解释、方案对比、开源/文档链接清单(详见 Details 页)。
你的诉求(当前已确认)
Trigger
Watch → Phone
锁屏放口袋也要“一键开录”
Transcription
实时
中文为主;允许网络识别兜底
Storage
本地
MVP 不做云端;未来可接 GitHub/R2/Vercel
Retention
音频 10 天
文本永久保留
你真正要的是“可抓住的瞬间”
- 无需掏手机、无需解锁
- 1 秒内开始录音(越确定越好)
- 录音后能快速检索/回看文字
你不想要的成本
- 不买 Apple Developer Program(通常 $99/年,具体以 Apple 当前为准)
- 不想为了“装到设备上”而安装/依赖 Xcode
- MVP 先不做云端
关键限制(为什么“看起来简单”但很卡)
1) watchOS 安装与分发
- 要把“你自己的 watch App”装到手表,本质需要 Apple 的签名/安装通道。
- 不付费且不使用 Xcode:基本没有可行安装路径(即使只给自己用)。
- iPhone 侧载比 watch 容易;watch 侧载链路通常不可用/不稳定。
2) 锁屏 + 后台启动录音
- “开始录音”属于高敏感权限行为,系统会限制从自动化/后台无感启动。
- 要在锁屏持续录音,通常需要 iOS App 以 Audio Background Mode 运行,并正确配置音频会话。
- 从手表触发 iPhone 端“唤起 + 立即开始录音”的可靠性很难做到 100%。
3) 实时转写的实现边界
- Apple Speech 可实时输出 partial 结果;on-device 能力因机型/语言而异。
- 你已接受网络兜底:可先尝试 on-device,失败后切换网络识别。
- 若未来要更强离线:可引入 Whisper/whisper.cpp(耗电/包体/性能成本上升)。
4) 留存策略(你要“删音频不删文本”)
- 音频 10 天清理:能做成“每次启动/每次停止录音后清理”,保证最终会删。
- “定点每天清理”在 iOS 只能尽力(BGTask 不保证准时执行)。
方案对比(按你的约束排序)
| Option | 能否“锁屏口袋一键开录” | 实时转写 | 是否需要 $99 / Xcode | 主要代价 / 风险 |
|---|---|---|---|---|
| 1) iPhone-only + 快捷键 | 中(取决于唤起/后台权限) | 是 | 不需要 $99;安装方式仍要解决(侧载/开发安装) | 没有 watch 触发;你要的“掏手机”问题仍在 |
| 2) Watch 无 App:Focus/Shortcuts 触发 iPhone | 低~中(best-effort) | 是 | 不需要 $99;不需要安装 watch App | 无法承诺 100%:锁屏/自动化/唤起行为受系统限制 |
| 3) Watch 直接录音(系统/现成 App)→ iPhone 转写归档 | 高 | 否(转写在录后) | 不需要 $99;不需要你的 watch App | 牺牲实时转写与统一体验;转写延后 |
| 4) 自定义 watch App(Xcode 直装,免费账号) | 高(可做“表端录音”或更稳触发) | 可做(看方案) | 需要 Xcode;不一定要 $99 | 你当前明确不想碰 Xcode;且可能要定期重装/签名 |
| 5) Wear OS + Android(换生态) | 高 | 可做 | 不需要 $99;分发更自由 | 换设备/换系统;开发与维护双平台成本 |
相关开源与可复用资产(MVP 视角)
本项目(你当前仓库里已有)
apps/voiceTranscribeMVP/VoiceTranscribeCore:文件存储 + 10 天音频清理 + 单测apps/voiceTranscribeMVP/samples/ios:AVAudioEngine + Speech 实时转写(on-device 优先,失败切网络兜底)apps/voiceTranscribeMVP/samples/watch:最小遥控(但需要自定义 watch App 才能装进表)
通用 ASR(未来增强)
- Whisper(OpenAI)/ whisper.cpp:离线更强,但会带来性能/电量/包体成本
- Vosk / sherpa-onnx:其它离线 ASR 方案(看中文效果与 iOS 集成成本)
详细链接与更多备选见 Details 页。
建议路线(按“你当前不付费/不装 Xcode”优先)
优先 1:先做 iPhone 实时转写(能用就先用)
- 用快捷方式/Action Button 打开
voicetranscribe://toggle(体验最快成型) - App 开启 Audio Background Mode,保证锁屏仍在录
- 再尝试“手表触发 iPhone”(Focus/Shortcuts/Siri)作为加成,而不是核心依赖
优先 2:如果你坚持“口袋 100% 一键开录”
- 接受“手表端录音”,用系统/现成 watch App 来保证随时可录
- iPhone 端负责:转写 + 永久存档 + 10 天音频清理
- 实时转写改成“录完即转写”(或在后台尽快转写)
为什么这是“最强约束下最现实”的路径?
- 你要的是“随时抓住语音”,这比“实时出字”更基础。
- 在 Apple 生态里,可靠录音必须尊重权限与分发规则;绕不开时,就把“可靠录音”下沉到系统/现成 App(可用性最高)。
- 一旦你愿意引入 Xcode(哪怕借一台 Mac),自定义 watch App 的空间会大很多。
Next Steps
One next action:先做一次“锁屏口袋录音”的现实验证:仅用 iPhone 端(不引入手表),把 App 做到锁屏持续录音 + 实时转写稳定,再决定是否需要手表端“绝对可靠”。
- 你现在的代码骨架已具备:本地存储、音频 10 天清理、实时转写(on-device 优先,失败切网络兜底)。
- 接下来最关键的是:在真机上验证后台录音 + 识别稳定性(权限、音频会话、锁屏状态)。
Details (Optional)
更完整的链接清单、开源方案、以及“手表触发 iPhone”的可行路径与失败模式,见:
Sources (selected)
- Apple Speech Framework Docs
- Apple WatchConnectivity Docs
- OpenAI Whisper / whisper.cpp
- Android SpeechRecognizer / Foreground services / Wear OS Data Layer
本页不联网核验;具体可点击链接在 Details 页。
先确保“随时可录”,再追求“实时出字”。
Closing Summary · One reliable step