用途:常开式环境音频采集。持续录音,用 whisper-cpp(Metal 加速)转写,把带时间戳的条目追加到 org 文件,并可在 Emacs 中实时查看。
主要能力:通过 tmux 会话运行自动重启循环,保证崩溃后可恢复;脚本用 ffmpeg avfoundation 设备 :1 录制 6 秒 WAV 分块,用 sox RMS(< 0.005)做静音检测,对非静音分块调用 whisper-cli --model ~/v/ggml-base.en.bin 转写,并把 ** [timestamp]\ntext\n 条目追加到 ~/v/audio-capture.org。
使用方式:启动采集会话 tmux new-session -d -s capture 'while true; do bash ~/v/scripts/always-on-capture.sh; echo "[restart] $(date)"; sleep 2; done'。在 Emacs 中执行 M-x server-start,打开 ~/v/audio-capture.org,再执行 M-x auto-revert-tail-mode 实现实时 tail。可选监控:tmux attach -t capture 或 tail -f ~/v/audio-capture.org。停止:tmux kill-session -t capture。
配置项(在 always-on-capture.sh 中):AUDIO_DEVICE 默认 :1;CHUNK_SECONDS 默认 6;SILENCE_THRESHOLD 默认 0.005;MIN_TEXT_LEN 默认 6;MODEL 默认 ~/v/ggml-base.en.bin;ORG_FILE 默认 ~/v/audio-capture.org。
适用场景:需要持续记录环境语音并实时查看转写文本的本地工作流。
限制与排障:全部“no audio”通常是设备索引错误,可用 ffmpeg -f avfoundation -list_devices true -i "" 查找麦克风;全部“silence”说明阈值过高,可调低 SILENCE_THRESHOLD;Emacs 不更新需先 M-x server-start;不 tail 应使用 auto-revert-tail-mode 而非 auto-revert-mode;脚本立即退出与 set -e 有关,脚本使用 set -uo pipefail(无 -e)。相关文件:~/v/audio-capture.org、~/v/scripts/always-on-capture.sh、~/v/audio_acset.duckdb、~/v/scripts/audio-capture-org.py。