Views
No views yet
ViBES-Face.Version note (2026-05-30): the weights were updated to our latest distillation checkpoint — the final stage-5 multi-task model of the distillation pipeline (covering the S2S / S2T / T2S / T2T modes below). Same architecture, tokenizer, and interface as the initial release; quality is improved. ViBES 0.5B motion experts trained against an earlier snapshot should be retrained or re-validated against this base.
ChatGLMForConditionalGeneration family as the teacher, scaled down —
hidden 1024 · 24 layers · FFN 3456 · 8 attention heads / 2 KV groups (head_dim 128) · RMSNorm ·
RoPE · SwiGLU · GQA · vocab 168960 (identical to the teacher). Tied embeddings → ~0.49B
unique trainable params (stored untied on disk, ~0.66B, so the official server loads it unchanged).ViBES-Audio only replaces the LLM; pair it with the official GLM-4-Voice tokenizer + decoder.1import torch
2from transformers import AutoModel, AutoTokenizer
3
4M = "JuzeZhang/ViBES-Audio"
5tok = AutoTokenizer.from_pretrained(M, trust_remote_code=True)
6model = AutoModel.from_pretrained(M, trust_remote_code=True,
7 torch_dtype=torch.bfloat16).to("cuda").eval()
8
9SYS = ("User will provide you with a text instruction. Do it step by step. First, think about the "
10 "instruction and respond in a interleaved manner, with 13 text token followed by 26 audio tokens.")
11prompt = f"<|system|>\n{SYS}<|user|>\nTell me a joke.<|assistant|>streaming_transcription\n"
12
13enc = tok([prompt], return_tensors="pt").to("cuda")
14out = model.generate(**enc, max_new_tokens=512, do_sample=True, temperature=0.2, top_p=0.8)
15gen = out[0, enc["input_ids"].shape[1]:].tolist()
16
17# split the interleaved stream into text vs. speech tokens
18audio_offset = tok.convert_tokens_to_ids("<|audio_0|>") # 152353
19text_ids = [t for t in gen if t < audio_offset and t not in (151329, 151336, 151338)]
20audio_ids = [t - audio_offset for t in gen if t >= audio_offset]
21print(tok.decode(text_ids)) # the spoken transcript
22# feed `audio_ids` to the GLM-4-Voice decoder (CosyVoice flow + HiFi-GAN) to synthesize the wavweb_demo.py / model_server.py) — point
--model-path at this checkpoint and keep the official --tokenizer-path / --flow-path.