#!/usr/bin/env bash # Phase 0: 验证"系统播放音频 → monitor 源采集"链路 # 用法: ./loopback_test.sh <要播放的音频文件> <输出wav> set -euo pipefail SRC="${1:?usage: loopback_test.sh }" OUT="${2:?usage: loopback_test.sh }" echo "默认 sink : $(pactl get-default-sink)" echo "默认 sink 的 monitor: $(pactl get-default-sink).monitor" # 1) 后台开始录制默认输出的 monitor(48k 立体声 float32,与设备速率一致) parec -d @DEFAULT_MONITOR@ --format=float32le --rate=48000 --channels=2 \ --file-format=wav "$OUT" & REC=$! sleep 0.6 # 等录制真正开始 # 2) 播放测试音频到默认输出 paplay --device="$(pactl get-default-sink)" "$SRC" sleep 0.6 kill "$REC" 2>/dev/null || true wait "$REC" 2>/dev/null || true echo "采集完成: $OUT" ffprobe -v error -show_entries format=duration -of csv=p=0 "$OUT" | awk '{printf "采集时长: %.2f s\n",$1}'