Zhongli — Qwen3-TTS-0.6B LoRA Model
A Qwen3-TTS LoRA fine-tune that reproduces Zhongli's voice (English Only) from Genshin Impact.
[!IMPORTANT] Fan-made model. Zhongli and Genshin Impact are © miHoYo / HoYoverse. This model is a non-official fan work for research/education purposes and is not affiliated with or endorsed by HoYoverse.
Model Description
This is a LoRA adapter fine-tune of Qwen/Qwen3-TTS-12Hz-0.6B-Base aimed at reproducing the voice of Zhongli (Genshin Impact).
Two ways to use it:
| Route | What you need | Reference audio? |
|---|---|---|
| A. Fine-tuned checkpoint + adapter (this repo, root) | The full model in this repo | ❌ Not needed — the character's reference audio is baked into the state dict during training |
| B. Base model + adapter | Qwen/Qwen3-TTS + this repo's adapter/ folder | ✅ Required — pass any example clip of the character |
Checkout the training code at:
Why LoRA when One Shot Cloning exists? because "Better Quality"
Quickstart
Installation
pip install -U qwen-tts
hf download rijulpaul/Qwen3-TTS-12Hz-0.6B-Zhongli-LoRa-16 --exclude "training-checkpoint/" --exclude "speech_tokenizer/" --local-dir Zhongli-LoRA-16
Usage
- Using Model provided with this repo
import torch
import soundfile as sf
from qwen_tts import Qwen3TTSModel
device = "cuda:0"
tts = Qwen3TTSModel.from_pretrained(
"./Zhongli-LoRA-16",
device_map=device,
dtype=torch.bfloat16,
attn_implementation="flash_attention_2", # use sdpa if flash-attn is not installed
)
from peft import PeftModel
tts.model = PeftModel.from_pretrained(
tts.model,
"./Zhongli-LoRA-16/adapter"
)
wav, sr = tts.generate_custom_voice(
text = "Haha, no, no. Kites are children's toys, yes, but they also play various symbolic roles in Liyue's rituals.",
speaker = "Zhongli"
)
sf.write("output.wav", wavs[0], sr)
- Using the Base Qwen/Qwen3-TTS-12Hz-0.6B model
import torch
import soundfile as sf
from qwen_tts import Qwen3TTSModel
tts = Qwen3TTSModel.from_pretrained(
"Qwen/Qwen3-TTS-12Hz-0.6B-Base",
device_map="cuda:0",
dtype=torch.bfloat16,
attn_implementation="flash_attention_2", # use sdpa if flash-attn is not installed
)
from peft import PeftModel
tts.model = PeftModel.from_pretrained(
tts.model,
"./Zhongli-LoRA-16/adapter"
)
ref_audio = "path_to_Zhongli_voiceline" # Can see https://huggingface.co/datasets/rijulpaul/pano30qx/viewer/Zhongli
ref_text = "voiceline_transcription"
wavs, sr = model.generate_voice_clone(
text="I am solving the equation: x = [-b ± √(b²-4ac)] / 2a? Nobody can — it's a disaster (◍•͈⌔•͈◍), very sad!",
language="English",
ref_audio=ref_audio,
ref_text=ref_text,
)
# Save the resulting audio
sf.write("output_voice_clone.wav", wavs[0], sr)