CoolFace
Modelpublic

jiangzhuo9357/vits-vctk-gguf

sourceHugging Faceotherupdated 2mo agoView on Hugging Face
0likes171downloads
Model Card

VITS VCTK 109-speaker: synthesize.cpp GGUF

GGUF conversions of the official VITS VCTK checkpoint for synthesize.cpp.

Ported from jaywalnut310/vits revision `2e561ba58618d021b5b8323d3765880f7e0ecfdb` and validated on 2026-07-27 against the pinned upstream PyTorch implementation.

A self-contained 109-speaker VITS inference package converted from the official VCTK checkpoint. It supports CPU and CUDA execution through the same public library interface and exposes stable Voice IDs from speaker-000 through speaker-108.

Downloads

ProfileDownloadSizeTensor storageSHA-256
F32vits-vctk-F32.gguf120.4 MB (120,407,552 bytes)473 F32b9e69b257cc600679a45e4197614f36ec678156180e2d366f7e1dcb6668b2be0
F16vits-vctk-F16.gguf79.5 MB (79,533,024 bytes)354 F32 + 119 F160b3c4e067c6fdd736edb90b7e1d11f6f480e5a832620740178a3119a4ef0913c
Q8_MIXEDvits-vctk-Q8_MIXED.gguf60.4 MB (60,372,192 bytes)354 F32 + 119 Q8_09f6caab60c66cdfa2379a1f1b93dbbd886161cd6f1115431fbe964d198b698e3

All profiles use the same VITS architecture and public synthesize.cpp API. The profile name describes a versioned storage policy, not the language or Execution Backend.

Validation status

validation_level: port_validated

7 graph stages were replayed for 12 cases on DGX Spark CPU, NVIDIA GB10 CUDA 13.3. Duration structure was exact in every case. Two of this family's stages run on CPU on every Execution Backend, and the other five run on CUDA when CUDA is the selected Execution Backend. Model::Impl::compute_duration_stage uses a CPU-only scheduler over CPU-resident mirrors of the text encoder, the duration predictor and the Voice tensors, because the duration path ceils its logits into an integer frame count and every later stage's shape follows from that integer. Removing the strict-FP32 gate made it backend-dependent: on the 315-token ljs-long case CUDA ceiled one token differently and moved the frame count by 256 samples. The text encoder is held too, not just the rounding stage, because the duration stage re-runs it and feeds its output straight into the predictor. 27.5 of the model's 113.2 MB are consequently resident in both buffers, and synthesis wall time on the family's longest case rises from 1.09 s to 1.39 s, still 7.6 times faster than real time. In exchange the frame counts match CPU exactly -- 156,416 for vctk-long -- and both variants report structural_exact on all twelve CUDA cases. This is a deliberate placement, not a fallback: no node falls back to CPU inside a CUDA graph.

ProfileCPU max PCM driftDGX Spark CUDA max PCM drift
F320.000238690.03104201
F160.07394360.21655512
Q8_MIXED0.777694990.84563246

Drift is the largest absolute difference between one PCM sample and the reference's.

Quality evaluation has not been run. These results establish that the port, Voice selection, deterministic request path, and CPU/CUDA execution work. They do not claim perceptual equivalence, naturalness, intelligibility, or speaker similarity.

Voices and input

This package exposes 109 preset speaker IDs, speaker-000..speaker-108. It produces 22050 Hz mono F32 audio. No default speaker is invented; every request must select a Voice.

This package accepts UTF-8 phoneme strings through the built-in synthesize.symbol_map frontend, and also accepts exact token IDs. The frontend validates UTF-8, maps each Unicode scalar through the symbol table embedded in the GGUF, and applies the model's blank-insertion rule.

The built-in frontend does not perform grapheme-to-phoneme conversion or text normalization. Callers starting from raw text must currently run a compatible G2P frontend externally. The runtime does not silently invoke eSpeak or download a frontend.

Usage

Build synthesize.cpp and synthesize a deterministic request:

bash
git clone https://github.com/handy-computer/synthesize.cpp.git
cd synthesize.cpp
cmake -S . -B build -DSYNTH_BUILD_CLI=ON
cmake --build build -j

