Transcribe Apple Voice Memos on Mac and save organized notes to Apple Notes — syncing back to iPhone via iCloud.
将 iPhone 语音备忘录通过 iCloud 同步到 Mac 后,AI 转写为文字,整理内容,并存入 Mac 备忘录,再通过 iCloud 同步回 iPhone。
text
iPhone 录音 → iCloud 同步 → Mac 语音备忘录 → AI 转写 → 整理 → Mac 备忘录 → iCloud → iPhone 备忘录
brew install ffmpegbrew install uv~/Library/Group Containers/group.com.apple.VoiceMemos.shared/Recordings/CloudRecordings.db~/Library/Group Containers/group.com.apple.VoiceMemos.shared/Recordings/bash
python3 scripts/list_memos.py [options]
OptionDescription / 说明Default / 默认--limit NNumber of results / 返回数量20--offset NPagination offset / 分页偏移0--search TERMSearch by title / 按标题搜索—--after YYYY-MM-DDFilter after date / 起始日期—--before YYYY-MM-DDFilter before date / 截止日期—--jsonJSON output / JSON 格式输出off
Present results as numbered list: title, date, duration. Ask user which to transcribe.
以编号列表展示:标题、日期、时长。询问用户要转写哪些。
Error "Database not found" / 报错"数据库未找到" → Enable iCloud sync for Voice Memos, or grant Full Disk Access. / 启用语音备忘录的 iCloud 同步,或授予完全磁盘访问权限。
Some Voice Memos have Apple's embedded transcripts (tsrp atom):
部分语音备忘录包含 Apple 自动生成的转写文本(tsrp atom):
bash
python3 scripts/extract_transcript.py "<PATH>.m4a"
If transcript found → skip to Step 4. If "no embedded transcript" → proceed to AI transcription.
如果找到转写文本 → 跳到第 4 步。如果显示 "no embedded transcript" → 进入 AI 转写。
bash
uv run --with faster-whisper python3 scripts/transcribe.py "<AUDIO_PATH>" [options]
OptionDescription / 说明Default / 默认--modeltiny/base/small/medium/large-v3base--languagezh, en, ja, etc.auto-detect / 自动检测--output PATHSave transcript to file / 保存到文件stdout / 标准输出--devicecpu/coreml/mpsauto-detect / 自动检测
Model guide (15 min audio, Apple Silicon M1) / 模型参考(15 分钟音频,Apple Silicon M1):
ModelTime / 耗时RAM / 内存Quality / 质量base2 min1.5 GBGood / 良好small5 min2 GBBetter / 较好medium~10 min5 GBVery good / 很好
Tip / 提示: Start with base for preview, re-run with small or medium for final output. / 先用 base 快速预览,再用 small 或 medium 获取最终结果。
bash
# Write content to temp file / 将内容写入临时文件
python3 -c "
content = open('/dev/stdin').read()
with open('/tmp/note_content.txt', 'w') as f:
f.write(content)
" <<< "$NOTE_BODY"
# Create note in a specific folder / 在指定文件夹创建备忘录
osascript -e '
tell application "Notes"
tell folder "<FOLDER_NAME>"
set noteTitle to "<TITLE>"
set noteBody to do shell script "cat /tmp/note_content.txt"
make new note with properties {name:noteTitle, body:noteBody}
end tell
end tell
'
Omit tell folder block to use the default Notes folder. The note syncs to iPhone via iCloud automatically.
去掉 tell folder 部分可使用默认文件夹。备忘录会通过 iCloud 自动同步到 iPhone。
/tmp/note_content.txt after use / 使用后清理临时文件