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

39 lines
1.8 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Phase 0 验证脚本:用 llama.cpp + Qwen3-ASR 转写一段音频并测 RTF
#
# 依赖(本机验证环境:Deepin 25 / Qt 6.8 / x86_64):
# libllama0, libllama-dev, libggml0, libggml-dev, libmtmd (系统自带 9951+dfsg-1deepin1)
# llama.cpp-tools 的二进制(本脚本从 deb 解包到 LLAMA_TOOLS,不需要 root 安装)
#
# 用法: ./bench.sh <audio.wav> [prompt] # prompt 默认 <__media__>
# 可选环境变量: THREADS / MODEL / MMPROJ / LLAMA_TOOLS / LLAMA_LIBDIR / TMO
set -uo pipefail
LLAMA_TOOLS="${LLAMA_TOOLS:-/tmp/opencode/llama-tools}"
LLAMA_LIBDIR="${LLAMA_LIBDIR:-/usr/lib/x86_64-linux-gnu/llama}"
MODEL="${MODEL:-/tmp/opencode/models/Qwen3-ASR-0.6B-Q8_0.gguf}"
MMPROJ="${MMPROJ:-/tmp/opencode/models/mmproj-Qwen3-ASR-0.6B-Q8_0.gguf}"
AUDIO="${1:?usage: bench.sh <audio> [prompt]}"
PROMPT="${2:-<__media__>}"
THREADS="${THREADS:-8}"
CLI="$LLAMA_TOOLS/usr/bin/llama-cli"
export LD_LIBRARY_PATH="$LLAMA_LIBDIR:$LLAMA_TOOLS/usr/lib/x86_64-linux-gnu/llama"
dur=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$AUDIO")
printf '音频: %s (%ss) 模型: %s 线程: %s\n' "$AUDIO" "$dur" "$(basename "$MODEL")" "$THREADS"
# 关键: stdin 必须接 /dev/null 并在外层套 timeout
# 否则 llama-cli 生成完会回到 stdin 读取循环而挂住
t0=$(date +%s.%N)
timeout "${TMO:-300}" "$CLI" -m "$MODEL" --mmproj "$MMPROJ" --audio "$AUDIO" \
-p "$PROMPT" -n 256 --temp 0 -t "$THREADS" -st --simple-io \
</dev/null >/tmp/lc_out.log 2>/tmp/lc_err.log
rc=$?
t1=$(date +%s.%N)
[ "$rc" = 124 ] && echo "(警告: 被 timeout 杀掉)"
echo "---- 转写结果 ----"
cat /tmp/lc_out.log
echo "---- 计时 ----"
python3 -c "print(f'墙钟总耗时: {$t1-$t0:.2f}s 音频: $dur s → RTF(含加载) ≈ {($t1-$t0)/$dur:.3f}')"