hf download jiangzhuo9357/vits-vctk-gguf vits-vctk-F16.gguf \
  --local-dir models/vits-vctk

build/bin/synthesize-cli \
  --model models/vits-vctk/vits-vctk-F16.gguf \
  --output output.wav \
  --phonemes "ˈeɪ." \
  --language en \
  --voice speaker-004 \
  --seed 0

The same local GGUF can be loaded through the public C ABI and wrapped by C++, Rust, or Python. Model loading never contacts Hugging Face.

License and checkpoint provenance

The pinned VITS source repository is MIT licensed: license at the ported revision. The official checkpoint is published by the VITS author in the repository's linked Google Drive folder, but does not carry a separate checkpoint-license statement.

The synthesize.cpp maintainer has chosen to publish these converted artifacts on the explicit project-policy assumption that the absence of separate checkpoint terms imposes no additional redistribution restriction. Users who require a different legal interpretation should review the upstream source and checkpoint provenance before redistribution.


Original upstream project card

Reproduced from the pinned upstream repository card for offline provenance. The upstream repository remains authoritative.

VITS: Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech

Jaehyeon Kim, Jungil Kong, and Juhee Son

In our recent paper, we propose VITS: Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech.

Several recent end-to-end text-to-speech (TTS) models enabling single-stage training and parallel sampling have been proposed, but their sample quality does not match that of two-stage TTS systems. In this work, we present a parallel end-to-end TTS method that generates more natural sounding audio than current two-stage models. Our method adopts variational inference augmented with normalizing flows and an adversarial training process, which improves the expressive power of generative modeling. We also propose a stochastic duration predictor to synthesize speech with diverse rhythms from input text. With the uncertainty modeling over latent variables and the stochastic duration predictor, our method expresses the natural one-to-many relationship in which a text input can be spoken in multiple ways with different pitches and rhythms. A subjective human evaluation (mean opinion score, or MOS) on the LJ Speech, a single speaker dataset, shows that our method outperforms the best publicly available TTS systems and achieves a MOS comparable to ground truth.

Visit our demo for audio samples.

We also provide the pretrained models.

** Update note: Thanks to Rishikesh (ऋषिकेश), our interactive TTS demo is now available on Colab Notebook.

<table style="width:100%"> <tr> <th>VITS at training</th> <th>VITS at inference</th> </tr> <tr> <td><img src="resources/fig1a.png" alt="VITS at training" height="400"></td> <td><img src="resources/fig1b.png" alt="VITS at inference" height="400"></td> </tr> </table>

Pre-requisites

  1. 1.Python >= 3.6
  2. 2.Clone this repository
  3. 3.Install python requirements. Please refer requirements.txt
  4. 4.You may need to install espeak first: apt-get install espeak
  5. 5.Download datasets
  6. 6.Download and extract the LJ Speech dataset, then rename or create a link to the dataset folder: ln -s /path/to/LJSpeech-1.1/wavs DUMMY1
  7. 7.For mult-speaker setting, download and extract the VCTK dataset, and downsample wav files to 22050 Hz. Then rename or create a link to the dataset folder: ln -s /path/to/VCTK-Corpus/downsampled_wavs DUMMY2
  8. 8.Build Monotonic Alignment Search and run preprocessing if you use your own datasets.
sh
# Cython-version Monotonoic Alignment Search
cd monotonic_align
python setup.py build_ext --inplace

# Preprocessing (g2p) for your own datasets. Preprocessed phonemes for LJ Speech and VCTK have been already provided.
# python preprocess.py --text_index 1 --filelists filelists/ljs_audio_text_train_filelist.txt filelists/ljs_audio_text_val_filelist.txt filelists/ljs_audio_text_test_filelist.txt 
# python preprocess.py --text_index 2 --filelists filelists/vctk_audio_sid_text_train_filelist.txt filelists/vctk_audio_sid_text_val_filelist.txt filelists/vctk_audio_sid_text_test_filelist.txt

Training Exmaple

sh
# LJ Speech
python train.py -c configs/ljs_base.json -m ljs_base

# VCTK
python train_ms.py -c configs/vctk_base.json -m vctk_base

Inference Example

See inference.ipynb