RabiSpeech 模型闭环基准
SkillFiles & storageBenchmark local speech-to-text and text-to-speech models by running tests that measure speed, memory, and accuracy into report files.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the RabiSpeech 模型闭环基准 skill
About this skill
Run or update the closed-loop benchmark for RabiSpeech local speech models. Use it to add, replace, or compare local TTS/ASR models, testing first-request, load, warmup, and hot-state latency, RTF, VRAM, waveforms, and CER, and generate JSON, CSV, and HTML reports viewable in RibiWebGUI from a unifi
What this skill tells your AI
The instructions your AI receives, as published by vb2250158/rabiroute in skills/benchmark-rabispeech-models/SKILL.md and read by ahel’s review.
把脚本当执行器,把本 skill 当顺序和口径。项目根目录记为 <repo>。
固定边界
- 只测试已安装、已缓存的本地模型;不启用、恢复或调用云 API。
- RabiSpeech 可以支持用户显式启用的 HTTPS API Provider,但该能力只做独立烟测和运行时验收;不能与本地模型结果混排、冒充本机耗时或本机显存数据。需要验证 API Provider 时改用
rabiroute-voice-workstation。 - 按
TTS -> WAV -> ASR顺序执行。每个 ASR 必须识别每个 TTS 的同一批音频。 - 复用
plugin-adapters/rabi-speech/benchmarks/cases.zh-CN.json;除非测试目标就是语料版本升级,不为某个模型临时换题。 - 原始 WAV、worker 日志和 JSON 放在插件
output/benchmarks/<date>-<name>/,不要提交。 - 公开 HTML 不写 token、参考音路径、角色私有资料、模型缓存路径或运行期绝对路径。
1. 准备运行目录
创建一个新的基准目录,复制或直接引用固定语料。先记录测试机的 OS、CPU、RAM、GPU、驱动、模型版本和实际 execution provider,并更新 benchmarks/report-metadata.json。
确认要测的 TTS worker 已经在本机回环地址运行。冷启动比较需要显式重启对应 worker;如果测试前已经 ready,必须把首条标为 already-warm,不能冒充冷启动。
先通过 GET /api/speech/models 或 GET /v1/models 读取真实模型与请求 Schema,不要靠旧报告或 Skill 中的模型名单猜当前安装状态。人格声线、参考音和 Provider 声线 ID 都不是公开基准参数;若测试需要人格素材,只能在本机传入,报告中必须脱敏。
2. 先测试每个 TTS
对每个 worker 各执行一次:
py -3.10 plugin-adapters\rabi-speech\scripts\benchmark_models.py tts `
--engine <stable-engine-id> `
--url http://127.0.0.1:<worker-port> `
--texts plugin-adapters\rabi-speech\benchmarks\cases.zh-CN.json `
--output <run-dir>\tts-<stable-engine-id>.json `
<voice-or-reference-options>
使用稳定、公开的 engine id。角色参考音只作为本机参数传入,不复制进报告目录。检查每个结果都有三条记录、三个 WAV、音频时长、RTF、RMS、削波率和 GPU 采样。
3. 再测试每个 ASR
选择一条固定短句 WAV 做不计分预热;默认用 ONNX-VITS 的 short-dialogue。每个 ASR 都传入全部 TTS 结果:
py -3.10 plugin-adapters\rabi-speech\scripts\benchmark_models.py asr `
--model <cached-model-id> `
--model-root <local-model-cache> `
--tts-results <run-dir>\tts-onnx-vits.json `
--tts-results <run-dir>\tts-qwen3-tts-0.6b.json `
--tts-results <run-dir>\tts-indextts2.json `
--warmup-audio <run-dir>\audio\onnx-vits\01-short-dialogue.wav `
--output <run-dir>\asr-<cached-model-id>-warm.json
保持 local_files_only 语义。若模型未缓存,列为“支持但未测试”,不要为一次报告自动下载。确认结果包含模型加载、预热、正式逐句转写、CER、耗时和 RTF。
4. 汇总和生成 HTML
先用 summarize 生成 summary.json 与三张 CSV,再用 render-html 生成 RibiWebGUI 的公开报告:
py -3.10 plugin-adapters\rabi-speech\scripts\benchmark_models.py render-html `
--summary <run-dir>\summary.json `
--texts plugin-adapters\rabi-speech\benchmarks\cases.zh-CN.json `
--metadata plugin-adapters\rabi-speech\benchmarks\report-metadata.json `
--template plugin-adapters\rabi-speech\benchmarks\report-template.html `
--tts <each-tts-json> `
--asr <each-asr-json> `
--output ribiwebgui\public\reports\rabispeech-model-benchmark.html
HTML 必须至少呈现:
- 测试文本与闭环顺序。
- TTS 功能矩阵、首请求、热态耗时、RTF、显存和柱状图。
- ASR 功能矩阵、加载、预热、热态耗时、总体 CER 和柱状图。
- ASR 按 TTS 来源分组的 CER,以及逐句参考文本 / 识别文本 / CER 表。
- 测试硬件、最低 / 建议配置、历史归档模型、方法和限制。
5. 新增模型
新增 TTS 时:先在 report-metadata.json.tts_models 增加功能说明,再生成一个新的 tts-*.json,并让所有 ASR 重跑包含它的输入集合。
新增 ASR 时:先在 report-metadata.json.asr_models 增加功能说明,再让它识别所有现有 TTS 音频。不要只测最容易识别的一种声线。
脚本和模板按数据数组渲染;不要为每个模型硬编码新表格或新柱形。
验收
py -3.10 -m py_compile plugin-adapters\rabi-speech\scripts\benchmark_models.py
py -3.10 plugin-adapters\rabi-speech\scripts\benchmark_models.py --help
node skills\audit-rabiroute-public-docs\scripts\audit-public-docs.mjs
npm run relay:rabilink:webgui:check
npm run webgui:build
然后打开:
$status = & "$env:LOCALAPPDATA\Programs\RabiRoute\RabiRouteHost.exe" --command status --json | ConvertFrom-Json
if (-not $status.managerBaseUrl -or -not $status.applicationGenerationId -or -not $status.managerInstanceId) { throw "Host 未返回完整身份。" }
$meta = Invoke-RestMethod ($status.managerBaseUrl + "/meta") -TimeoutSec 10
if ($meta.applicationGenerationId -ne $status.applicationGenerationId -or $meta.managerInstanceId -ne $status.managerInstanceId) { throw "Manager 身份不一致。" }
Start-Process ($status.managerBaseUrl + "/#/docs")
Start-Process ($status.managerBaseUrl + "/#/speech")
Start-Process ($status.managerBaseUrl + "/reports/rabispeech-model-benchmark.html")
检查“语音服务”下的 TTS、ASR、性能报告三个栏目、目标测试机报告,以及使用手册中的“从远端调用 TTS 与 ASR”。确认表格、柱状图、逐句结果、移动端横向滚动和独立报告链接都可用。
如果有真实 Relay 验收环境,还要登录并打开:
https://<relay>/manage/<account>/<RabiGUID>/#/speech
https://<relay>/manage/<account>/<RabiGUID>/reports/rabispeech-model-benchmark.html
远端报告必须返回 200 和 text/html。没有公网环境时,只能记录“本地报告与 Relay 静态契约已验证”,不能写成真实公网已通过。
最后再确认运行时语音接口仍保持自己的合同:直接 TTS/ASR 会写语音记录,TTS 音频缓存按单条时间戳保留 24 小时;Route 的 hot/keyword 投递、人格关键词、双向会话账本和说话人绑定不属于模型性能评分,不能用基准脚本改写这些配置。
Signals
- GitHub stars
- 502
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
benchmark-rabispeech-models- Source
- github.com/vb2250158/rabiroute