MIC Recorder Skill
录音并发送音频到飞书。
方案对比
| 方案 | 成功率 | 说明 |
|---|---|---|
| Automator 应用 ✅ | 100% | 通过 Automator 创建 RecordMic.app,已验证可用 |
| 语音备忘录 | 100% | macOS 系统应用,可靠 |
| FFmpeg 命令行 | 0% | 受 macOS 权限限制,只能录静音 |
| Python/sounddevice | 0% | 受 macOS 权限限制 |
| Swift/AVAudioRecorder | 0% | 受 macOS 权限限制 |
方案一:Automator 应用(推荐)✅
配置(用户已完成)
-
用 Automator 创建 RecordMic.app
- 新建 → 应用程序
- 添加"运行 Shell 脚本"
- 写入 FFmpeg 命令
-
应用位置:
~/.openclaw/tools/RecordMic.app -
已授权麦克风权限
使用方法
录制:
# 启动应用录音(默认 20 秒)
open ~/.openclaw/tools/RecordMic.app
# 或使用 wait 命令等待完成
open -W ~/.openclaw/tools/RecordMic.app
发送录音:
# 发送到飞书(RecordMic.app 自动复制到 workspace)
# ✅ 正确:workspace 路径,使用 media 参数
message(action="send", channel="feishu", media="~/.openclaw/workspace/recording_latest.wav", caption="录音已降噪处理")
# ✅ file_path 参数也行
message(action="send", channel="feishu", file_path="~/.openclaw/workspace/recording_latest.wav", caption="录音已降噪处理")
# ✅ path 参数也行
message(action="send", channel="feishu", path="~/.openclaw/workspace/recording_latest.wav", caption="录音已降噪处理")
修改录制时长:
编辑 RecordMic.app:
- 右键 → 显示包内容
- Contents/document.wflow
- 找到
-t 20改为所需秒数
关键要点
Automator 应用方案
- 应用位置:
~/.openclaw/tools/RecordMic.app - 录音输出:
/tmp/openclaw_recording.wav - 默认时长:20 秒
- 格式:WAV (16-bit PCM, 48kHz, 单声道)
- 已授权麦克风权限
- 默认降噪:Gemini 方案(仅FFT降噪,无噪声门,高通200Hz + 低通3000Hz + afftdn=nr=10:nf=-25:tn=1)
- 最终输出:
/tmp/openclaw_recording_denoised.wav+ 自动复制到~/.openclaw/workspace/recording_latest.wav
发送规则
- 文件必须在 workspace 目录(安全策略 CVE-2026-26321)
- 不要用 /tmp/ 路径发送,先复制到 workspace
- 使用飞书发送:
channel="feishu"
降噪处理(2026-03-09 更新)
⭐ 当前默认(Gemini 方案,仅FFT降噪,无噪声门)
ffmpeg -y -i /tmp/openclaw_recording.wav -af "highpass=f=200,lowpass=f=3000,afftdn=nr=10:nf=-25:tn=1" /tmp/openclaw_recording_denoised.wav
- 高通 200Hz + 低通 3000Hz
- FFT 降噪 afftdn=nr=10:nf=-25:tn=1
- 无噪声门:保留完整人声,包括尾段轻声
- 2026-03-09 更新:替代 v7 为默认方案
- 人声最清晰,沙沙声抑制良好(2-4kHz RMS -67.4 dB)
历史方案(v7,小波降噪,保留人声和键盘声)
ffmpeg -y -i /tmp/openclaw_recording.wav -af "highpass=f=100,lowpass=f=4500,afwtdn=sigma=0.35:percent=90" /tmp/openclaw_recording_denoised.wav
- 沙沙声(2-4kHz)降低 91%
- RMS 噪声底降低 77-94%
- 人声频段保留良好
- 注意:v7 仍有 Mac mini 硬件底噪(RMS -59 dB),无法完全消除
替代方案(v8,超强降噪,沙沙声基本消除但人声略损失)
ffmpeg -y -i /tmp/openclaw_recording.wav -af "highpass=f=100,lowpass=f=4500,afwtdn=sigma=0.4:percent=95" /tmp/openclaw_recording_denoised.wav
- 沙沙声降低 87%
- RMS 噪声底降低 71%
- 人声中高频略损失
旧参数(v1,轻度降噪,已不推荐)
ffmpeg -y -i /tmp/openclaw_recording.wav -af "highpass=f=80,lowpass=f=8000,afftdn=nf=-25:nr=12" /tmp/openclaw_recording_denoised.wav
测试结果对比
| 版本 | 2-3kHz 幅度 | 3-4kHz 幅度 | RMS | 说明 |
|---|---|---|---|---|
| 原始 | 237,534 | 183,332 | 674 | - |
| v1 | 82,671 | 70,594 | 462 | 沙沙声仍明显 |
| v7 | 21,394 | 21,643 | 198 | 小波降噪,已验证 |
| v8 | 10,683 | 10,825 | 191 | 沙沙声最低,人声略损 |
| Gemini ⭐ | - | - | - | 当前默认,FFT降噪 |
完整代码示例
import subprocess
import os
def record_audio(duration=20):
"""使用 Automator 应用录音(Gemini 进阶方案)"""
# 启动应用(等待完成)
subprocess.run(['open', '-W', '~/.openclaw/tools/RecordMic.app'])
# RecordMic.app 已自动复制到 workspace
# 发送到飞书
# message(action="send", channel="feishu", media="~/.openclaw/workspace/recording_latest.wav", caption="录音已降噪处理")
故障排除
RecordMic.app 无法录音
- 检查麦克风权限:系统设置 → 隐私与安全性 → 麦克风
- 确认 RecordMic.app 已勾选
- 如果未勾选,重新添加并授权
录音文件不存在
- 检查应用是否执行完成
- 查看输出路径:
/tmp/openclaw_recording.wav - 应用路径:
~/.openclaw/tools/RecordMic.app
发送失败
- 检查文件是否在 workspace 目录
- 不要用 /tmp/ 路径
- 文件大小是否合理(> 1KB)
更新日志
- 2026-03-04: 创建 skill
- 2026-03-04: 验证 Automator 应用方案,100% 成功!
- 2026-03-09: v7 参数确认为最佳方案(高通100Hz + 低通4500Hz + 小波降噪 sigma=0.35 percent=90)
- 2026-03-09: 默认录音时长更新为 20 秒,RecordMic.app 自动执行 v7 降噪
- 2026-03-09: 新录音测试验证,沙沙声降低 91%,RMS 噪声底降低 77-94%
- 2026-03-09: 更新为 Gemini 进阶方案(高通200Hz + 低通3000Hz + afftdn=nr=10:nf=-25:tn=1),替代 v7 为当前默认方案
- 2026-03-09: RecordMic.app 自动复制到 workspace(安全策略要求),发送前无需手动复制