← Open Source
fixie-ai

ultravox

A fast multimodal LLM for real-time voice.

ModelsAudio/Speech modelsPython
Open on GitHub
Momentum
+1stars in 24 hours+0.0%
4.58k
Stars
386
Forks
+8
This week
16
Contributors
Created 2024-05-29 · Updated 2026-10-16 · #4678 today
Top developers
farzadabjubertizqhuang211

fixie-ai/ultravox is ranked 4,678 with 4,580 stars.

Same-category comparison

fixie-ai/ultravox is ranked 4,678 among these 8 peers; fundamentalvision/BEVFormer is ranked 4,673.

Same-category comparison
NameRankMetrics
MoonInTheRiver/DiffSinger4,649
Language:
Python
Stars:
4,877
Forks:
834
Description:
DiffSinger: Singing Voice Synthesis via Shallow Diffusion Mechanism (SVS & TTS); AAAI 2022; Official code.
UX-Decoder/Segment-Everything-Everywhere-All-At-Once4,653
Language:
Python
Stars:
4,793
Forks:
448
Description:
[NeurIPS 2023] Official implementation of the paper "Segment Everything Everywhere All at Once".
MoonshotAI/Kimi-Audio4,663
Language:
Python
Stars:
4,739
Forks:
379
Description:
Kimi-Audio, an open-source audio foundation model excelling in audio understanding, generation, and conversation.
fundamentalvision/BEVFormer4,673
Language:
Python
Stars:
4,627
Forks:
753
Description:
[ECCV 2022] This is the official implementation of BEVFormer, a camera-only framework for autonomous driving perception, e.g., 3D object detection and semantic map segmentation.
zai-org/GLM-4.54,693
Language:
Python
Stars:
4,426
Forks:
485
Description:
GLM-4.5: Agentic, Reasoning, and Coding (ARC) Foundation Models.
limix-ldm-ai/LimiX4,699
Language:
Python
Stars:
4,383
Forks:
309
Description:
LimiX: Unleashing Structured-Data Modeling Capability for Generalist Intelligence https://arxiv.org/abs/2609.17488.
antgroup/echomimic4,710
Language:
Python
Stars:
4,321
Forks:
470
Description:
[AAAI 2025] EchoMimic: Lifelike Audio-Driven Portrait Animations through Editable Landmark Conditioning.
cvg/Hierarchical-Localization4,715
Language:
Python
Stars:
4,241
Forks:
776
Description:
Visual localization made easy with hloc.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguagePython
CategoryModels
SubcategoryAudio/Speech models
KeywordsVoice
Stars4,580
Forks386
Contributors16
Created date2024-05-29
Updated date2026-10-16
Stars in 1 day1
Stars in 7 days8
Rank4,678
Previous rank4,853
Rank change175
7-day stars rank4,372
Previous 7-day stars rank4,364
7-day stars rank change-8
Total stars rank3,062
Previous total stars rank3,061
Total stars rank change-1
CountryUSA
README summary

A fast multimodal LLM designed for real-time voice interactions _Latest News_ 2025/12 - Ultravox 0. Building on research like AudioLM, SeamlessM4T, Gazelle, SpeechGPT, and others, Ultravox is able to extend any open-weight LLM with a multimodal projector that converts audio directly into the high-dimensional space used by LLM. We've trained versions on Llama 3, Mistral, and Gemma. This direct coupling allows Ultravox to respond much more quickly than systems that combine separate ASR and LLM components. In

the future this will also allow Ultravox to natively understand the paralinguistic cues of timing and emotion that are omnipresent in human speech. Ultravox currently takes in audio and emits streaming text. As we evolve the model, we'll train it to be able to emit a stream of speech tokens that can then be converted directly into raw audio by an appropriate unit vocoder. Our default model is built on top of Llama 3. We also have an 8B variant

available on Hugging Face. Ultravox can be trained against any open-weight model. Demo See Ultravox in action on our demo page. You can build your own voice-to-voice agents on our Realtime platform at ultravox. Discord Join us on our Discord server here. Jobs If you're interested in working on Ultravox fulltime, we're hiring! Inference Server You can try out Ultravox using your own audio content (as a WAV file) by spinning up an Ultravox instance on our

