news 2026/9/17 9:58:31

vllm-omni 基准测试:SeedTTS 测试数据集下载与预处理实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vllm-omni 基准测试:SeedTTS 测试数据集下载与预处理实战指南

vllm-omni 基准测试:SeedTTS 测试数据集下载与预处理实战指南

【免费下载链接】vllm-omniA framework for efficient model inference with omni-modality models项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni

导读

本文是 vllm-omni 仓库中 download_process_data_seedtts.md 的完整展开版。它讲解如何从 Google Drive 下载 SeedTTS 评测数据集、解压并整理出meta.lst元数据文件,再通过仓库自带的extract_tts_prompts.py提取出供 TTS 基准测试使用的 prompt 列表。读完本文,你将掌握:完整的 SeedTTS 数据集准备流程、meta.lst各字段格式的精确定义、仓库内多种自带数据变体的适用场景,以及准备后的数据如何接入vllm bench serve --omniseed-tts/seed-tts-text/seed-tts-design三条 TTS 基准测试链路。

一、为什么需要准备 SeedTTS 数据集

vllm-omni 的 TTS 通用基准测试(benchmarks/tts/bench_tts.pyvllm bench serve --omni)支持 Qwen3-TTS(Base / CustomVoice / VoiceDesign)、VoxCPM2 等模型的性能与质量评测。其中voice_clone任务(Qwen3-TTS-Base、VoxCPM2)使用seed-tts数据集,即来自 BytedanceSpeech seed-tts-eval 评测集的全量语料(约 1.2 GB,包含meta.lstprompt-wavs参考音频);default_voicevoice_design任务则直接使用仓库内自带的小型文本变体。

完整语料并不随仓库分发,需要先按本文流程下载、解压、整理,然后把它作为--dataset-path指向的本地根目录传入基准工具(详见 benchmarks/tts/README.md 的数据集表格与说明)。

二、前置条件

  • Python 3.8+:运行extract_tts_prompts.py及后续基准脚本所需;
  • gdown:用于从 Google Drive 下载数据集压缩包(本文第三步会安装);
  • 可访问 Google Drive:数据集托管在 Google Drive 上;
  • 仓库中的基准脚本:即benchmarks/build_dataset/extract_tts_prompts.py,克隆仓库后即可使用。

三、分步操作指南

1. 进入数据集构建目录

cd benchmarks/build_dataset

该目录位于仓库根目录下,同时存放着extract_tts_prompts.py与多个自带数据子目录(seed_tts_smoke/seed_tts_design/ttsd_smoke/sound_effect_smoke/),结构可查看 benchmarks/build_dataset。

2. 安装依赖

pip install gdown

gdown是 Google Drive 文件下载工具,支持通过文件 ID 直接拉取公开文件。

3. 下载 SeedTTS 测试数据集

gdown 1GlSjVfSHkW3-leKKBlfrjuuTGqQ_xaLP

该命令会下载seedtts_testset.tar压缩包(内含seedtts_testset/目录)。文件 ID1GlSjVfSHkW3-leKKBlfrjuuTGqQ_xaLP对应的是用于 TTS 基准测试的评测集归档,与benchmarks/tts/README.mdseed-tts(4 字段 meta.lst + WAV 参考音频,约 1.2 GB)这一数据集项一致。

4. 解压数据集

tar -xf seedtts_testset.tar

解压后应得到形如seedtts_testset/<locale>/meta.lstseedtts_testset/<locale>/prompt-wavs/的目录结构。其中<locale>即语言子目录(如en)。从源码看,数据集加载器正是按{root}/{locale}/meta.lst{root}/{locale}/prompt-wavs/的布局来定位文件(见 vllm_omni/benchmarks/data_modules/seed_tts_dataset.py 的resolve_seed_tts_root与 seed_tts_dataset.py 的load_data),因此请保持解压后的目录结构不被改动。

5. 准备元数据文件

将英文元数据文件复制到工作目录:

cp seedtts_testset/en/meta.lst meta.lst

meta.lst是数据集的“索引文件”,每行描述一条测试样本。基准测试会读取该文件并据此构造请求(详见第五节字段格式)。若需要使用中文评测集,可类似地复制seedtts_testset/zh/meta.lst,并在后续基准命令中通过--seed-tts-locale zh指定。

6. 提取 Prompt 列表

# 提取前 100 条 prompt(调整 -n 可提取不同数量) python extract_tts_prompts.py -i meta.lst -o top100.txt -n 100

该脚本读取meta.lst,从每行的**第二个字段(prompt 文本)**中提取内容,输出为每行一条 prompt 的纯文本文件。脚本实现在 extract_tts_prompts.py 中,核心逻辑如下:

  • 逐行读取输入文件,跳过空行;
  • |分割,取索引为 1 的字段(parts[1])作为 prompt;
  • 处理到第num_lines行即停止;
  • 将结果逐行写入输出文件,并打印统计信息Extracted {n} prompts from first {m} lines与输出路径。

