Files
live-caption/experiments/phase0/loopback_test.sh
T
blumia 18dbc9c8d3 feat: add real-time caption CLI prototype with Qwen3-ASR
Add a C++/Qt6/CMake CLI prototype that captures the default sink
monitor through libpulse and transcribes it in-process with Qwen3-ASR
via libllama/libmtmd. Add phase 0/1 verification docs.

新增实时字幕命令行原型:libpulse 采集默认输出 monitor,进程内用
libllama/libmtmd 跑 Qwen3-ASR 推理。附阶段 0/1 验证文档。
2026-10-12 11:40:59 +08:00

26 lines
969 B
Bash
Executable File

#!/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}'