Voice-cloning robustness benchmark

32 models will try to clone this voice. 5 defenses try to stop them.

RVCBench is a unified, reproducible pipeline for evaluating voice-cloning robustness, speaker privacy, and audio-protection methods — spanning 32 TTS/VC adversary models, 10 dataset conditions, and 5 protection algorithms, scored on speaker similarity, intelligibility, perceptual quality, and runtime.

arXiv:2602.00443 · CC0-1.0 · Jin, Liao, Yu, Pandya, Li

signal.monitor — source → protection → clonelive
clean signal (SIM ↑) after protection (SIM ↓)
32
VC / TTS models
5
protection methods
10
dataset configs
225
speakers (paper)
14,370
utterances (paper)
3
languages — EN / ZH / FR

Paper vs. codebase. The arXiv v2 paper reports 18 models across 18 robustness evaluations, 225 speakers, and 14,370 utterances. This repository is under active development and currently ships 32 models; treat any count beyond the paper's 18 as codebase-only until covered by a future revision.

Why RVCBench

One surrogate model is not a threat model.

Most protection papers evaluate against one or two VC models on one dataset. A defense that looks strong there can fail completely against a model or language it was never tested on.

Typical single-paper evalRVCBench
Adversary models1–326, zero-shot + fine-tuning
Datasets / languages110, incl. ZH / FR / bilingual / noisy
Protection methods comparedusually own only5, equal footing
Denoising-adaptive attackerrarely modeledbuilt into the pipeline
Metricsad hocstandardised + bootstrap CIs
Reproducibilitycustom scriptsone Hydra pipeline, public HF data

“If you're deciding whether a protection method actually generalises — or whether a new TTS model breaks existing defenses — this is the benchmark to run it against.”

How it works

Source audio → protect → (denoise) → clone → evaluate.

Every run walks the same five-stage path, so protection methods and cloning adversaries are always compared on equal footing.

1

Source audio

Reference speaker prompt drawn from one of 10 benchmark dataset configs.

run_vc.py
2

Protection

An adversarial perturbation degrades the prompt: SafeSpeech, Enkidu, EM, Spectral, or Gaussian noise.

run_protect.py
3

Denoise (optional)

An adaptive attacker tries to clean the protected prompt before cloning — a realistic worst case.

run_denoiser.py
4

Voice cloning

One of 32 zero-shot or fine-tuning TTS/VC adversaries attempts to reproduce the speaker.

run_vc_protect.py
5

Evaluation

SIM, WER, MOS, MCD, RTF, SVA and emotion match, with bootstrap confidence intervals.

metrics.json
The framework

Four dimensions, one benchmark.

Every result on this page demonstrates one of four robustness axes. This is the map — each card links to the visualization that proves it.

Input Robustness

Does it still work when the reference audio or text prompt isn't clean studio speech?

  • Reference-audio shifts — accents, ages, multi-speaker clips, café/station/train noise
  • Text-prompt shifts — unusual, robocall-style, or hallucination-inducing prompts
See it in the cross-dataset heatmap →

Generation Robustness

Does cloning quality hold up across model architectures, languages, and utterance length?

  • 32 adversary models spanning codec-LM, diffusion, and hybrid architectures
  • Multilingual (EN/ZH/FR), long-form generation, and emotion preservation
See it in the leaderboard →

Output Robustness

Does the cloned output survive real-world post-processing, and can it be told apart from the real speaker?

  • Post-processing resilience — MP3/AAC/Opus compression, phone-narrowband simulation
  • Deepfake detectability — ground-truth vs. cloned speech classification
In the codebase (data/compression/, src/datasets/deepfake_preprocess.py) — not yet on the public leaderboard

Audio Perturbation Robustness

Can a protection method actually stop a clone — and survive an attacker trying to denoise it back out?

  • Passive perturbation — natural multi-speaker interference and environmental noise
  • Proactive perturbation (5 methods) and counteract perturbation (adaptive denoising)
See it in the protection-robustness chart →
Generation Robustness Leaderboard — LibriTTS, clean prompts

Which model clones a voice best?

Ranked by speaker similarity (SIM) on unprotected prompts, averaged across the full LibriTTS speaker set. Click a column to sort.

