Back to Blog

The Open-Weight Voice LLM Landscape on Hugging Face: A Beginner's Guide

A beginner's guide to the open-weight voice LLM ecosystem on Hugging Face in 2026. Covers neural audio codecs, full-duplex speech models, VRAM sizing, and local serving.

AI/ML10 min readAuthor: Kukil Kashyap Borgohain
The Open-Weight Voice LLM Landscape on Hugging Face A Beginners Guide

Building real-time conversational voice agents used to mean paying high per-minute API fees to proprietary cloud providers. In 2026, you can run high-fidelity, full-duplex speech-to-speech models locally on consumer GPUs. The open-weight voice ecosystem on Hugging Face has exploded, but navigating audio tokenizers, model families, and VRAM sizing can be overwhelming for beginners.

When you work with standard text LLMs, the pipeline is straightforward: words become tokens, a transformer predicts the next token, and a detokenizer outputs text. In voice, you are dealing with continuous audio waveforms sampled at 16,000 to 48,000 floats per second.

This guide breaks down how modern voice LLMs function, reviews the top open-weight models available on Hugging Face today, and outlines the hardware requirements and code needed to run them locally.


The Core Families of Voice Models

Before downloading weights, you must understand the three distinct architectures powering open voice AI today.

Family 1

Native Speech-to-Speech

Processes raw audio tokens directly into speech tokens. Eliminates intermediate text bottlenecks for sub-200ms conversational turn-taking.
e.g. Kyutai Moshi & Mini-Omni2
Family 2

Audio-Language Models

Cross-modal transformers that ingest audio files, voicemails, or live speech to generate intelligent text responses and trigger tools.
e.g. Qwen2-Audio & Ultravox
Family 3

Streaming Neural TTS

High-speed speech synthesis engines capable of zero-shot voice cloning from a 3-second reference clip with sub-150ms chunk latency.
e.g. CosyVoice 2 & F5-TTS

How Voice LLMs Hear and Speak: Neural Audio Codecs

A 5-second audio clip sampled at 24kHz contains 120,000 numbers. If you feed raw audio directly into a transformer, self-attention memory scales quadratically (O(N2)O(N^2)), instantly crashing GPU VRAM.

To solve this, voice models use Neural Audio Codecs powered by Residual Vector Quantization (RVQ).

Loading diagram...

Residual Vector Quantization (RVQ) Explained

Instead of looking up a latent vector in a single massive codebook, RVQ passes the vector through a cascade of smaller codebooks:

  1. Codebook 1: Quantizes the coarse phonetic and linguistic content.
  2. Residual Calculation: Computes the difference between the original vector and the quantized output.
  3. Codebook 2 to K: Quantizes the remaining error, capturing fine acoustic details such as speaker pitch, vocal timbre, and room acoustics.

Top Open Audio Codecs on Hugging Face

CodecHub RepoFrame RateCodebooksBitrateBest For
Mimikyutai/mimi12.5 Hz8 / 321.1 kbpsFull-duplex conversational voice (powers Moshi)
Descript Audio Codec (DAC)descript/dac50 Hz9 / 128.0 kbpsStudio-quality voice cloning and musical fidelity
SNAChubertsiuzdak/snac_24khz12.5 >> 50 HzMulti-scale0.9 >> 2.6 kbpsHierarchical tokens for lightweight speech LLMs
CosyVoice TokenizerFunAudioLLM/CosyVoice2-0.5B25 HzHybrid1.5 kbpsReal-time zero-shot streaming synthesis

The Leading Open-Weight Models on Hugging Face

Here is a breakdown of the most capable open-weight voice foundation models available on the Hugging Face Hub today.

Loading diagram...

1. Kyutai Moshi & Mimi (Full-Duplex Speech-to-Speech)

  • Hugging Face Hub: kyutai/moshiko-pytorch-bf16
  • Backbone: 7.7B parameter Helium LLM + Mimi neural codec.
  • Why It Matters: Moshi is the first open-weight model designed from the ground up for full-duplex conversational voice. Instead of waiting for the user to stop speaking, Moshi models two parallel audio streams: what the caller is saying and what the bot is uttering. It supports spontaneous conversational interjections ("uh-huh", "yeah") and mid-sentence barge-in interruptions with sub-200ms latency.
  • License: CC-BY 4.0.

2. Mini-Omni & Mini-Omni2 (Snakers4)

  • Hugging Face Hub: gpt-omni/mini-omni2
  • Backbone: Lightweight 0.5B to 7B models using SNAC hierarchical tokens.
  • Why It Matters: If you do not have an enterprise GPU cluster, Mini-Omni is built for efficiency. It predicts text tokens and SNAC audio tokens simultaneously in a single forward pass. Mini-Omni2 adds real-time visual-audio multimodal streaming and runs cleanly on Apple Silicon M-series chips and 8GB NVIDIA GPUs.
  • License: Apache 2.0.

