whatmodel.sh / tts / Llasa-8B

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.

51.5±2.6#62 of 118 text-to-speech modelsfrom 6 benchmark results across 2 sources

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.

#modelscorewhereRAMreleased
75Neuphonic neu_hq Neuphonic52±3comparison only2025-08
76Spark-TTS 0.5B SparkAudio52±3local~2.9GB2025-02
77Llasa-8B HKUST Audio52±3local~20GB2025-01
78Gradium TTS Gradium51±3api $38.00/M chars2025-12
79OpenVoice V1 MyShell51±14local~0.3GB2024-01

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
testresultvs the others in its rundifficultycountswhy
Seed-TTS test-en · speaker similarity (WavLM-large SV) +158.1% ✎▄····▄·█▄█▄▄ beats 0/8medium · avg 53%▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 53%at its level · several runs
Seed-TTS test-zh · speaker similarity (WavLM-large SV)67.1% ✎▁·▃··▂·█▄·▃▄ beats 1/25medium · avg 62%▇▇▇▇▇▇▇▇ 21%at its level
Seed-TTS test-en · Whisper large-v3 WER +13.6% ✎▄···█▄▄·█▄·▄ beats 0/8avg 3.6%▇▇▇▇▇▇▇ 18%blunt · several runs
Seed-TTS test-zh · Paraformer CER4.2% ✎▃·▂▁▁▁▂▃▅█·▂ beats 0/30avg 2.1%▇▇ 4.6%blunt

$ where to run it

Other ways to run it

  1. 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

sourceresultsshare of the scorelicence
DMOSpeech 2: Reinforcement Learning for Duration Prediction in Metric-Optimized Speech Synthesis (arXiv:2507.14988v1)4▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 53%CC BY-SA 4.0
Raon-OpenTTS: Open Models and Data for Robust Text-to-Speech (arXiv:2605.20830v2)2▇▇▇▇▇▇▇▇▇▇▇▇▇ 44%CC BY 4.0
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