VibeVoice CoreAI
Collection
4 items โข Updated
How to use gafiatulin/vibevoice-7b-coreai with VibeVoice:
import torch, soundfile as sf, librosa, numpy as np
from vibevoice.processor.vibevoice_processor import VibeVoiceProcessor
from vibevoice.modular.modeling_vibevoice_inference import VibeVoiceForConditionalGenerationInference
# Load voice sample (should be 24kHz mono)
voice, sr = sf.read("path/to/voice_sample.wav")
if voice.ndim > 1: voice = voice.mean(axis=1)
if sr != 24000: voice = librosa.resample(voice, sr, 24000)
processor = VibeVoiceProcessor.from_pretrained("gafiatulin/vibevoice-7b-coreai")
model = VibeVoiceForConditionalGenerationInference.from_pretrained(
"gafiatulin/vibevoice-7b-coreai", torch_dtype=torch.bfloat16
).to("cuda").eval()
model.set_ddpm_inference_steps(5)
inputs = processor(text=["Speaker 0: Hello!\nSpeaker 1: Hi there!"],
voice_samples=[[voice]], return_tensors="pt")
audio = model.generate(**inputs, cfg_scale=1.3,
tokenizer=processor.tokenizer).speech_outputs[0]
sf.write("output.wav", audio.cpu().numpy().squeeze(), 24000)High-quality multi-speaker TTS, 7B Qwen2 backbone. INT8/4 LM.
Source & export pipeline: github.com/gafiatulin/vibevoice-coreai
On-device performance (M4 Max, Core AI): 2.37ร RTF.
โ ๏ธ Beta artifacts. These
.aimodelbundles are compiled for macOS 27 / Xcode 27 beta (Core AI). They may need re-export on the GA toolchain. The original weights are Microsoft VibeVoice (see upstream for the model license).
vibevoice-7b-coreai/
manifest.json # role โ {variant: path} + recommended flags
embed_tokens.f16 # host-side embed table
tokenizer/ # tokenizer files
lm/lm-embeds-int4.aimodel/
lm/lm-embeds.aimodel/
diffusion/fused-sampler-s10.aimodel/
diffusion/fused-sampler.aimodel/
codec/acoustic-decoder.aimodel/
codec/acoustic-encoder.aimodel/
codec/semantic-encoder.aimodel/
connector/acoustic-connector.aimodel/
connector/semantic-connector.aimodel/
Resolve assets by role via manifest.json (default = recommended variant):
{
"lm": {
"default": "lm/lm-embeds.aimodel",
"int4": "lm/lm-embeds-int4.aimodel"
},
"diffusion": {
"default": "diffusion/fused-sampler.aimodel",
"s10": "diffusion/fused-sampler-s10.aimodel"
},
"acoustic_encoder": {
"default": "codec/acoustic-encoder.aimodel"
},
"acoustic_decoder": {
"default": "codec/acoustic-decoder.aimodel"
},
"semantic_encoder": {
"default": "codec/semantic-encoder.aimodel"
},
"acoustic_connector": {
"default": "connector/acoustic-connector.aimodel"
},
"semantic_connector": {
"default": "connector/semantic-connector.aimodel"
}
}
{
"model": "7b",
"fused": true,
"steps": 8,
"lm": "int8",
"auto_chunk": 40,
"decode_compute": "gpu",
"sem_compute": "gpu"
}
Base model
vibevoice/VibeVoice-7B
import torch, soundfile as sf, librosa, numpy as np from vibevoice.processor.vibevoice_processor import VibeVoiceProcessor from vibevoice.modular.modeling_vibevoice_inference import VibeVoiceForConditionalGenerationInference # Load voice sample (should be 24kHz mono) voice, sr = sf.read("path/to/voice_sample.wav") if voice.ndim > 1: voice = voice.mean(axis=1) if sr != 24000: voice = librosa.resample(voice, sr, 24000) processor = VibeVoiceProcessor.from_pretrained("gafiatulin/vibevoice-7b-coreai") model = VibeVoiceForConditionalGenerationInference.from_pretrained( "gafiatulin/vibevoice-7b-coreai", torch_dtype=torch.bfloat16 ).to("cuda").eval() model.set_ddpm_inference_steps(5) inputs = processor(text=["Speaker 0: Hello!\nSpeaker 1: Hi there!"], voice_samples=[[voice]], return_tensors="pt") audio = model.generate(**inputs, cfg_scale=1.3, tokenizer=processor.tokenizer).speech_outputs[0] sf.write("output.wav", audio.cpu().numpy().squeeze(), 24000)