3. Qwen2-Audio (Alibaba)

  • Hugging Face Hub: Qwen/Qwen2-Audio-7B-Instruct
  • Backbone: Dual-encoder combining Whisper-large-v3 features and Qwen2 7B.
  • Why It Matters: Qwen2-Audio is the benchmark leader for audio analysis, multi-lingual speech recognition, environmental sound detection, and spoken question answering across 30+ languages.
  • License: Apache 2.0.

4. Ultravox (Fixie.ai)

  • Hugging Face Hub: fixie-ai/ultravox-v0_5-llama-3_2-3b, fixie-ai/ultravox-v0_5-gemma-2-9b
  • Backbone: Lightweight projection layer connecting audio encoders directly to Llama 3.2, Llama 3.3, or Gemma 2 backbones.
  • Why It Matters: Rather than training a voice model from scratch, Ultravox projects audio tokens directly into open LLM backbones. This achieves ultra-low Time-to-First-Token (TTFT < 150ms) while retaining the full reasoning and tool-calling capabilities of the underlying text model.
  • License: Apache 2.0.

5. CosyVoice 2 (Alibaba) & F5-TTS

  • Hugging Face Hub: FunAudioLLM/CosyVoice2-0.5B, SWAN-Lab/F5-TTS
  • Backbone: Flow Matching and diffusion-based neural vocoders.
  • Why It Matters: For modular voice bots using cascaded pipelines (STT >> LLM >> TTS), CosyVoice 2 and F5-TTS deliver studio-grade zero-shot voice cloning from just 3 seconds of reference audio with sub-150ms streaming chunk generation.
  • License: Apache 2.0.

Master Comparison Matrix

ModelHugging Face IDSizeAudio CodecPrimary ModalityTarget LatencyLicense
Moshikyutai/moshiko-pytorch-bf167.7BMimi (12.5Hz)Speech-to-Speech160ms >> 220msCC-BY 4.0
Mini-Omni2gpt-omni/mini-omni20.5B >> 7BSNAC (Multi-scale)Audio+Vision-to-Speech220ms >> 350msApache 2.0
Qwen2-AudioQwen/Qwen2-Audio-7B-Instruct7BWhisper EncoderAudio-to-Text250ms >> 400msApache 2.0
Ultravox 3Bfixie-ai/ultravox-v0_53BW2V-BERT 2.0Audio-to-Text120ms >> 200msApache 2.0
CosyVoice 2FunAudioLLM/CosyVoice2-0.5B0.5BSpeech TokenizerText-to-Speech100ms >> 150msApache 2.0
F5-TTSSWAN-Lab/F5-TTS0.3BFlow MatchingText-to-Speech150ms >> 250msApache 2.0

Hardware Requirements & VRAM Sizing

Voice models require enough VRAM to hold model weights, neural codec encoders, and audio context buffers without swapping to system RAM.

GPU HardwareVRAMSupported Models (BF16 / FP16)Supported Models (4-Bit / AWQ / GGUF)Feasibility
RTX 3060 / 40608GB >> 12GBMini-Omni (0.5B), CosyVoice 2 (0.5B), F5-TTS, Ultravox-3BQwen2-Audio (7B 4-bit), Moshi (7.7B 4-bit)Local development & prototyping
RTX 4070 / 408012GB >> 16GBUltravox-3B + CosyVoice 2, Mini-Omni2 (7B), Qwen2-Audio (7B)Moshi (7.7B 4-bit AWQ)Real-time single-stream voice agent
RTX 3090 / 409024GBMoshi (7.7B BF16), Qwen2-Audio (7B BF16) + CosyVoice 2All open models with full 16k contextProduction-grade full-duplex voice
Apple Silicon (M-Series)16GB >> 128GBMoshi (MLX backend), Mini-Omni2 (Metal/MPS), UltravoxNative FP16 on Unified MemoryWhisper + Local SLM + Fast TTS

Hands-On Implementation: Running Qwen2-Audio in Python

Here is how to load and query an open-weight audio-language model directly using Hugging Face transformers and torchaudio.

1. Environment Setup

bash
1pip install torch torchaudio transformers accelerate librosa

2. Audio Question Answering Script

