p-alonso's picture
Update README.md
7a4e49f verified
---
pipeline_tag: audio-classification
library_name: omar_rq
license: cc-by-nc-sa-4.0
tags:
- audio
- music
- self-supervised-learning
- audio-representation
- music-tagging
- pitch-estimation
- chord-recognition
- beat-tracking
- segmentation
- difficulty-estimation
---
# OMAR-RQ: Open Music Audio Representation Model Trained with Multi-Feature Masked Token Prediction
**OMAR-RQ** is an open-source foundation model for music audio understanding, presented in the paper [OMAR-RQ: Open Music Audio Representation Model Trained with Multi-Feature Masked Token Prediction](https://huggingface.co/papers/2507.03482).
OMAR-RQ is trained with self-supervision via masked token classification methodologies using a large-scale dataset with over 330,000 hours of music audio. It offers powerful, multipurpose representations essential for advancing research in music information retrieval. The model achieves state-of-the-art performance among open self-supervised models across various tasks:
* **Music Tagging**
* **Pitch Estimation**
* **Chord Recognition**
* **Beat Tracking**
* **Segmentation**
* **Difficulty Estimation**
For the full training, validation, and inference code, please refer to the [official GitHub repository](https://github.com/MTG/omar-rq).
## Installation
For embedding extraction or fine-tuning:
```bash
pip install .
```
For development including pre-training your own models:
```bash
pip install -e .[train]
```
## Inference
You can load an OMAR-RQ model by specifying its Hugging Face model ID:
```python
import torch
from omar_rq import get_model
# Embedding extraction example
x = torch.randn(1, 16000 * 4).cpu() # Example: 4 seconds of mono audio at 16kHz
# Load a specific model, e.g., "mtg-upf/omar-rq-multifeature-25hz-fsq"
model_id = "mtg-upf/omar-rq-multifeature-25hz-fsq"
model = get_model(model_id=model_id, device="cpu") # Use "cuda" if a GPU is available
# Extract embeddings from layer 6
embeddings = model.extract_embeddings(x, layers=[6])
# Use the `model.eps` field to compute timestamps for the extracted embeddings
timestamps = torch.arange(embeddings.shape[2]) / model.eps
print(f"Extracted embeddings shape: {embeddings.shape}")
print(f"First 5 timestamps: {timestamps[:5]}")
```
**`get_model` reference:**
```
Returns an OMAR-RQ Module from the provided model_id or config_file.
Args:
model_id (str): Hugging Face's Model ID or local path to the model
config_file (Path): Path to the model config of a trained model.
device (str): Device to use for the model. Defaults to "cpu".
quantization_targets (bool): If True, it will create the quantization
targets for SSL pre-training of the model. Defaults to False.
Output:
module: The model from the provided config file.
Module usage:
Args:
audio (torch.Tensor): 2D mono audio tensor (B, T'). Where B is
the batch size and T' is the number of samples.
layers (set): Set of layer indices to extract embeddings from.
By default, it extracts embeddings from the last layer (logits).
Output:
torch.Tensor: Extracted embeddings. The output tensor has shape
(L, B, T, C,) where L = len(layers), B is the batch size, T is
the number of output timestamps, and C = embedding dimension.
```
**`extract_embeddings` reference:**
```
Extract embeddings from an input audio batch.
Args:
audio (torch.Tensor): 2D mono audio tensor (B, T'). Where B is
the batch size and T' is the number of samples.
layers (set): Set of layer indices to extract embeddings from.
By default, it extracts embeddings from the last layer (logits).
Output:
torch.Tensor: Extracted embeddings. The output tensor has shape
(L, B, T, C,) where L = len(layers), B is the batch size, T is
the number of output timestamps, and C = embedding dimension.
```
## Available Models
OMAR-RQ models are offered in different configurations, each with its own strengths and weaknesses. Models based on mel spectrogram (**base** and **multicodebook**) tend to perform better on semantic tasks such as auto-tagging, structure recognition, and difficulty estimation. On the other hand, **multifeature-25hz-fsq** offers the best performance in tonal and temporal tasks such as pitch and chord estimation, and beat tracking.
| Model | Input | Rate | Tagging | Difficulty | Pitch | Chord | Beat | Structure | Hugging Face Model ID |
|:--------------------------|:-------|:-------|:--------|:-----------|:---------|:---------|:--------|:----------|:------------------------------------------------------------|
| | | Hz | _mAP_ | _MSE_ | _acc._ | _acc._ | _F1_ | _acc._ | |
| **base** | mel | 15.63 | .482 | **1.65** | .892 | .657 | .783 | **.647** | [`mtg-upf/omar-rq-base`](https://huggingface.co/mtg-upf/omar-rq-base) |
| **multicodebook** | mel | 15.63 | **.488**| 1.66 | .897 | .675 | .775 | .639 | [`mtg-upf/omar-rq-multicodebook`](https://huggingface.co/mtg-upf/omar-rq-multicodebook) |
| **multifeature** | audio | 18.75 | .467 | 1.76 | .938 | .734 | .833 | .623 | [`mtg-upf/omar-rq-multifeature`](https://huggingface.co/mtg-upf/omar-rq-multifeature) |
| **multifeature-25hz** | audio | 25 | .463 | 1.79 | .932 | .728 | .848 | .628 | [`mtg-upf/omar-rq-multifeature-25hz`](https://huggingface.co/mtg-upf/omar-rq-multifeature-25hz) |
| **multifeature-25hz-fsq** | audio | 25 | .463 | 1.71 | **.940** | **.749** | **.855**| .628 | [`mtg-upf/omar-rq-multifeature-25hz-fsq`](https://huggingface.co/mtg-upf/omar-rq-multifeature-25hz-fsq) |
## Licensing Information
The code in the [GitHub repository](https://github.com/MTG/omar-rq) is available under the [AGPL-3.0 license](https://www.gnu.org/licenses/agpl-3.0.en.html). The model weights are available under the [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) license for non-commercial applications.
## Citation
If you find this work useful, please cite the paper:
```bibtex
@article {alonso2025omarrq,
title={OMAR-RQ: Open Music Audio Representation Model Trained with Multi-Feature Masked Token Prediction},
author={Alonso-Jim\'enez, Pablo and Ramoneda, Pedro and Araz, R. Oguz and Poltronieri, Andrea and Bogdanov, Dmitry},
journal={arXiv preprint arXiv:2507.03482},
year={2025}
}
```