whatmodel.sh / tts / Llasa-8B
Llasa-8B
↗ share
+ contribute
Llasa-8B is an open-weights text-to-speech model from HKUST Audio, released January 2025. Its published size is 8.57B parameters. Licence: cc-by-nc-4.0.
Catalogue identity notes
HKUSTAudio/Llasa-8B (8,567,197,696 parameters per HF safetensors metadata) with the XCodec2 decoder. Distinct from Llasa-1B/3B.
Score within the Vapi Humanness · Bradley–Terry rating, 2026-09-25 snapshot comparison set only.
$ how it compares
The text-to-speech models ranked either side of Llasa-8B, out of 148 with a score.
| # | model | score | where |
|---|---|---|---|
| 75 | 52±3 | comparison only | |
| 76 | 52±3 | local | |
| 77 | 52±3 | local | |
| 78 | 51±3 | api $38.00/M chars | |
| 79 | 51±14 | local |
see all text-to-speech models · find the ones that fit your machine
$ what it's good at
voice cloning▁·▁▁▁▁▃▁▇█▃▃ #31 of 37 · 97% of its score · 4 tests
| test | result | vs the others in its run | counts |
|---|---|---|---|
| Seed-TTS test-en · speaker similarity (WavLM-large SV) +1 | 58.1% ✎ | ▄····▄·█▄█▄▄ beats 0/8 | 53% |
| Seed-TTS test-zh · speaker similarity (WavLM-large SV) | 67.1% ✎ | ▁·▃··▂·█▄·▃▄ beats 1/25 | 21% |
| Seed-TTS test-en · Whisper large-v3 WER +1 | 3.6% ✎ | ▄···█▄▄·█▄·▄ beats 0/8 | 18% |
| Seed-TTS test-zh · Paraformer CER | 4.2% ✎ | ▃·▂▁▁▁▂▃▅█·▂ beats 0/30 | 4.6% |
$ where to run it
Other ways to run it
- Run it as published · needs ~20.43 GB, NVIDIA only · from huggingface.co/HKUSTAudio (official)
pip install xcodec2==0.1.5 && python -c "from transformers import AutoTokenizer, AutoModelForCausalLM; import torch; import soundfile as sf; from xcodec2.modeling_xcodec2 import XCodec2Model; torch.set_grad_enabled(False); llasa_8b = 'HKUSTAudio/Llasa-8B'; tokenizer = AutoTokenizer.from_pretrained(llasa_8b); model = AutoModelForCausalLM.from_pretrained(llasa_8b); model.eval(); model.to('cuda'); Codec_model = XCodec2Model.from_pretrained('HKUSTAudio/xcodec2'); Codec_model.eval().cuda(); input_text = 'Hello, world.'; formatted_text = f'<|TEXT_UNDERSTANDING_START|>{input_text}<|TEXT_UNDERSTANDING_END|>'; chat = [{'role': 'user', 'content': 'Convert the text to speech:' + formatted_text}, {'role': 'assistant', 'content': '<|SPEECH_GENERATION_START|>'}]; input_ids = tokenizer.apply_chat_template(chat, tokenize=True, return_tensors='pt', continue_final_message=True).to('cuda'); speech_end_id = tokenizer.convert_tokens_to_ids('<|SPEECH_GENERATION_END|>'); outputs = model.generate(input_ids, max_length=2048, eos_token_id=speech_end_id, do_sample=True, top_p=1, temperature=1); speech_tokens = tokenizer.batch_decode(outputs[0][input_ids.shape[1]:-1], skip_special_tokens=True); speech_tokens = torch.tensor([int(t[4:-2]) for t in speech_tokens if t.startswith('<|s_') and t.endswith('|>')]).cuda().unsqueeze(0).unsqueeze(0); gen_wav = Codec_model.decode_code(speech_tokens); sf.write('gen.wav', gen_wav[0, 0, :].cpu().numpy(), 16000)"
Official weights and documentation: huggingface.co/HKUSTAudio ↗
$ how the score was worked out · DMOSpeech 2: Reinforcement Le… 53%, Raon-OpenTTS: Open Models and… 44%
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 |
|---|---|---|
| 4 | 53% | |
| 2 | 44% | |
| prior · pull toward the middle | 3% | |
| weighted average | = 51.5 |
$ 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