python
1# audio_understanding_demo.py
2import torch
3import librosa
4from transformers import AutoProcessor, Qwen2AudioForConditionalGeneration
5
6model_id = "Qwen/Qwen2-Audio-7B-Instruct"
7
8# 1. Load processor and model
9print("Loading model weights...")
10processor = AutoProcessor.from_pretrained(model_id)
11model = Qwen2AudioForConditionalGeneration.from_pretrained(
12    model_id,
13    device_map="auto",
14    torch_dtype=torch.bfloat16
15)
16
17# 2. Load audio file and resample to model's expected rate (16kHz)
18audio_file = "customer_voicemail.wav"
19audio_raw, sample_rate = librosa.load(audio_file, sr=processor.feature_extractor.sampling_rate)
20
21# 3. Format conversational audio prompt
22conversation = [
23    {"role": "user", "content": [
24        {"type": "audio", "audio_url": audio_file},
25        {"type": "text", "text": "Transcribe this caller's message, extract their account number, and identify their mood."}
26    ]}
27]
28
29# Apply chat template and tokenize
30chat_prompt = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
31inputs = processor(text=chat_prompt, audios=[audio_raw], return_tensors="pt", padding=True).to("cuda")
32
33# 4. Generate response
34print("Generating response...")
35with torch.no_grad():
36    output_tokens = model.generate(**inputs, max_new_tokens=256)
37    # Strip input prompt tokens from output
38    output_tokens = output_tokens[:, inputs.input_ids.size(1):]
39    response = processor.batch_decode(output_tokens, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
40
41print(f"\nModel Output:\n{response}")

Hands-On Implementation: Streaming Synthesis with CosyVoice 2

To synthesize streaming speech tokens with low latency from open weights:

python
1# streaming_tts_demo.py
2import torch
3import torchaudio
4from cosyvoice.cli.cosyvoice import CosyVoice2
5
6# 1. Initialize CosyVoice 2 pipeline
7cosyvoice = CosyVoice2("pretrained_models/CosyVoice2-0.5B")
8
9# 2. Define 3-second reference audio for zero-shot voice cloning
10prompt_audio = "speaker_reference_3s.wav"
11prompt_transcript = "This is the reference voice speaking."
12
13text_to_speak = "Welcome to our local open voice assistant running entirely on open weights."
14
15# 3. Stream generated 24kHz audio chunks
16print("Streaming audio output...")
17for chunk_idx, audio_chunk in enumerate(cosyvoice.inference_zero_shot(text_to_speak, prompt_transcript, prompt_audio, stream=True)):
18    chunk_tensor = audio_chunk["tts_speech"] # Shape: [1, Audio_Samples]
19    torchaudio.save(f"chunk_{chunk_idx}.wav", chunk_tensor, 24000)

Top 5 Beginner Pitfalls to Avoid

  1. Sample Rate Mismatches:
    • Issue: Passing a 44.1kHz microphone recording into an audio model expecting 16kHz or 24kHz causes chipmunk-like distortion or silent transcription failures.
    • Fix: Always resample audio explicitly using torchaudio.transforms.Resample(orig_freq, target_freq).
  2. Stereo Channel Crashes:
    • Issue: Audio models expect mono tensors [Batch, Time]. Passing dual-channel stereo tensors doubles computation or triggers matrix multiplication errors.
    • Fix: Average stereo channels to mono: torch.mean(audio, dim=0, keepdim=True).
  3. Audio Clipping Distortion:
    • Issue: Converting float tensors (1.0-1.0 to +1.0+1.0) to 16-bit integer PCM without clamping causes wrap-around crackle.
    • Fix: Apply torch.clamp(audio, min=-0.99, max=0.99) prior to exporting audio.
  4. VRAM Accumulation in Dialogue History:
    • Issue: Appending raw high-dimensional audio embeddings to conversation history exhausts VRAM within 3 dialogue turns.
    • Fix: Store generated text transcripts or discrete audio token integers; discard raw continuous audio tensors after each turn.
  5. Streaming Buffer Starvation:
    • Issue: Playing individual 20ms audio chunks directly over WebSockets causes choppy audio if GPU load spikes.
    • Fix: Buffer at least 160ms (2 chunks) in an asyncio.Queue before playback starts to absorb jitter.

Next Steps: Moving to Production Voice Systems

Once you have experimented with running open-weight voice models locally, deploying them in real-time telephony environments requires robust regression testing and latency management.

Explore our deep-dive series on voice bot engineering:


References

  1. Kyutai Moshi & Mimi Open-Access Speech Model
  2. Hugging Face Transformers Audio Documentation
  3. Mini-Omni2 Multimodal Speech Model
  4. Fixie.ai Ultravox Audio-Language Projector
  5. FunAudioLLM CosyVoice 2 Repository
  6. F5-TTS Non-Autoregressive Speech Synthesis
  7. Descript Audio Codec (DAC)
  8. Silero Voice Activity Detector (VAD)

If the article helped you in some way, consider giving it a like. This will mean a lot to me. You can download the code related to the post using the download button below.

If you see any bug, have a question for me, or would like to provide feedback, please drop a comment below.