partner, BaseTen: They offer free credits to get started. If you're interested in running Ultravox in a real-time capacity, we offer a set of managed APIs as well. You can learn more about getting access to those here. Model You can download the latest weights from the Ultravox Hugging Face page. Architecture Contributing Read on if you're interested in training your own version of Ultravox. Environment Setup (Mac) Install the basic tools: is a package manager for MacOS that

also mostly works for Linux. If you're running Debian or Ubuntu Linux, you can alternatively get by with apt. It frequently functions as our interface to all the other tools. It's recommended to use pyenv for managing environments due to the use of Poetry: >**Note**: Use of conda is NOT recommended with Poetry After creating a virtual environment, install required packages using and : If you plan to use augmentations (optional), you may also want to install system packages necessary for

augmentations. We're using Poetry to manage the Python virtual environment. Training Currently, we keep both the LLM and the audio encoder frozen and only train the adapter/projector. 4 took 2-3 hours on 8xH100 GPUs for 14K training steps. Use-Cases for Training Ultravox Why would you want to (re-) train Ultravox? You want to use a different LLM or audio encoder backbone. In this case you need to re-train the adapter. You can use , which contains our

config for our latest release, and you should be able to simply change the base LLM or encoder by specifying

Frequently asked questions

How many stars and forks are recorded?

fixie-ai/ultravox has 4,580 stars and 386 forks.

What is the repository rank?

fixie-ai/ultravox is ranked 4,678.

What language and category are recorded?

fixie-ai/ultravox has 4,580 stars, uses Python and belongs to Models.

Which repository is closest in rank?

fixie-ai/ultravox is compared with fundamentalvision/BEVFormer, ranked 4,673 with 4,627 stars.

README

A fast multimodal LLM designed for real-time voice interactions

Latest News

Key Links


About

Ultravox is a new kind of multimodal LLM that can understand text as well as human speech, without the need for a separate Audio Speech Recognition (ASR) stage. Building on research like AudioLM, SeamlessM4T, Gazelle, SpeechGPT, and others, Ultravox is able to extend any open-weight LLM with a multimodal projector that converts audio directly into the high-dimensional space used by LLM. We've trained versions on Llama 3, Mistral, and Gemma. This direct coupling allows Ultravox to respond much more quickly than systems that combine separate ASR and LLM components. In the future this will also allow Ultravox to natively understand the paralinguistic cues of timing and emotion that are omnipresent in human speech.

Ultravox currently takes in audio and emits streaming text. As we evolve the model, we'll train it to be able to emit a stream of speech tokens that can then be converted directly into raw audio by an appropriate unit vocoder.

Our default model is built on top of Llama 3.3 70B. We also have an 8B variant available on Hugging Face.

Ultravox can be trained against any open-weight model. See below for more details on training.

Demo

See Ultravox in action on our demo page. You can build your own voice-to-voice agents on our Realtime platform at ultravox.ai.

Discord

Join us on our Discord server here.

Jobs

If you're interested in working on Ultravox fulltime, we're hiring! Check out our jobs page here.

Inference Server

You can try out Ultravox using your own audio content (as a WAV file) by spinning up an Ultravox instance on our partner, BaseTen: https://www.baseten.co/library/ultravox/. They offer free credits to get started.

If you're interested in running Ultravox in a real-time capacity, we offer a set of managed APIs as well. You can learn more about getting access to those here.

Model

You can download the latest weights from the Ultravox Hugging Face page.

Architecture

Contributing

Read on if you're interested in training your own version of Ultravox.

Environment Setup (Mac)

Install the basic tools:

  • Homebrew is a package manager for MacOS that also mostly works for Linux. If you're running Debian or Ubuntu Linux, you can alternatively get by with apt.
  • Just simplifies our shell workflows. It frequently functions as our interface to all the other tools.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew update
brew install just

It's recommended to use pyenv for managing environments due to the use of Poetry:

brew install xz
brew install pyenv
pyenv init
pyenv install 3.11
pyenv global 3.11

# Optional
pyenv shell 3.11

Note: Use of conda is NOT recommended with Poetry

After creating a virtual environment, install required packages using just and poetry:

just install

If you plan to use augmentations (optional), you may also want to install system packages necessary for augmentations. You can do that with just install-augs-system. Read more about augmentations here.

We're using Poetry to manage the Python virtual environment. You can observe your environment with poetry env info.

Training

Currently, we keep both the LLM and the audio encoder frozen and only train the adapter/projector. Training Ultraox v0.4 took 2-3 hours on 8xH100 GPUs for 14K training steps.

Use-Cases for Training Ultravox

Why would you want to (re-) train Ultravox? Here are a few scenarios:

  1. You want to use a different LLM or audio encoder backbone.

    a. In this case you need to re-train the adapter. You can use example_config.yaml, which contains our config for our latest release, and you should be able to simply change the base LLM or encoder by specifying --text-model and/or --audio-model .

  2. You want to improve the knowledge of the model

    a. We suggest to either use RAG on the fly (no training needed), or fine-tune the LLM backbone instead. Fine-tuning the LLM backbone does not require re-training Ultravox (i.e., the existing adapter will work).

  3. You want to use your own audio data, for example to add support for a new language.

    a. First step, prepare your dataset: at bare minimum, the samples should have an audio and a text continuation field.

    b. Take a look at ds_tool.py and continuation.jinja as well as our variant of Common Voice that was created using ds_tool to add the continuation field.

    c. Add your dataset to the dataset mix in example_config.yaml and train.

There's no one-size fits all. If you need help you can find us on our Discord server here.

How to Train

We do most of our training on the MosaicML platform and therefore most of our tooling and docs are Mosaic-related. However, the MosaicML platform is being shut down at the end of July 2025, but we still left the configs in here for the commands. You can do the same training on your own GPU without much difficulty. Here we assume you have the environment set up (run just install). You can also take a look at setup.sh

To kick off a training run you can do:

poetry run python -m ultravox.training.train --config_path ultravox/training/configs/example_config.yaml

For DDP training make sure to add torchrun. We also recommend prefetching weights in advance:

TRAIN_ARGS="--config_path ultravox/training/configs/example_config.yaml"
poetry run python -m ultravox.training.helpers.prefetch_weights $TRAIN_ARGS
poetry run torchrun --nproc_per_node=8 -m ultravox.training.train $TRAIN_ARGS

For a debug run, you can use smaller models, datasets, or batch size. Here's a config that uses TinyLlama as the LLM backbone:

poetry run python -m ultravox.training.train --config_path ultravox/training/configs/asr_tinyllama_100s.yaml --batch_size 1 --report_logs_to tensorboard

We use SimpleParsing for configs. Configs are composable (i.e. you can specify zero or many configs) and meta_config.yaml is always used as the default. See configs_base.py to find the parameters you modify, such as the --text-model, --device, --exp-name, etc.

Multi-node training

  • For multi-node training, all you need to do is update compute.gpus line on mcli_train.yaml to get more GPUs for training
    • All factors of 8 are supported
  • For more than 4 nodes, you might need to increase val_dataset_args.max_samples

NOTE: W&B doesn't currently support multiple nodes. You'll only get info from the main node. It's possible to support it with grouped runs, so let me know if you think this is important for you.

Running evaluations

For inference or evaluations, you can use:

just eval --config_path ultravox/evaluation/configs/eval_config.yaml

where eval_config.yaml is a config file that specifies the model, datasets, and configurations to use for inference or evaluation. If your dataset is not already defined in ultravox, you need to create a config file for your dataset in ultravox/data/configs/ (with the appropriate eval_config field to specify evaluation metrics and arguments), and register it in ultravox/data/registry.py. Please refer to examples in ultravox/data/configs/.

Misc

The Justfile is a good resource for finding popular commands. Here are a few:

just update    # update dependencies
just format    # run formatting (black, isort, autoflake)
just test      # run tests
just python    # activate venv and run python
Nearby in the ranking
Similar items