# Model SIM ↑ WER ↓ MOS ↑ MCD ↓ RTF ↓ SVA ↑ Emo ↑
1Qwen3-TTS0.6140.0524.395.792.020.9740.731
2IndexTTS0.6060.0524.066.612.230.9720.693
3CosyVoice 20.6020.1754.396.174.580.9740.729
4ZipVoice0.5790.0534.137.091.460.9520.675
5MaskGCT0.5700.0883.936.911.360.9390.682
6GLM-TTS0.5700.0874.086.411.740.9510.678
7F5-TTS0.5590.1163.996.960.610.9370.676
8Higgs Audio0.5590.2504.306.061.420.9410.717
9MGM-Omni0.5390.0954.285.820.840.9330.676
10PlayDiffusion0.5060.0554.158.060.730.9360.681
11MOSS-TTSD0.4920.3834.107.090.8760.667
12VibeVoice0.4800.2283.836.761.860.8520.624
13FishSpeech0.4720.1664.376.473.610.9070.682
14XTTS-v20.4540.0733.818.620.620.9080.639
15SparkTTS0.4080.3264.065.831.560.7640.672
16OZSpeech0.3880.0603.216.878.750.8400.636
17OpenVoice V20.2440.0754.307.060.080.4740.601
18StyleTTS 20.2280.0494.306.810.110.3880.589

SIM: speaker cosine similarity · WER: word error rate · MOS: SpeechMOS perceptual score · MCD: mel-cepstral distortion · RTF: real-time factor (<1 = faster than real time) · SVA: speaker-verification accuracy · Emo: emotion match rate. All values on clean prompts.

Audio Perturbation Robustness Protection robustness — SIM, LibriTTS

How far can protection push similarity down?

Each row spans a model's clean SIM down to its lowest SIM under any of the 5 proactive-perturbation methods below — the larger the gap, the more that model's voice can be shielded. The pipeline's optional Denoise step is the counteract-perturbation half of this dimension: an adaptive attacker trying to undo the protection before cloning.

Clean prompt Best-case protection (lowest SIM reached, method labeled)
0.00.10.20.30.40.50.6Qwen3-TTSQwen3-TTS · Spectral: 0.363Qwen3-TTS · Clean: 0.614SpectralIndexTTSIndexTTS · Spectral: 0.318IndexTTS · Clean: 0.606SpectralCosyVoice 2CosyVoice 2 · Spectral: 0.301CosyVoice 2 · Clean: 0.602SpectralZipVoiceZipVoice · GR-Noise: 0.258ZipVoice · Clean: 0.579GR-NoiseMaskGCTMaskGCT · Spectral: 0.281MaskGCT · Clean: 0.570SpectralGLM-TTSGLM-TTS · Spectral: 0.311GLM-TTS · Clean: 0.570SpectralF5-TTSF5-TTS · GR-Noise: 0.137F5-TTS · Clean: 0.559GR-NoiseHiggs AudioHiggs Audio · Spectral: 0.236Higgs Audio · Clean: 0.559SpectralMGM-OmniMGM-Omni · Spectral: 0.166MGM-Omni · Clean: 0.539SpectralPlayDiffusionPlayDiffusion · Spectral: 0.149PlayDiffusion · Clean: 0.506SpectralMOSS-TTSDMOSS-TTSD · Spectral: 0.216MOSS-TTSD · Clean: 0.492SpectralVibeVoiceVibeVoice · Spectral: 0.253VibeVoice · Clean: 0.480SpectralFishSpeechFishSpeech · Spectral: 0.212FishSpeech · Clean: 0.472SpectralXTTS-v2XTTS-v2 · GR-Noise: 0.237XTTS-v2 · Clean: 0.454GR-NoiseSparkTTSSparkTTS · GR-Noise: 0.062SparkTTS · Clean: 0.408GR-NoiseOZSpeechOZSpeech · Spectral: 0.147OZSpeech · Clean: 0.388SpectralOpenVoice V2OpenVoice V2 · GR-Noise: 0.175OpenVoice V2 · Clean: 0.244GR-NoiseStyleTTS 2StyleTTS 2 · GR-Noise: 0.030StyleTTS 2 · Clean: 0.228GR-Noise
Show full data — every protection method, every model
ModelCleanSafeSpeechEnkiduSpectralGR-NoiseEM
Qwen3-TTS0.6140.3840.5020.3630.4080.582
IndexTTS0.6060.3460.4750.3180.3920.572
CosyVoice 20.6020.3210.4470.3010.3840.549
ZipVoice0.5790.2870.4350.2620.2580.543
MaskGCT0.5700.3030.4070.2810.3120.530
GLM-TTS0.5700.3300.4450.3110.3880.532
F5-TTS0.5590.2070.4310.1760.1370.520
Higgs Audio0.5590.2640.4350.2360.2720.521
MGM-Omni0.5390.1840.3160.1660.2290.491
PlayDiffusion0.5060.1730.1490.1620.466
MOSS-TTSD0.4920.2420.3350.2160.2470.453
VibeVoice0.4800.2720.3670.2530.2800.442
FishSpeech0.4720.2380.3340.2120.2350.439
XTTS-v20.4540.2600.3080.2410.2370.414
SparkTTS0.4080.1290.1370.1080.0620.359
OZSpeech0.3880.1560.1870.1470.1480.337
OpenVoice V20.2440.1850.1880.1800.1750.236
StyleTTS 20.2280.0890.1250.0810.0300.207
InputGeneration Cross-dataset generalisation — SIM, clean prompts