命令行参数:

参数说明默认值是否必填
-i, --input输入meta.lst文件路径meta.lst
-o, --output输出 prompt 文件路径prompts.txt
-n, --num-lines需要提取的 prompt 条数(从文件开头计数)

此外脚本在入口处会校验输入文件是否存在,不存在时打印Error: Input file '...' not found并直接返回(见 extract_tts_prompts.py),因此请务必先完成第 5 步。

7. 清理临时文件(可选)

rm -rf seedtts_testset rm seedtts_testset.tar rm meta.lst

评测集归档与解压目录体积较大(约 1.2 GB 级别),在提取出 prompt 列表后可删除以释放磁盘空间。若后续还需要运行voice_clone基准(需要参考音频),则应保留seedtts_testset/meta.lst,因为基准测试会读取其中的 WAV 文件构造ref_audio请求体。

四、一键快速开始(All-in-One)

以下命令串起“下载 → 解压 → 整理 → 提取 → 清理”全流程:

# 完整设置并准备基准输入 cd benchmarks/build_dataset pip install gdown gdown 1GlSjVfSHkW3-leKKBlfrjuuTGqQ_xaLP tar -xf seedtts_testset.tar cp seedtts_testset/en/meta.lst meta.lst python extract_tts_prompts.py -i meta.lst -o top100.txt -n 100 rm -rf seedtts_testset seedtts_testset.tar meta.lst

执行完成后,benchmarks/build_dataset/top100.txt即为可直接供下游脚本消费的 100 条 prompt 文件。

五、meta.lst 格式深度解析

理解meta.lst的字段格式是正确准备与使用数据集的根本。从 vllm_omni/benchmarks/data_modules/seed_tts_dataset.py 的模块文档与_parse_meta_line实现(seed_tts_dataset.py)可以确认,seed-tts-eval 风格的 4 字段格式为:

