Instructions to use lofcz/VibeVoice-CSK1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- VibeVoice
How to use lofcz/VibeVoice-CSK1 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("lofcz/VibeVoice-CSK1") model = VibeVoiceForConditionalGenerationInference.from_pretrained( "lofcz/VibeVoice-CSK1", 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) - Notebooks
- Google Colab
- Kaggle
VibeVoice-CSK1
VibeVoice fine-tuning for Czech and Slovak using QLoRA.
Full BF16 checkpoint with the 450h adapter merged into VibeVoice-ASR. Includes both speech encoders, tokenizer, and processor. Outputs text, speaker labels, and timestamps.
Inference
Requires Python 3.11+ and a CUDA GPU with sufficient memory. Tested on a 24 GB RTX A5000. Longer recordings require more memory. Install FFmpeg for audio formats not supported by SoundFile.
pip install huggingface-hub==0.36.2
hf download lofcz/VibeVoice-CSK1 --local-dir VibeVoice-CSK1
cd VibeVoice-CSK1
pip install -r requirements.txt
python inference.py recording.wav --device cuda:0 --output transcription.json
The script uses Microsoft's pinned VibeVoice implementation and greedy decoding. --model accepts a local directory or Hugging Face repo ID. Use --local-files-only after downloading to run offline. --max-new-tokens defaults to 4096; incomplete generation returns exit code 2 and preserves the partial output. Split long recordings into shorter clips when needed.
Python:
from inference import load_model, transcribe
model, processor = load_model(".", device="cuda:0")
result = transcribe(model, processor, "recording.wav")
print(result["text"])
print(result["segments"])
Merge
The export follows the official merge recipe: PeftModel.from_pretrained, merge_and_unload, then save_pretrained. The base revision, adapter hashes, dependency versions, and tensor checks are recorded in merge_manifest.json.
pip install -r requirements-merge.txt
python merge_lora.py --adapter /path/to/adapter-450h --output merged-model
The adapter uses rank 64, alpha 32, and checkpoint step 2564. The exported weights are unquantized BF16. Training and evaluation code.
- Downloads last month
- 33
Model tree for lofcz/VibeVoice-CSK1
Base model
microsoft/VibeVoice-ASR