拓冰建站拓冰建站
首页 / 资讯中心 / 正文

如何用transcribe-bench跑基准测试:backend×变体×量化矩阵完整教程

如何用transcribe-bench跑基准测试backend×变体×量化矩阵完整教程【免费下载链接】transcribe.cppggml speech-to-text inference for 16 model families项目地址: https://gitcode.com/GitHub_Trending/tr/transcribe.cpptranscribe-bench是 transcribe.cpp一个基于 ggml 的 C/C 语音识别推理库支持 Whisper、Parakeet、Qwen3-ASR 等 16 模型家族内置的性能基准测试工具。它能把「推理后端 backend × 模型变体 variant × 量化方案 quant × 音频样本 sample」四个维度组成一张完整的测试矩阵逐格测出 mel 前端、编码器、解码器三阶段耗时与实时率RTF并输出可归档、可对比的 JSON 报告——这是做性能回归检查和后端选型时最顺手的工具。一、transcribe-bench 是什么测什么工具本体只有一个 C 源文件 tools/transcribe-bench/main.cpp定位很明确一次加载模型先做不计时预热--warmup默认 1 次再做计时迭代--iters默认 2 次把每次迭代按阶段拆开计时。指标含义mel_ms梅尔频谱前端耗时encode_ms编码器耗时decode_ms解码器耗时wall_ms用户真正感知的墙钟耗时rtf_wall_mean音频时长 ÷ 平均墙钟耗时 1 即比实时更快除了速度它还会输出转写文本和 token 序列的 SHA256 指纹——这样一旦某次优化悄悄改变了识别结果报告 diff 里会立刻暴露性能数字再好看也不敢蒙混过关。二、先构建让 transcribe-bench 出现在 build/bin 里transcribe-bench 属于开发者工具需要显式打开TRANSCRIBE_BUILD_TOOLS开关见 tools/CMakeLists.txtcmake -B build -DTRANSCRIBE_BUILD_TOOLSON cmake --build build不同后端的构建方式略有差异CPU默认构建即可无需 GPUMetalApple Silicon默认自动启用VulkanLinux/Windowscmake -B build -DTRANSCRIBE_VULKANONCUDALinux NVIDIAcmake -B build -DTRANSCRIBE_CUDAON三、手动跑一格最小上手示例不赶时间可以先单独跑一个「模型 × 样本」组合感受一下build/bin/transcribe-bench \ --model models/parakeet-tdt-0.6b-v2/parakeet-tdt-0.6b-v2-F16.gguf \ --sample samples/jfk.wav \ --iters 5 --warmup 2 --backend cpu关键参数速查参数作用--backend指定auto\|cpu\|cpu_accel\|metal\|vulkan\|cuda\|rocm其中cpu是严格纯 CPUcpu_accel允许 BLAS/AMX 等主机侧加速--device N精确选择某块 GPU索引可用transcribe-cli --list-devices查到--threads N指定 CPU 线程数--json-outJSON 结果写入文件而不是 stdout四、真正的用法用 Python 驱动跑完整矩阵手敲命令行只能测一格scripts/bench/run.py 才是设计给日常用的矩阵驱动器。它会自动探测本机CPU 型号、系统、发现models/下所有变体然后按 backend 循环调用 transcribe-bench把结果聚合成每variant, backend一份 JSON# 全量矩阵models/ 下所有变体 × 默认三档量化 × jfk,dots 两个样本 uv run scripts/bench/run.py # 只测一个变体、指定后端和迭代次数 uv run scripts/bench/run.py --models Qwen3-ASR-0.6B --backends cpu --iters 20 --warmup 5 # 给报告起个稳定名字方便日后对比重复运行会覆盖同名文件 uv run scripts/bench/run.py --backends cpu --name pre-refactor几个新手最关心的细节--models支持三种写法变体目录名Qwen3-ASR-0.6B、HF 风格Qwen/Qwen3-ASR-0.6B自动去掉 org 前缀、或直接指定某个.gguf文件路径--quants默认是f16,q8_0,q4_k_m三档标准量化层部分模型如 Qwen3-ASR发布的是BF16而非F16记得改成--quants bf16,q8_0,q4_k_m缺文件只警告不报错某变体没有对应量化的 GGUF 时会被跳过并提示不会中断整个矩阵--dry-run强烈建议先跑一遍只打印将执行的后端和单元格清单不实际测试适合先确认矩阵规模报告落在reports/perf/机器名/时间戳_变体_后端.json机器名由 CPU 型号派生不同机器的结果天然不会互相覆盖。每个单元格里还带git_sha能精确回溯到是哪份代码产出的数字。五、出版级配置--profile 一键复现官方基准项目发布到模型仓库的速度表不是随手测的而是由 catalog/_benchmark_profiles.json 里的「发布档案」默认asr-publication-v2严格约束固定Q8_0与Q4_K_M两档量化、jfk/dots两个样本、3 次计时迭代、1 次预热且指定了目标机器和后端如 Apple M4 Max 跑cpumetalAMD 轻薄本跑cpuvulkan并强制 55°C 以下冷却门槛避免热降频污染数据。uv run scripts/bench/run.py --profile带上--profile后quants、samples、backends、iters、warmup 全部由档案接管手动指定会被直接拒绝——这是刻意设计保证「发布数字」和「实验数字」永远不混淆。单语言微调模型还会自动换成本语言短/长样本避免在分布外音频上跑出不可比的循环解码结果。六、对比两次运行compare.py 出差异表测完了要回答的问题是我这次改动到底是提速还是变慢用 scripts/bench/compare.py 按变体, 后端, 量化, 样本四元组对齐两份报告直接给出每个单元格的耗时差uv run scripts/bench/compare.py \ --baseline reports/perf/xxx/pre-refactor_*.json \ --candidate reports/perf/xxx/post-refactor_*.json # 加 5% 回归门槛任何单元格 wall_ms 回退超 5% 就以退出码 1 失败可直接进 CI uv run scripts/bench/compare.py --threshold 5.0 \ --baseline reports/perf/xxx/baseline_*.json \ --candidate reports/perf/xxx/candidate_*.json输出就是一张整齐的表格variant / backend / quant / sample / wall_ms(A) / wall_ms(B) / delta% / status一眼定位哪个格子回退。七、新手常见坑清单 忘了开工具开关默认构建没有transcribe-bench驱动会提示build the missing targetVulkan/CUDA 统一构建要靠显式指定自动探测无法从路径判断二进制是否编译了 GPU 后端请显式--backends vulkan或cuda/rocm否则可能被保守跳过metal 只能跑在 macOS在 Linux 上显式请求 metal 会得到清晰的 unavailable 报错样本必须 16 kHz 单声道 WAV仓库 samples/ 目录下有jfk.wav、dots.wav等现成样本其他音频先用 ffmpeg 转一下别盯着平均值看wall_ms墙钟才是用户可感知的数字rtf_compute_mean只是三阶段计时之和适合看阶段瓶颈总结整套工作流可以概括为三步构建开启工具开关 →scripts/bench/run.py铺满 backend×variant×quant×sample 矩阵 →scripts/bench/compare.py用阈值把关回归。配合--name命名基线和--profile出版档案你得到的就是一套可复现、可审计、可进 CI 的语音识别性能基准体系。更多细节可查阅官方文档 docs/tools/benchmarking.md。【免费下载链接】transcribe.cppggml speech-to-text inference for 16 model families项目地址: https://gitcode.com/GitHub_Trending/tr/transcribe.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门