Does it still work outside LibriTTS?

Speaker similarity across 10 dataset conditions, grouped by which dimension they test: Input Robustness shifts the reference audio or speaker mix, Generation Robustness shifts the language or utterance length. Hover a cell for the exact value.

ModelBaselineInput RobustnessGeneration Robustness
LibriTTSVCTKMulti-spkBG-cleanBG-noiseHalluc.LongAISHELLFrenchBilingual
Qwen3-TTS0.610.620.490.690.570.520.560.720.540.67
IndexTTS0.610.570.470.590.530.530.780.720.400.67
CosyVoice 20.600.580.450.630.520.520.530.720.380.65
ZipVoice0.580.550.530.620.460.510.730.710.360.32
MaskGCT0.570.560.430.610.490.500.190.670.49
GLM-TTS0.570.570.450.620.530.530.760.690.400.66
F5-TTS0.560.540.510.580.410.460.610.700.300.65
Higgs Audio0.560.520.420.590.420.420.520.580.350.54
MGM-Omni0.540.450.370.520.330.400.440.710.230.63
PlayDiffusion0.510.430.360.430.300.410.640.440.280.47
MOSS-TTSD0.490.440.380.490.490.420.640.440.330.47
VibeVoice0.480.440.350.510.360.410.620.560.340.53
FishSpeech0.470.430.380.490.390.350.570.610.370.57
XTTS-v20.450.450.330.550.390.490.610.570.450.51
SparkTTS0.410.530.230.590.330.340.340.570.160.48
OZSpeech0.390.250.270.270.160.280.11
OpenVoice V20.240.390.190.480.360.360.280.430.270.30
StyleTTS 20.230.240.160.200.170.180.21
0.00.78 SIM
Supported adversaries

32 voice-cloning models, one interface.

Zero-shot and fine-tuning TTS/VC wrappers, each launched from its own Conda environment to keep incompatible dependency stacks apart.

On the LibriTTS leaderboard (18) In the codebase, not yet leaderboard-scored (9)
BertVITS2bert
Qwen3-TTSqwen3_tts
Qwen3-Omniqwen3_omni
FireRedTTS-2fireredtts2
VoxCPMvoxcpm
F5-TTSf5_tts
MaskGCTmaskgct
OpenVoice V2openvoice
Coqui XTTS-v2xtts
IndexTTSindex_tts
ZipVoicezipvoice
FishSpeechfishspeech
Fish Audio S2 (in-proc)fishspeech_s2
Fish Audio S2 (server)fish_audio_s2
CosyVoice / 2cosyvoice
Higgs Audiohiggs_audio
Higgs TTS 3higgs_tts_3
SparkTTSsparktts
VALL-Evall_e
StyleTTS 2styletts2
GLM-TTSglm_tts
GlowTTSglowtts
Kimi Audiokimi_audio
MGM-Omnimgm_omni
MOSS TTSDmoss_ttsd
MOSS-TTSmoss_tts
dots.ttsdots_tts
ZONOS2zonos2
PlayDiffusionplaydiffusion
Bark Voice Clonebark_voice_clone
OZSpeechozspeech
VibeVoicevibevoice
Protection methods

Five ways to make a voice harder to clone.

SafeSpeech

Adversarial perturbation optimised against a surrogate VC model.

Enkidu

Perceptual-loss adversarial perturbation.

EM

Expectation–Maximisation perturbation.

GRNoise

Gaussian random noise — no surrogate model required.

Spectral

SafeSpeech's spectral perturbation mode.

Datasets

10 benchmark conditions, publicly hosted.

Every subset is a Hugging Face dataset config under Nanboy/RVCBench, fetched automatically by the data loader.

