VibeVoice

repository·main·Indexed 13 days ago

https://github.com/microsoft/vibevoice

An open-source frontier voice AI framework providing high-fidelity, long-form Speech-to-Text (ASR) and Text-to-Speech (TTS) models. The family includes VibeVoice-ASR-7B for long-form transcription (up to 60 minutes), VibeVoice-TTS-1.5B for multi-speaker generation (up to 90 minutes), VibeVoice-Realtime-0.5B for low-latency streaming TTS, and VibeVoice-ASR-BitNet for CPU-only inference via VibeASR.cpp.

Tokens
9.1K
Snippets
21
Records
48
Agent score
96%

What's inside VibeVoice

  1. What is VibeVoice-ASR and its key features?

    main

    VibeVoice-ASR is a unified speech-to-text model designed for long-form audio processing (up to 60 minutes in a single pass). It provides structured transcriptions including:

    • Who (Speaker): Diarization to identify different speakers.
    • When (Timestamps): Precise timing for utterances.
    • What (Content): The transcribed text.

    Key Capabilities:

    • Single-Pass 60-minute Processing: Handles continuous audio within a 64K token length, maintaining global context and speaker tracking.
    • Customized Hotwords: Allows users to provide specific names or technical terms to improve recognition accuracy.
    • Multilingual & Code-Switching: Supports over 50 languages natively without requiring explicit language settings and handles switching between languages within a single utterance.
  2. Overview of VibeVoice Models

    main

    VibeVoice is a family of open-source frontier voice AI models utilizing continuous speech tokenizers (Acoustic and Semantic) at a 7.5 Hz frame rate. It uses a next-token diffusion framework where an LLM handles textual context and a diffusion head generates acoustic details. The family includes:

    • VibeVoice-ASR-7B: Long-form speech-to-text (up to 60 minutes).
    • VibeVoice-ASR-BitNet: A compressed version for edge CPU inference (no GPU required).
    • VibeVoice-TTS-1.5B: Long-form multi-speaker text-to-speech (up to 90 minutes).
    • VibeVoice-Realtime-0.5B: Lightweight, real-time streaming TTS (~300ms latency).
  3. Overview of VibeVoice-TTS

    main

    VibeVoice-TTS is a long-form, multi-speaker text-to-speech (TTS) model designed for generating expressive conversational audio, such as podcasts. It is built on a next-token diffusion framework that combines a Qwen2.5-based Large Language Model (LLM) for context understanding, continuous speech tokenizers (operating at 7.5 Hz), and a diffusion head for high-fidelity acoustic generation.

    Key Capabilities

    • Long-form Generation: Synthesizes up to 90 minutes of speech in a single pass while maintaining speaker consistency and semantic coherence.
    • Multi-speaker Support: Supports up to 4 distinct speakers in a single conversation with natural turn-taking.
    • Multi-lingual: Supports English and Chinese (with emergent cross-lingual capabilities).
    • Expressive Speech: Captures conversational dynamics and emotional nuances.
  4. VibeVoice-TTS: Long-form Multi-speaker TTS

    main

    VibeVoice-TTS is optimized for long-form conversational audio, such as podcasts or multi-speaker dialogues.

    Key Capabilities:

    • 90-minute Generation: Synthesizes speech up to 90 minutes in a single pass while maintaining speaker consistency.
    • Multi-speaker Support: Supports up to 4 distinct speakers in a single conversation with natural turn-taking.
    • Expressive Speech: Captures conversational dynamics and emotional nuances.
    • Multi-lingual: Supports English, Chinese, and other languages.
  5. VibeVoice-Realtime-0.5B: Real-time Streaming TTS

    main

    VibeVoice-Realtime is a lightweight (0.5B parameter) model designed for low-latency deployment.

    Key Capabilities:

    • Low Latency: Approximately 300 milliseconds first audible latency.
    • Streaming Input: Supports streaming text input for real-time interaction.
    • Long-form Robustness: Capable of robust speech generation for up to ~10 minutes.
    • Deployment Friendly: Small parameter size makes it suitable for edge or resource-constrained environments.
  6. VibeVoice-ASR: Long-form Speech Recognition

    main

    VibeVoice-ASR is a unified speech-to-text model designed for long-form audio processing.

    Key Capabilities:

    • 60-minute Single-Pass Processing: Handles up to 60 minutes of continuous audio within a 64K token length, ensuring consistent speaker tracking and semantic coherence.
    • Rich Transcription: Performs joint ASR, diarization, and timestamping to produce structured output containing Who (Speaker), When (Timestamps), and What (Content).
    • Customized Hotwords: Supports user-provided hotwords (names, technical terms) to improve accuracy for domain-specific content.
    • Multilingual: Natively supports over 50 languages.

    Integration Options:

    • Available via Hugging Face Transformers.
    • Supported by vLLM for faster inference.
    • Available as VibeVoice-ASR-BitNet for CPU-only inference using VibeASR.cpp.
  7. Understanding spontaneous background music and sounds

    main

    VibeVoice-TTS does not provide direct control over background music (BGM) or spontaneous sounds; they are emergent, content-aware features triggered by input text and voice prompts.

    Observed Behaviors

    • Voice Prompt Influence: If the voice prompt contains BGM, the generated speech is more likely to include it.
    • Textual Triggers: Even with a clean voice prompt, introductory phrases like "Welcome to," "Hello," or "However" may trigger BGM.
    • Speaker Specifics: Using the speaker "Alice" has been observed to result in more random BGM.
    • Stability: The Large model is generally more stable and has a lower probability of generating unexpected BGM.
  8. Understand VibeVoice-Realtime core concepts

    main

    VibeVoice-Realtime is a lightweight (0.5B parameter) text-to-speech model designed for low-latency, long-form speech generation.

    Key Characteristics:

    • Streaming Input: Supports incremental text chunks, allowing LLMs to start speaking from their first tokens.
    • Interleaved Windowed Design: It encodes incoming text chunks in parallel with diffusion-based acoustic latent generation from prior context.
    • Acoustic Tokenizer: Unlike full multi-speaker variants, this model removes the semantic tokenizer and uses an efficient acoustic tokenizer operating at 7.5 Hz.
    • Context Window: Supports an 8k context window, capable of generating approximately 10 minutes of audio.
    • Single Speaker: This specific real-time variant supports only a single speaker. For multi-speaker conversational needs, use the long-form multi-speaker variants of VibeVoice.

    Limitations:

    • Language: Primarily English. Other languages may produce unpredictable results.
    • Content: Does not support code, mathematical formulas, or special symbols. Pre-process text to normalize these.
    • Audio Type: Focused on speech only; does not handle background noise or music.
    • Input Length: Extremely short inputs (3 words or fewer) may cause stability degradation.
  9. Deploy the VibeVoice ASR Server via Docker

    main

    To deploy the VibeVoice ASR server, use a Docker container based on vllm/vllm-openai:v0.14.1. The launcher script start_server.py handles system dependencies, model downloads, and server initialization.

    Single GPU Setup

    Use this command to run the server on a single GPU (default behavior):

    docker run -d --gpus '"device=0"' --name vibevoice-asr-demo \
      --ipc=host \
      -p 6001:6001 \
      -e VIBEVOICE_FFMPEG_MAX_CONCURRENCY=64 \
      -e PYTORCH_ALLOC_CONF=expandable_segments:True \
      -v $(pwd):/app \
      -w /app \
      --entrypoint bash \
      vllm/vllm-openai:v0.14.1 \
      -c "python3 /app/vllm_plugin/scripts/start_server.py --port 6001"

    Multi-GPU with Data Parallel (Load Balancing)

    To scale throughput, run multiple replicas using the --dp N flag. For example, to run 4 replicas across 4 GPUs:

    docker run -d --gpus '"device=0,1,2,3"' --name vibevoice-asr-demo \
      --ipc=host \
      -p 6001:6001 \
      -e VIBEVOICE_FFMPEG_MAX_CONCURRENCY=64 \
      -e PYTORCH_ALLOC_CONF=expandable_segments:True \
      -v $(pwd):/app \
      -w /app \
      --entrypoint bash \
      vllm/vllm-openai:v0.14.1 \
      -c "python3 /app/vllm_plugin/scripts/start_server.py --port 6001 --dp 4"

    Note: Use --tp N for tensor parallel if working with very large models.

  10. Configure Multi-GPU deployment (DP and TP)

    main

    The VibeVoice launcher supports two types of GPU parallelism to optimize for either throughput or model size:

    • Data Parallel (--dp N): Runs N independent model replicas across N GPUs. This is recommended for scaling throughput. An nginx reverse proxy automatically load balances requests across the workers.
    • Tensor Parallel (--tp N): Splits a single model across N GPUs. Use this if the model is too large to fit in the memory of a single GPU.
    • Hybrid (--dp N --tp M): Combines both strategies. The total GPUs required is N * M.

    Note: Ensure you expose the correct number of devices in the Docker --gpus flag.

    # Data Parallel: 4 independent replicas on 4 GPUs
    docker run -d --gpus '"device=0,1,2,3"' --name vibevoice-vllm \
      --ipc=host -p 8000:8000 -v $(pwd):/app -w /app \
      --entrypoint bash vllm/vllm-openai:v0.14.1 \
      -c "python3 /app/vllm_plugin/scripts/start_server.py --dp 4"
    
    # Tensor Parallel: 1 model split across 2 GPUs
    docker run -d --gpus '"device=0,1"' --name vibevoice-vllm \
      --ipc=host -p 8000:8000 -v $(pwd):/app -w /app \
      --entrypoint bash vllm/vllm-openai:v0.14.1 \
      -c "python3 /app/vllm_plugin/scripts/start_server.py --tp 2"
    
    # Hybrid: 2 replicas, each split across 2 GPUs (4 GPUs total)
    docker run -d --gpus '"device=0,1,2,3"' --name vibevoice-vllm \
      --ipc=host -p 8000:8000 -v $(pwd):/app -w /app \
      --entrypoint bash vllm/vllm-openai:v0.14.1 \
      -c "python3 /app/vllm_plugin/scripts/start_server.py --dp 2 --tp 2"
  11. Install VibeVoice-Realtime

    main

    To use VibeVoice-Realtime, it is recommended to use an NVIDIA Deep Learning Container to manage the CUDA environment.

    1. Launch Docker: Use an NVIDIA PyTorch Container (versions 24.07, 24.10, or 24.12 are verified; later versions are compatible).
    2. Install Flash Attention: If your Docker environment does not include flash-attn, install it manually using pip install flash-attn --no-build-isolation.
    3. Install VibeVoice: Clone the repository and install the package with the [streamingtts] extra.

    Note: The model is primarily designed for English. While it shows some multilingual capability in German, French, Italian, Japanese, Korean, Dutch, Polish, Portuguese, and Spanish, these have not been extensively tested.

    # 1. Launch docker
    sudo docker run --privileged --net=host --ipc=host --ulimit memlock=-1:-1 --ulimit stack=-1:-1 --gpus all --rm -it  nvcr.io/nvidia/pytorch:24.07-py3
    
    # 2. Install flash-attn if not present
    pip install flash-attn --no-build-isolation
    
    # 3. Install from github
    git clone https://github.com/microsoft/VibeVoice.git
    cd VibeVoice/
    pip install -e .[streamingtts]