Files
live-caption/experiments/phase0/loopback_test.sh
T

25 lines
969 B
Bash
Raw Normal View History

#!/usr/bin/env bash
# Phase 0: 验证"系统播放音频 → monitor 源采集"链路
# 用法: ./loopback_test.sh <要播放的音频文件> <输出wav>
set -euo pipefail
SRC="${1:?usage: loopback_test.sh <file> <out.wav>}"
OUT="${2:?usage: loopback_test.sh <file> <out.wav>}"
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}'