ConfigLanguageTypical use
LibrittsENEnglish zero-shot VC/TTS benchmark prompts.
VCTKENMulti-speaker English voice cloning.
Multispeaker_libriENMulti-speaker LibriSpeech-style evaluation.
Long_contextENLonger-context voice-cloning prompts.
AISHELL1_devZHMandarin speech evaluation.
CommonVoiceFR_devFRFrench speech evaluation.
Bilingual_uedinEN/ZHBilingual speech evaluation.
Background_noiseENNoisy-prompt robustness.
robotcallENRobocall-style speech robustness.
vctk_text_robustENText robustness on VCTK-style prompts.
Evaluated metrics

The referee's scorecard.

SIM

Speaker cosine similarity between cloned and target voice.

WER

Word error rate — how intelligible the generated speech is.

MOS

SpeechMOS perceptual quality score.

MCD

Mel-cepstral distortion versus the reference.

RTF

Real-time factor; below 1 is faster than real time.

SVA

Speaker-verification accuracy against the target identity.

Emo

Emotion match rate between clone and target.

SNR / STOI / DNSMOS

Fidelity metrics reported for protection and denoising runs.

FAQ

Questions people ask about RVCBench.

What four dimensions of robustness does RVCBench test?

Input Robustness (reference-audio and text-prompt shifts), Generation Robustness (model architecture, multilingual, long-form, and expressive generalisation), Output Robustness (post-processing resilience and deepfake detectability), and Audio Perturbation Robustness (passive noise, proactive protection methods, and counteract/denoising attacks).

What is RVCBench?

RVCBench is a benchmark for voice-cloning robustness, speaker privacy, and audio-protection methods. It evaluates 32 zero-shot and fine-tuning TTS/VC models against 5 audio-protection methods across 10 dataset configurations, scoring speaker similarity, intelligibility, perceptual quality, and runtime.

How many voice-cloning models does RVCBench evaluate?

The RVCBench codebase includes wrappers for 32 TTS/VC adversary models. The arXiv v2 paper reports results for 18 of those models across 18 robustness evaluations, 225 speakers, and 14,370 utterances.

What audio-protection methods does RVCBench compare?

Five methods on equal footing: SafeSpeech (adversarial perturbation against a surrogate VC model), Enkidu (perceptual-loss adversarial perturbation), EM (Expectation–Maximisation perturbation), Spectral (SafeSpeech's spectral perturbation mode), and GR-Noise (Gaussian random noise).

Which model is hardest to clone under protection, according to RVCBench?

Across the LibriTTS leaderboard, StyleTTS 2 and OpenVoice V2 have the lowest clean speaker similarity and drop furthest under protection — GR-Noise pushes StyleTTS 2's similarity from 0.228 down to 0.030.

Is the RVCBench dataset public?

Yes. The benchmark dataset is hosted on Hugging Face at huggingface.co/datasets/Nanboy/RVCBench under a CC0-1.0 license, with 10 dataset configurations spanning English, Mandarin, and French.

How do I cite RVCBench?

Cite the arXiv preprint: Jin, Ruinan; Liao, Xinting; Yu, Hanlin; Pandya, Deval; Li, Xiaoxiao. “RVCBench: Benchmarking the Robustness of Voice Cloning Across Modern Audio Generation Models.” arXiv:2602.00443, 2026.

Getting started

One clone, protected, in under a minute.

All outputs — data, generated audio, metrics — are written inside the repository. No checkpoint bundle required to start.

# clone + environment
git clone https://github.com/Nanboy-Ronan/RVCBench.git
cd RVCBench
conda env create -f envs/qwen3-tts.yml && conda activate qwen3
# zero-shot clone, then protect + clone
python scripts/run_qwen3tts_quickstart.py --max-samples 5
python scripts/run_protect_qwen3tts_quickstart.py --max-samples 5
Citation

If RVCBench is useful, cite it.

Contributions are welcome — new protection methods, adversary wrappers, dataset adapters, and evaluation metrics. Open an issue or PR on GitHub.

@article{jin2026rvcbench,
  title   = {RVCBench: Benchmarking the Robustness of
             Voice Cloning Across Modern Audio
             Generation Models},
  author  = {Jin, Ruinan and Liao, Xinting and Yu, Hanlin
             and Pandya, Deval and Li, Xiaoxiao},
  journal = {arXiv preprint arXiv:2602.00443},
  year    = {2026}
}