whatmodel.sh / tts / VITS (LJ Speech)
VITS (LJ Speech)
↗ share
+ contribute
VITS (LJ Speech) is an open-weights text-to-speech model from Kakao / KAIST, released June 2021.
Catalogue identity notes
Exact ljspeech system in VITS Table 1; HiFi-GAN fine-tuning is a distinct vocoder configuration. Published implementation/checkpoint links in §3.4; no generic Tacotron or Glow-TTS score substitution.
Score within the VITS 2021 LJ Speech human MOS comparison set only.
$ how it compares
Scored text-to-speech models released closest to VITS (LJ Speech), out of 148 with a score.
| # | model | score | where |
|---|---|---|---|
| 81 | 50±16 | comparison only | |
| 82 | 50±16 | comparison only | |
| 124 | 34±5 | local | |
| 135 | 28±6 | comparison only | |
| 142 | 19±6 | comparison only |
see all text-to-speech models · find the ones that fit your machine
$ what it's good at
other tests1 not in a task · 53% of its score
| test | result | vs the others in its run | counts |
|---|---|---|---|
| VITS 2021 LJ Speech human MOS lab | 4.43 / 5 ✎ | █····█·█·█·█ beats 4/4 | 53% |
$ where to run it
Other ways to run it
- Run it as published · needs ~0.15 GB, NVIDIA only · from github.com/jaywalnut310
git clone https://github.com/jaywalnut310/vits && cd vits && pip install -r requirements.txt && apt-get install espeak && cd monotonic_align && python setup.py build_ext --inplace && cd .. && python -c "import torch, commons, utils; from models import SynthesizerTrn; from text.symbols import symbols; from text import text_to_sequence; from scipy.io.wavfile import write; hps = utils.get_hparams_from_file('./configs/ljs_base.json'); net_g = SynthesizerTrn(len(symbols), hps.data.filter_length // 2 + 1, hps.train.segment_size // hps.data.hop_length, **hps.model).cuda(); _ = net_g.eval(); _ = utils.load_checkpoint('/path/to/pretrained_ljs.pth', net_g, None); text_norm = text_to_sequence('VITS is Awesome!', hps.data.text_cleaners); text_norm = commons.intersperse(text_norm, 0) if hps.data.add_blank else text_norm; stn_tst = torch.LongTensor(text_norm); torch.set_grad_enabled(False); x_tst = stn_tst.cuda().unsqueeze(0); x_tst_lengths = torch.LongTensor([stn_tst.size(0)]).cuda(); audio = net_g.infer(x_tst, x_tst_lengths, noise_scale=.667, noise_scale_w=0.8, length_scale=1)[0][0,0].data.cpu().float().numpy(); write('ljs.wav', hps.data.sampling_rate, audio)"
Weights and documentation: github.com/jaywalnut310 ↗
$ how the score was worked out · VITS: ICML 2021 original list… 53%
Each result implies a score on its own, after adjusting for how hard its test is and who ran it. The score is their weighted average, with a small pull toward the middle for thinly tested models. Each test's weight is its counts column above; here it's added up by who ran the tests. How it works
| source | results | share of the score |
|---|---|---|
| 1 | 53% | |
| prior · pull toward the middle | 47% | |
| weighted average | = 67.4 |
$ improve this page
Use a short GitHub form or edit the data through a pull request. Every number needs a source; here's which ones we can use.
data updated · sources and licences · json