关于 AudioEditor
AudioEditor 是用于清理录音的音频编辑技能,通过逐词转录和片段分类识别填充词、口误、重复及静音,再执行剪切和淡化处理。可预览编辑,也可选择云端润色。
主要功能
- 01逐词转录音频
- 02分类识别待剪辑片段
- 03剪切并交叉淡化
- 04以室内底噪填补间隙
- 05可选 Cleanvoice 云端润色
- 06检测并修复噪声门杂音
适用场景
- 01清理播客中的填充词和静音
- 02预览拟议剪辑后再应用
- 03对录音进行激进清理和云端润色
- 04修复录音中的噪声门点击声
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ danielmiessler/ lifeos --skill audioeditor安装后在 Claude Code 中输入/audioeditor确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
Tools/Analyze.help.mdAnalyze.tsEdit.help.mdEdit.tsGateRepair.help.mdGateRepair.tsGateScan.help.mdGateScan.tsLoudnessLock.help.mdLoudnessLock.tsPipeline.help.mdPipeline.tsPolish.help.mdPolish.tsTranscribe.help.mdTranscribe.tsWorkflows/Clean.md详细介绍
AudioEditor
自定义
执行前,请检查用户自定义设置是否位于:
~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/AudioEditor/
如果此目录存在,请加载并应用其中找到的任何 PREFERENCES.md、配置或资源。这些设置会覆盖默认行为。如果此目录不存在,则使用技能默认设置。
语音通知
调用此技能时,必须先发送此通知,再执行任何其他操作。
-
发送语音通知:
curl -s -X POST http://localhost:31337/notify \ -H "Content-Type: application/json" \ -d '{"message": "Running the WORKFLOWNAME workflow in the AudioEditor skill to ACTION"}' \ > /dev/null 2>&1 & -
输出文本通知:
Running the **WorkflowName** workflow in the **AudioEditor** skill to ACTION...
此操作不可跳过。调用此技能后,请立即执行此 curl 命令。
功能
自动清理录制的音频——去除填充词、说到一半的开头、口吃和无声片段,降低呼吸声,并为每处剪辑添加交叉淡化。它会在词语级别转录文件,让 Claude 对每个片段进行分类(KEEP、CUT_FILLER、CUT_FALSE_START、CUT_STUTTER、CUT_DEAD_AIR),然后使用 ffmpeg 执行剪辑。可选的 Cleanvoice 处理可进一步润色。模式:--preview、--aggressive、--polish。
问题
手动清理录音意味着要反复拖动波形,逐一查找每个“嗯”、说到一半的句子和三秒钟的静音,然后为每处剪辑添加交叉淡化,以免出现咔哒声。这既缓慢又繁琐,而粗略的自动工具又容易剪得太多——它会把修辞性停顿和无意停顿一起删掉,或者在拼接处留下明显的痕迹。此流水线可以区分刻意停顿和无声片段,用室内环境声填补间隙,并为每处编辑添加交叉淡化,让输出听起来干净自然,而不是支离破碎。
工作原理
Whisper 生成词语级时间戳,Claude 对每个片段进行分类(区分修辞性强调和意外重复),ffmpeg 则通过 40ms qsin 交叉淡化、室内环境声间隙填充,以及将呼吸声音量衰减至 50% 而非删除来执行剪辑。可选的 Cleanvoice API 处理可去除嘴部杂音、残留填充词并进行响度标准化。
流水线
Audio Input
|
[Transcribe] Whisper word-level timestamps (insanely-fast-whisper on MPS)
|
[Analyze] Claude classifies each segment:
| KEEP / CUT_FILLER / CUT_FALSE_START / CUT_EDIT_MARKER / CUT_STUTTER / CUT_DEAD_AIR
| Distinguishes rhetorical emphasis from accidental repetition
|
[Edit] ffmpeg executes cuts:
| - 40ms qsin crossfades at every edit point
| - Room tone extraction and gap filling
| - Breath attenuation (50% volume, not removal)
|
[Polish] (optional) Cleanvoice API final pass:
- Mouth sound removal
- Remaining filler detection
- Loudness normalization
Output: cleaned MP3/WAV
工作流路由
| 工作流 | 触发条件 | 文件 |
|---|---|---|
| 清理 | “清理音频”、“编辑音频”、“去除填充词”、“清理播客”、“去除嗯声”、“剪掉无声片段”、“润色音频” | Workflows/Clean.md |
工具
| 工具 | 命令 | 用途 |
|---|---|---|
| 转录 | bun ${LIFEOS_SKILL_DIR}/Tools/Transcribe.ts <file> | 通过 Whisper 进行词语级转录 |
| 分析 | bun ${LIFEOS_SKILL_DIR}/Tools/Analyze.ts <transcript.json> | 由大模型驱动的编辑分类 |
| 编辑 | bun ${LIFEOS_SKILL_DIR}/Tools/Edit.ts <file> <edits.json> | 执行剪辑,并添加交叉淡化和室内环境声 |
| 润色 | bun ${LIFEOS_SKILL_DIR}/Tools/Polish.ts <file> | 使用 Cleanvoice API 进行云端润色 |
| 流水线 | bun ${LIFEOS_SKILL_DIR}/Tools/Pipeline.ts <file> [--polish] | 端到端完整流水线 |
| GateScan | bun ${LIFEOS_SKILL_DIR}/Tools/GateScan.ts <file> [--json] | 检测噪声门跳变(静音边界处的阶跃);发现缺陷时退出代码为 1 |
| GateRepair | bun ${LIFEOS_SKILL_DIR}/Tools/GateRepair.ts <in> <out.mp4> --finalize [--abr 192k] | 修复噪声门跳变;--finalize 会反复处理,直到编码后的文件通过扫描 |
| LoudnessLock | bun ${LIFEOS_SKILL_DIR}/Tools/LoudnessLock.ts <in> [--out <out.mp4>] | 测量或将交付响度锁定在 −14 LUFS / −1dBTP(YouTube 标准);会自行重新测量,仅在误差处于容差范围内时退出代码为 0 |
门限伪影(仅在收到报告时处理——常规检查已于 2026-07-15 退役)
采集链路中的噪声门(录音器滤波器、macOS Voice Isolation)会将音频截断为数字零,且不做淡变;电平调整会放大每个边缘,产生可听见的滴答声——2026-07-13 发生的事件(774 个边缘、两支公开发布的视频、听众投诉)。该问题已在采集环节从根本上修复:{{PRINCIPAL_NAME}} 于 2026-07-14 从麦克风链路中移除了 OBS 噪声门滤波器,并于 2026-07-15 指示从标准工作流中移除每次导出后的常规 GateScan 检查——不要对每次导出都重新扫描。
**有人实际报告音频中有滴答声或咔嗒声时:**使用 GateScan 扫描文件以确认(采样域阶跃检测,有缺陷时退出码为 1),使用 GateRepair --finalize 修复(尽可能在电平调整前修复;扫描最终 ENCODE,而不是中间 WAV——AAC 会在接近静音处重新引入阶跃)。如果 RAW 录音扫描结果不干净,说明采集链路中的噪声门又启用了——请报告此问题。
所需 API 密钥
| 服务 | 环境变量 | 获取位置 |
|---|---|---|
| Anthropic(用于分析步骤) | ANTHROPIC_API_KEY | 已通过 Claude Code 设置 |
| Cleanvoice(用于润色步骤,可选) | CLEANVOICE_API_KEY | cleanvoice.ai Dashboard Settings API Key |
示例
示例 1:清理播客录音
User: "clean up the audio on this podcast file"
-> Invokes Clean workflow
-> Runs full pipeline: transcribe -> analyze -> edit
-> Outputs cleaned MP3 with filler words, stutters, and dead air removed
示例 2:应用前预览编辑
User: "show me what edits you'd make to this recording"
-> Invokes Clean workflow with --preview flag
-> Transcribes and analyzes, shows proposed edits without modifying audio
-> User reviews edit list, then runs again to apply
示例 3:使用云端润色进行强力清理
User: "aggressively clean this audio and polish it"
-> Invokes Clean workflow with --aggressive --polish flags
-> Tighter thresholds for filler detection
-> Cleanvoice API pass for mouth sounds and normalization
注意事项
- **转录准确度会因音频质量而异。**背景噪声、多位说话者和口音都会降低准确度。
- **剪切检测基于启发式规则。**提交前务必预览编辑——自动剪切可能会删除有意保留的停顿。
- **云端润色会将音频上传到外部服务。**对于敏感内容,请确认用户接受云端处理。
- **分贝域的悬崖检测器会对淡出尾部产生误报。**合法的余弦淡出到数字零时,其尾部的分贝斜率为无穷大,因此任何 >NdB/2ms 检测器都会一直将其标记出来。使用采样域 STEP 检测(GateScan)验证修复,绝不要使用分贝斜率。(2026-07-13)
- **单向迭代淡变无法消除边界处的杂散脉冲。**位于噪声门边界处的单个采样点会在反复进行单向淡变后留存;先淡出再淡入的“静音”会保留脉冲边缘及其前沿阶跃。V 形凹口(在边界处向零做余弦淡变,两侧都处理)以及将噪声门静音区内部硬置零,才是能够收敛的修复方法。(2026-07-13)
- **仪表检测干净 ≠ 听感干净。**扫描器能找到滴答声;修复也可能造成听得见的缺口,而滴答声扫描器却会判定干净(2026-07-12 的 duck 事件)。让探测方法与人耳听到的缺陷类型相匹配,将修复控制在最低限度,并在替换时向负责人提供修复前后的试听片段。
执行日志
完成任何工作流后,追加一条 JSONL 记录:
echo '{"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","skill":"AudioEditor","workflow":"WORKFLOW_USED","input":"8_WORD_SUMMARY","status":"ok|error","duration_s":SECONDS}' >> ~/.claude/LIFEOS/MEMORY/SKILLS/execution.jsonl
将 WORKFLOW_USED 替换为已执行的工作流,将 8_WORD_SUMMARY 替换为简短的输入描述,并将 SECONDS 替换为大致的实际耗时。如果工作流失败,则记录 status: "error"。