|
---
|
|
language:
|
|
- ar
|
|
- de
|
|
- en
|
|
- es
|
|
- fr
|
|
- hi
|
|
- it
|
|
- ja
|
|
- nl
|
|
- pt
|
|
- ru
|
|
- sv
|
|
- tr
|
|
- uk
|
|
- zh
|
|
license: mit
|
|
library_name: transformers
|
|
datasets:
|
|
- fixie-ai/librispeech_asr
|
|
- fixie-ai/common_voice_17_0
|
|
- fixie-ai/peoples_speech
|
|
- fixie-ai/gigaspeech
|
|
- fixie-ai/multilingual_librispeech
|
|
- fixie-ai/wenetspeech
|
|
- fixie-ai/covost2
|
|
metrics:
|
|
- bleu
|
|
---
|
|
|
|
# Model Card for Ultravox
|
|
|
|
Ultravox is a multimodal Speech LLM built around a pretrained [Llama3.1-8B-Instruct](https://huggingface.co/meta-llama/Meta-Llama-3.1-8B) and [whisper-large-v3-turbo](https://huggingface.co/openai/whisper-large-v3-turbo) backbone.
|
|
|
|
See https://ultravox.ai for the GitHub repo and more information.
|
|
|
|
|
|
## Model Details
|
|
|
|
### Model Description
|
|
|
|
Ultravox is a multimodal model that can consume both speech and text as input (e.g., a text system prompt and voice user message).
|
|
The input to the model is given as a text prompt with a special `<|audio|>` pseudo-token, and the model processor will replace this magic token with embeddings derived from the input audio.
|
|
Using the merged embeddings as input, the model will then generate output text as usual.
|
|
|
|
In a future revision of Ultravox, we plan to expand the token vocabulary to support generation of semantic and acoustic audio tokens, which can then be fed to a vocoder to produce voice output.
|
|
No preference tuning has been applied to this revision of the model.
|
|
|
|
- **Developed by:** Fixie.ai
|
|
- **License:** MIT
|
|
|
|
### Model Sources
|
|
|
|
- **Repository:** https://ultravox.ai
|
|
- **Demo:** See repo
|
|
|
|
## Usage
|
|
|
|
Think of the model as an LLM that can also hear and understand speech. As such, it can be used as a voice agent, and also to do speech-to-speech translation, analysis of spoken audio, etc.
|
|
|
|
To use the model, try the following:
|
|
```python
|
|
# pip install transformers peft librosa
|
|
|
|
import transformers
|
|
import numpy as np
|
|
import librosa
|
|
|
|
pipe = transformers.pipeline(model='fixie-ai/ultravox-v0_4_1-llama-3_1-8b', trust_remote_code=True)
|
|
|
|
path = "<path-to-input-audio>" # TODO: pass the audio here
|
|
audio, sr = librosa.load(path, sr=16000)
|
|
|
|
|
|
turns = [
|
|
{
|
|
"role": "system",
|
|
"content": "You are a friendly and helpful character. You love to answer questions for people."
|
|
},
|
|
]
|
|
pipe({'audio': audio, 'turns': turns, 'sampling_rate': sr}, max_new_tokens=30)
|
|
```
|
|
|
|
|
|
## Training Details
|
|
|
|
The model uses a pre-trained [Llama3.1-8B-Instruct](https://huggingface.co/meta-llama/Meta-Llama-3.1-8B) backbone as well as the encoder part of [whisper-large-v3-turbo](https://huggingface.co/openai/whisper-large-v3-turbo).
|
|
|
|
Only the multi-modal adapter is trained, while Whisper encoder and Llama are kept frozen.
|
|
|
|
We use a knowledge-distillation loss where Ultravox is trying to match the logits of the text-based Llama backbone.
|
|
|
|
### Training Data
|
|
|
|
The training dataset is a mix of ASR datasets, extended with continuations generated by Llama 3.1 8B, and speech translation datasets, which yield a modest improvement in translation evaluations.
|
|
|
|
### Training Procedure
|
|
|
|
Supervised speech instruction finetuning via knowledge-distillation. For more info, see [training code in Ultravox repo](https://github.com/fixie-ai/ultravox/blob/main/ultravox/training/train.py).
|
|
|
|
|
|
#### Training Hyperparameters
|
|
|
|
- **Training regime:** BF16 mixed precision training
|
|
- **Hardward used:** 8x H100 GPUs
|
|
|
|
#### Speeds, Sizes, Times
|
|
|
|
The current version of Ultravox, when invoked with audio content, has a time-to-first-token (TTFT) of approximately 150ms, and a tokens-per-second rate of ~50-100 when using an A100-40GB GPU, all using a Llama 3.1 8B backbone.
|
|
|
|
Check out the audio tab on [TheFastest.ai](https://thefastest.ai/?m=audio) for daily benchmarks and a comparison with other existing models.
|
|
|
|
## Evaluation
|
|
|
|
| | Ultravox 0.4 8B | **Ultravox 0.4.1 8B** |
|
|
| --- | ---: | ---: |
|
|
| **en_ar** | 11.17 | 12.28 |
|
|
| **en_de** | 25.47 | 27.13 |
|
|
| **es_en** | 37.11 | 39.16 |
|
|
| **ru_en** | 38.96 | 39.65 |
|
|
| **en_ca** | 27.46 | 29.94 |
|
|
| **zh_en** | 10.08 | 14.55 |
|
|
|