CoolFace
Modelpublic

lab260/ProxyMos

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes7downloads
Model Card

ProxyMOS

ProxyMOS is a lightweight Mean Opinion Score (MOS) prediction model built on top of the OmniASR W2V 300M encoder (Wav2Vec2 architecture via fairseq2).

Given any audio file, the model returns a single scalar speech quality score on the MOS scale. It is the distilled model from the paper "ProxyMOS: Training Speech Quality Models via Ensemble-Derived MOS Targets" (Borodin & Trokunov, MTUCI, 2026).


Architecture

OmniASR-W2V-300M (encoder, fine-tuned with reduced lr)
        ↓
AttentiveStatsPooling  ->  [mean || std]  (dim: 2 x 1024 = 2048)
        ↓
Linear(2048 -> 1024) -> GELU -> Linear(1024 -> 1)
        ↓
     MOS score (scalar)
  • Encoder: omniASR_W2V_300M — a 300M-parameter Wav2Vec2-style encoder instantiated via fairseq2.
  • Weights: best_model_full.pt contains the trained ProxyMOS state dict, including the encoder and MOS head weights. No separate omniASR-W2V-300M.pt checkpoint is required.
  • Pooling: Attentive Statistics Pooling — computes attention-weighted mean and standard deviation over the time dimension.
  • Head: Two-layer MLP with GELU activation and a scalar output.

Repository files

FileDescription
config.jsonModel metadata used by Hugging Face Hub tooling
best_model_full.ptTrained ProxyMOS state dict, including encoder and MOS head weights (~1.28 GB)
inference_model.pyModel architecture + inference script
Note: inference uses fairseq2 to instantiate the omniASR_W2V_300M architecture, then loads all trained weights from best_model_full.pt. You do not need a separate omniASR-W2V-300M.pt file.

Quick start

1. Clone the repository

bash
git lfs install
git clone https://huggingface.co/lab260/ProxyMos
cd ProxyMos

2. Install dependencies

Requires Python 3.10+.

bash
pip install torch torchaudio
pip install fairseq2
pip install accelerate scipy scikit-learn tqdm
GPU: if CUDA is available, the model will use it automatically.

3. Run inference

bash
python inference_model.py /path/to/your/audio.wav

Example:

bash
python inference_model.py /home/ae_samples_ae_finetuned_vocoder_segment_28.wav

Output:

MOS: 3.8721

Python API

python
import torch
from inference_model import load_model, predict_mos

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = load_model("best_model_full.pt", device)

score = predict_mos(model, "/path/to/audio.wav", device)
print(f"MOS: {score:.4f}")

Batch processing

python
from pathlib import Path

audio_dir = Path("/path/to/audio_folder")

for wav_file in sorted(audio_dir.glob("*.wav")):
    score = predict_mos(model, str(wav_file), device)
    print(f"{wav_file.name}: {score:.4f}")

Model Performance

URGENT Dataset

ModelPearsonSpearmanKendallRMSEMAE
Proxymos0.8020.7990.6170.4740.370
Proxymosonnx0.7790.7780.5910.5020.393
Proxymosonnx160.7790.7780.5910.5020.393
Whisqa0.7800.7730.5880.5020.397
Distillmos0.7590.7480.5680.5250.411
UTMOS0.7210.7480.5600.5650.450
XLS0.7430.7450.5610.5420.426
MosNet0.2790.1100.0730.9080.702
HuBERT-0.005-0.002-0.0011.0730.855
NISQA0.028-0.027-0.0211.0550.863
Dnsmos-0.010-0.041-0.0281.0750.876

MOS260 Dataset

ModelPearsonSpearmanKendallRMSEMAE
Proxymosonnx0.7000.6470.4810.8830.687
Proxymosonnx160.7000.6470.4810.8830.687
Proxymos0.6910.6360.4740.8970.692
Distillmos0.6700.6130.4560.9270.712
UTMOS0.6220.5550.4030.9910.781
XLS0.5830.4730.3371.0410.834
Whisqa0.5760.4660.3321.0500.841
NISQA0.2610.2260.1581.3861.105
Dnsmos0.0750.0560.0391.5511.254
HuBERT-0.003-0.009-0.0061.6141.294
MosNet-0.210-0.209-0.1461.7731.384

Requirements

PackageVersion
Python≥ 3.10
PyTorch≥ 2.0
torchaudiocompatible with torch
fairseq2≥ 0.3
accelerate≥ 0.20
scipy≥ 1.10
scikit-learn≥ 1.2

Technical details

  • Audio is automatically resampled to 16,000 Hz.
  • Stereo input is averaged to mono before processing.
  • Input is normalized to shape [B, T] internally.
  • Inference runs correctly on CPU when no GPU is available.

Results

BenchmarkSpearman ρPearson rRMSE
URGENT0.8020.8060.471
mos260 (Russian TTS)0.6470.7000.883

ProxyMOS outperforms all individual teacher models (WhiSQA, DistillMOS, UTMOS, XLS-R) on both benchmarks.


Citation

bibtex
@article{borodin2026proxymos,
  title     = {ProxyMOS: Training Speech Quality Models via Ensemble-Derived MOS Targets},
  author    = {Borodin, Kirill and Trokunov, Maksim},
  year      = {2026},
  institution = {MTUCI, Moscow}
}

License

Please refer to the fairseq2 and omnilingual-asr repositories for encoder licensing terms.

Contact

  • Email: kborodin.research@gmail.com
  • Telegram: @korallll_ai