Seed-TTS-Eval#
Overview#
Seed-TTS-Eval is an objective benchmark for zero-shot text-to-speech and voice conversion evaluation. It uses out-of-domain English and Mandarin samples from Common Voice and DiDiSpeech-2, and the official evaluation focuses on intelligibility and speaker consistency.
Task Description#
Task Type: Zero-shot text-to-speech generation
Input: Reference speaker audio, prompt transcript, and target text
Output: Synthesized speech audio for the target text using the reference speaker
Languages: English and Mandarin
Evaluation Notes#
Default subsets: en and zh
The evaluated TTS model must return generated audio as
ContentAudio, or return an audio path, URL, or data URI as the completion textEvalScope provides
eval_type="text2speech"for HTTP TTS services.Volcengine provider: configure
model="seed-tts-2.0",api_url="https://openspeech.bytedance.com/api/v3/tts/unidirectional", andmodel_args={"speaker": "..."}OpenAI provider: configure
model="tts-1"(ortts-1-hd),api_url="https://api.openai.com/v1", andmodel_args={"provider": "openai", "voice": "nova"}
Default metric: audio_wer, which transcribes generated audio through an OpenAI-compatible
/audio/transcriptionsendpoint and computes WER/CER-style error rate with language-specific normalizationConfigure the ASR endpoint via
metric_list, or setSEED_TTS_EVAL_ASR_API_BASE,SEED_TTS_EVAL_ASR_API_KEY,SEED_TTS_EVAL_ASR_MODEL, andSEED_TTS_EVAL_ASR_API_PROTOCOLFor Volcengine Ark audio-understanding models, set
api_protocol="responses"and use a model that supports audio input, such asdoubao-seed-2-0-lite-260428Speaker similarity is part of the official benchmark, but it requires a separate speaker verification backend and is not enabled by default
Properties#
Property |
Value |
|---|---|
Benchmark Name |
|
Dataset ID |
|
Paper |
|
Tags |
|
Metrics |
|
Default Shots |
0-shot |
Evaluation Split |
|
Data Statistics#
Metric |
Value |
|---|---|
Total Samples |
3,108 |
Prompt Length (Mean) |
243.31 chars |
Prompt Length (Min/Max) |
193 / 376 chars |
Per-Subset Statistics:
Subset |
Samples |
Prompt Mean |
Prompt Min |
Prompt Max |
|---|---|---|---|---|
|
1,088 |
304.3 |
224 |
376 |
|
2,020 |
210.46 |
193 |
231 |
Audio Statistics:
Metric |
Value |
|---|---|
Total Audio Files |
3,108 |
Audio per Sample |
min: 1, max: 1, mean: 1 |
Formats |
wav |
Sample Example#
Subset: en
{
"input": [
{
"id": "ffd452c5",
"content": [
{
"audio": "[BASE64_AUDIO: wav, ~183.0KB]",
"format": "wav"
},
{
"text": "Use the reference audio and prompt transcript to synthesize the target text in the same speaker voice.\nPrompt transcript: We asked over twenty different people, and they all said it was his.\nTarget text: Get the trust fund to the bank early.\nReturn only the generated audio."
}
]
}
],
"target": "Get the trust fund to the bank early.",
"id": 0,
"group_id": 0,
"subset_key": "en",
"metadata": {
"filename": "common_voice_en_10119832-common_voice_en_10119840",
"prompt_text": "We asked over twenty different people, and they all said it was his.",
"text": "Get the trust fund to the bank early.",
"prompt_audio_path": "prompt-wavs/common_voice_en_10119832.wav",
"reference_audio_path": "wavs/common_voice_en_10119832-common_voice_en_10119840.wav",
"language": "en",
"wer_language": "en"
}
}
Prompt Template#
Prompt Template:
Use the reference audio and prompt transcript to synthesize the target text in the same speaker voice.
Prompt transcript: {prompt_text}
Target text: {text}
Return only the generated audio.
Usage#
Using CLI#
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets seed_tts_eval \
--limit 10 # Remove this line for formal evaluation
Using Python#
from evalscope import run_task
from evalscope.config import TaskConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['seed_tts_eval'],
dataset_args={
'seed_tts_eval': {
# subset_list: ['en', 'zh'] # optional, evaluate specific subsets
}
},
limit=10, # Remove this line for formal evaluation
)
run_task(task_cfg=task_cfg)