ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

VoiceStudio 怎么用内置基准工具测量引擎 RTF 与峰值显存?

VoiceStudio 怎么用内置基准工具测量引擎 RTF 与峰值显存? VoiceStudio 怎么用内置基准工具测量引擎 RTF 与峰值显存【免费下载链接】VoiceStudioVoiceStudio is the open-source, fully-local ElevenLabs alternative — voice cloning, voice design, video dubbing, dictation, transcription audiobook creation in 646 languages.项目地址: https://gitcode.com/GitHub_Trending/om/VoiceStudioVoiceStudio 仓库自带一个性能剖析脚本 scripts/bench_pipeline.py它用真实的模型加载和生成来测量管线各阶段耗时其中tts阶段会直接打印 RTF实时因子和 CUDA 峰值显存——这两个值正是 docs/benchmarks.md 结果表收集的指标。这篇文章说明如何从仓库检出运行该脚本、如何解读它的输出、读数在什么条件下不可用以及怎样把结果记入基准表。适用环境是 VoiceStudio 源码检出配合uv而不是桌面安装包。前提源码检出、uv 与停掉的后端运行脚本前确认三件事环境里有uv。它是项目要求的 Python 环境管理器见 .github/CONTRIBUTING.md 的开发依赖清单Python 版本由它自动管理pyproject.toml 要求3.11。在仓库根目录下执行uv run ...即可。默认 TTS 模型可用。脚本会解析当前生效的生成后端并真实执行生成所以机器上要有已就绪的 TTS 模型。如果从未启动过应用先启动一次——首次启动会自动创建受管 Python 环境并下载默认模型见 README.md。完全退出 VoiceStudio。这是文档反复强调的一点运行中的后端持有已加载的模型会污染每一个数字a running backend holds a model and skews numbers。彻底退出后建议在任务管理器Windows/ 活动监视器macOS里确认没有残留的omnivoice/python进程——残留的半运行进程会锁住缓存并干扰测量处理方式见 docs/install/troubleshooting.md。脚本本身只做测量它逐阶段加载模型、执行固定次数的生成不修改仓库文件副作用是加载模型期间的内存/显存占用。运行基准脚本在仓库根目录执行# 测量全部阶段tts、clone、asr uv run python scripts/bench_pipeline.py # 只测 TTS 阶段——RTF 与峰值显存都出自这个阶段 uv run python scripts/bench_pipeline.py tts # 同时测 TTS 与 clone 两个阶段 uv run python scripts/bench_pipeline.py tts clone # 提高启动某阶段所需的空闲内存门槛默认 3.5 GB OMNIVOICE_BENCH_FLOOR_GB4 uv run python scripts/bench_pipeline.py脚本对内存是刻意保守的设计目标见脚本头部注释与 docs/performance.md阶段一次只跑一个阶段之间卸载所有驻留模型峰值 RSS 只相当于一个模型每个阶段启动前检查实际空闲 RAM低于门槛就跳过该阶段而不是去启动一个会被系统 OOM 杀死的加载每个测量都是固定的少量次数没有跑到收敛的循环。OMNIVOICE_BENCH_FLOOR_GB默认3.5whisper/TTS 加载大约需要 3 GB在只有 2 GB 空闲时启动就是后端被 OOM 杀死的典型场景。设为0则完全关闭这道保护——机器确实吃紧时不建议用。解读输出warm RTF 与 peak VRAM每个阶段启动时会打印形如 tts (free before: X GB)的头X 为该阶段前的空闲 RAM结束时打印free after。tts阶段的输出包含引擎行在阶段开始处打印解析到的后端 id、模型标识对在一个后端 id 下托管多个模型的适配器引擎还会打印具体模型名和后端类名。这保证基准表里的数字不会归错后端。model load first synth (cold)包含模型加载的首次生成是最慢的一行不要用它填表。docs/performance.md 也说明重启后的第一次生成总是最慢的权重惰性加载、torch.compile 构建 kernel 等。short line (warm)与long line (warm)两次暖态生成行尾的备注会给出RTF和对应的生成音频秒数。RTF 定义是每生成 1 秒音频所花的计算秒数RTF 1 表示快于实时。docs/benchmarks.md 明确规定填表时用short line (warm)那一行的 RTF。peak VRAM (GB)仅 CUDA 环境打印。取的是 torch 的 CUDA 峰值max_memory_reserved()即分配器保留量而非存活张量占用单位 GB——保留量更接近这块卡实际需要的容量。脚本跑完会在最后输出一个三列stage/measurement/value的汇总表并附上开始与结束时的空闲 RAM这就是文档要求你copy its summary table的那张表。峰值显存何时不可用docs/benchmarks.md 与脚本行为一致MPSApple Silicon是统一内存没有 VRAM 计数器不打印该行CPU 没有 VRAM子进程隔离的引擎如 IndexTTS、MOSS、PocketTTS 等在自己的进程里分配显存父进程的 CUDA 计数器读不到脚本会明确打印n/a而不是给一个可信的假零。以上情况在基准表里一律留空不要填 0。阶段被跳过、失败或缺少素材时空闲内存不足该阶段会打印SKIPPED — only … GB free (floor … GB; OMNIVOICE_BENCH_FLOOR_GB0 to force)汇总表中记为skipped并附原因。此时腾出内存重跑或显式用OMNIVOICE_BENCH_FLOOR_GB0强制启动放弃 OOM 保护。阶段执行失败汇总表中记为failed并带异常名与信息如引擎或模型无法解析。失败阶段没有有效数字先修复该阶段的依赖再重跑。clone/asr阶段缺少素材这两个阶段在~/Library/Application Support/OmniVoice/dub_jobs/*/seg_ref_*.wav下寻找 dub 任务产生的分段参考音频磁盘上没有时脚本打印 no dub segment refs on disk — run a dub first 并直接退出该阶段、不产生测量值。也就是说要先在应用里跑过一次 dub 才有素材只想测 RTF 与峰值显存时用uv run python scripts/bench_pipeline.py tts即可跳过这两个阶段。把结果记入 benchmarks 表docs/benchmarks.md 定义了各列含义与贡献流程列取值Engine基准工具解析到的 TTS 引擎阶段开始处打印的那个Device一个字符串命名实际跑模型的硬件如RTX 3060 12 GB、Apple M2 Pro、Ryzen 7 5800X (CPU)RTF (warm)工具打印的 short-line warm RTFPeak VRAM (GB)工具的 CUDA 峰值MPS/CPU 留空App version来自Settings → AboutSource添加该行所在的 PR 链接流程是在闲置机器应用已停上运行工具并复制汇总表 → 开 PR 添加一行并把工具原始输出贴进 PR 描述该 PR 链接就是Source列→ 每个 enginedevice 组合一行更新的应用版本替换旧行。要记住文档给出的边界不同机器上的数字不直接可比——这张表的目的是诚实的预期这个引擎在这类 GPU 上大约这个速度不是排行榜。如果是在排查某个性能问题把这张表连同平台和 RAM/VRAM 一起贴出据 docs/performance.md 的说法能turn a guessing game into a bisect同一文档还说明了每个阶段把时间花在哪里可用于对照测量结果。【免费下载链接】VoiceStudioVoiceStudio is the open-source, fully-local ElevenLabs alternative — voice cloning, voice design, video dubbing, dictation, transcription audiobook creation in 646 languages.项目地址: https://gitcode.com/GitHub_Trending/om/VoiceStudio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进