utt_id|prompt_transcript|prompt_wav_relative_path|text_to_synthesize
字段含义
utt_id样本唯一标识(如smoke001vd001
prompt_transcript参考音频对应的文本转写(voice clone 的ref_text
prompt_wav_relative_path参考音频相对{root}/{locale}/的路径(voice clone 的ref_audio
text_to_synthesize需要模型合成的目标文本(即请求中的 prompt)

解析器的行为细节同样值得注意:

  • 空行与以#开头的注释行会被直接跳过(seed_tts_dataset.py);
  • 字段数少于 4 的行会被判定为畸形并跳过,同时打印Skipping malformed meta.lst line警告;
  • 目标文本为空的样本会被过滤(seed_tts_dataset.py);
  • 加载后可选的洗牌由random_seed(默认 0)控制,关闭洗牌可用disable_shuffle(seed_tts_dataset.py)。

仓库自带数据与全量数据集遵循同一格式家族,可作为快速上手或 CI 冒烟测试的替代输入(详见下一节)。

六、仓库自带的多种数据集变体

benchmarks/build_dataset/目录下随仓库分发了几组轻量级meta.lst,无需下载即可用于冒烟测试或功能验证:

变体路径格式用途
seed_tts_smokeseed_tts_smoke/en/meta.lst4 字段,仅文本(音频列留空),30 条Qwen3-TTS-CustomVoicedefault_voice冒烟(--dataset-name seed-tts-text
seed_tts_designseed_tts_design/en/meta.lst5 字段,目标文本 + 自然语言音色描述,30 条Qwen3-TTS-VoiceDesignvoice_design--dataset-name seed-tts-design
ttsd_smokettsd_smoke/en/meta.lst多说话人对话形式,[S1]/[S2]轮次标记TTS 对话(turn)场景冒烟
sound_effect_smokesound_effect_smoke/en/meta.lst音效描述 + 时长(秒)音效生成类模型冒烟

其中seed_tts_design的 5 字段格式是在 4 字段基础上追加音色设计描述instructions),用于VoiceDesign任务的零样本音色指令合成。相关解析与校验逻辑可参考测试 tests/benchmarks/test_seed_tts_dataset_variants.py:字段数不足 5 的行会被过滤,缺少描述的行会被拒绝。

七、与 vllm bench serve 的衔接

准备完成的数据集最终要接入 TTS 基准测试。以voice_clone任务为例,完整命令(见 benchmarks/tts/README.md):

vllm bench serve --omni \ --host 127.0.0.1 --port 8000 \ --model Qwen/Qwen3-TTS-12Hz-1.7B-Base \ --backend openai-audio-speech \ --endpoint /v1/audio/speech \ --dataset-name seed-tts \ --dataset-path /path/to/seed-tts-eval \ --seed-tts-locale en \ --num-prompts 20 --num-warmups 2 \ --extra-body '{"task_type":"Base"}' \ --max-concurrency 1 --request-rate inf \ --percentile-metrics ttft,e2el,audio_rtf,audio_ttfp,audio_duration,audio_underrun \ --save-result --result-dir ./results

关键衔接点:

  • --dataset-path指向本文解压出的seedtts_testset目录(源码中resolve_seed_tts_root会按{root}/{locale}/meta.lst布局解析,见 seed_tts_dataset.py);
  • --dataset-name seed-tts对应 4 字段 + WAV 的全量格式;若使用seed_tts_smoke这种纯文本变体,则改用--dataset-name seed-tts-text
  • --seed-tts-locale en选择语言子目录(enzh);
  • 默认情况下参考音频会以data:audio/wav;base64,...内联进请求体,因此服务端无需--allowed-local-media-path;如需减小请求体,可改用file://形式并给服务端配置媒体路径白名单(seed_tts_dataset.py)。

仓库数据集对应关系总结(摘自 benchmarks/tts/README.md):

数据集是否随仓库分发格式来源
seed-tts-design5 字段 meta.lst仓库内 seed_tts_design/en/meta.lst
seed_tts_smoke4 字段 meta.lst(仅文本)仓库内 seed_tts_smoke/en/meta.lst
seed-tts4 字段 meta.lst + WAV本文流程下载的 Google Drive 归档(约 1.2 GB)
seed-tts-text4 字段 meta.lst(忽略 WAV 列)seed-tts同一归档

八、常见问题与注意事项

  1. gdown下载失败或网络不可达:数据集托管在 Google Drive,需要可访问的下载环境;下载完成后可先ls seedtts_testset/确认目录结构完整再继续解压后的步骤。
  2. FileNotFoundError: Seed-TTS meta not found:通常是--dataset-path指向的根目录下缺少{locale}/meta.lst,或解压后目录结构被改动,请对照第五节的布局检查。
  3. 提取数量与基准规模匹配extract_tts_prompts.py-n决定提取条数,基准命令的--num-prompts决定实际发送的请求数,两者可按需配合(如先提取 200 条,基准时只跑 20 条用于快速验证,200 条用于质量评估)。
  4. 清理时机:仅需文本 prompt 时可在提取后删除归档与解压目录;但voice_clone(seed-tts)与 WER/SIM/UTMOS 质量评估需要参考 WAV 与转写,务必在完成这些基准后再清理。
  5. 语音克隆任务的模型限制-CustomVoice检查点不携带speaker_encoder权重,voice_clone 请求会在模型运行时抛出ValueError,因此 voice_clone 必须使用-Base检查点(见 benchmarks/tts/README.md)。

九、参考与延伸

  • 数据集准备流程:本指南对应的仓库原文 download_process_data_seedtts.md
  • Prompt 提取脚本实现:extract_tts_prompts.py
  • TTS 通用基准测试总览与数据集映射:benchmarks/tts/README.md
  • 数据集加载器(meta.lst 解析、locale 布局、内联音频):vllm_omni/benchmarks/data_modules/seed_tts_dataset.py
  • 质量评估协议(WER/SIM/UTMOS):vllm_omni/benchmarks/data_modules/seed_tts_eval.py
  • 数据集变体行为测试:tests/benchmarks/test_seed_tts_dataset_variants.py

完成数据准备后,即可将--dataset-path指向解压出的seedtts_testset目录,配合vllm bench serve --omni运行端到端的 TTS 吞吐、延迟与音质基准测试。

【免费下载链接】vllm-omniA framework for efficient model inference with omni-modality models项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 9:55:57

Spring AI 1.x双版本更新:多模态与生产环境优化

1. Spring AI 1.x 系列双版本更新解析三月份Spring AI连续发布两个重要版本更新&#xff0c;这个节奏在开源社区相当罕见。作为长期跟踪AI框架演进的开发者&#xff0c;我发现这次更新包含了几项会直接影响工程实践的改进。从模型集成方式到API设计优化&#xff0c;新特性覆盖了…

作者头像 李华
网站建设 2026/9/17 9:53:54

X6 撤销重做插件 History 完全指南:配置、批处理与事件机制

X6 撤销重做插件 History 完全指南&#xff1a;配置、批处理与事件机制 【免费下载链接】X6 &#x1f680; JavaScript diagramming library that uses SVG and HTML for rendering. 项目地址: https://gitcode.com/GitHub_Trending/x6/X6 导读 在基于 antv/x6 构建的图…

作者头像 李华
网站建设 2026/9/17 9:48:49

APM飞控硬件调试与Mission Planner深度实践指南

简介&#xff1a;本资源为《APM中文使用手册》Word版PDF文档&#xff0c;面向无人机爱好者、嵌入式开发者及高校航模实践者&#xff0c;系统解决ArduPilotMega&#xff08;APM&#xff09;自驾仪的硬件选型、安装接线、传感器校准、地面站配置与自动化飞行任务部署等核心问题。…

作者头像 李华
网站建设 2026/9/17 9:46:36

CPU为什么不认识main函数?STM32启动流程深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华