Saltar al contenido
ModelPublicadoExterno
Browse files

Salmonn Sqa Planb v3

LoRA/Q-Former weights that turn the SQA-finetuned SALMONN-7B from a lenient noise specialist into a calibrated, multi-dimensional speech-quality rater.

TipoOtherVersiónV3 stage1 checkpoint bestCcalidad

Fuente del modelo

Tipo
Other
Tamaño del archivo
115 MB
Versión
V3 stage1 checkpoint best
Actualizado
19 oct 2026
Fuente
Hugging Face

Descripción de la fuente

SALMONN-SQA — a calibrated, multi-dimensional speech-quality rater

LoRA/Q-Former weights that turn the SQA-finetuned SALMONN-7B from a lenient noise specialist into a calibrated, multi-dimensional speech-quality rater.

Given a 16 kHz speech recording it emits per-dimension 1–5 scores, a short grounded description of what is wrong, and an overall MOS:

noise:2 reverberation:1 bandwidth:4 clipping:5 discontinuity:5 loudness:5.
The recording suffers from heavy reverberation and persistent background noise, and the
limited frequency range gives the voice a somewhat boxed-in, muffled character.
Overall MOS: 1.87

Every input used to train this model is public, so the whole pipeline is reproducible end to end: LibriTTS-R (CC BY 4.0) + MUSAN (CC BY 4.0) + OpenSLR SLR28 RIRs (Apache-2.0).

Code, corpus and the full experiment log: https://github.com/LarocheC/llm-sqa

What problem this fixes

The released SQA checkpoint described additive noise well, but as a quality meter it was weak: a coarse 5-value MOS floored at 2.5, effectively blind to reverberation (ρ(MOS,severity) = −0.11), and its MOS did not move when a denoiser improved the audio (+0.03).

A Stage-0 linear probe showed the degradation information was present in the frozen encoders (R2 0.82–0.95 at every tap, including the Q-Former output that reaches the LLM). The blindness lived in the LLM's learned read-out — trained only on noise — not in the architecture. So the fix was data + targets, with the encoders left frozen.

Results (held-out)

#Original SQAthis model
1MOS↔SNR ρ 0.37ρ 0.46; names noise 98% at low SNR
2Calibration vs PESQ/NISQA/DNSMOS ρ 0.40–0.49; 5 distinct MOS valuesρ 0.65–0.71; 63 distinct values (1.90–4.89)
3reverb −0.27, bandwidth −0.37, clipping −0.48reverb −0.80, bandwidth −0.88, clipping −0.81, noise −0.93
4Enhancement: MOS +0.03, ρ(gain,PESQ) ≈ 0MOS gain +1.05 (91% of files), ρ +0.32
5Degenerate/made-up JSON under OOD input0/108 degenerate

Reverberation on real measured rooms (held-out RWCP / Aachen AIR / REVERB RIRs, PESQ as an independent reference): ρ(MOS, PESQ) +0.83 (the older legacy/v3 model scores +0.79).

Files

filesizewhat
stage2_checkpoint_best.pth121 MBthe model you want — scores + description + MOS
stage1_checkpoint_best.pth121 MBintermediate calibration-only checkpoint (Stage 2 initialized from it)
legacy/v3_*.pth121 MB ea.an earlier variant trained on a non-public RIR set — see the trade-off below

Each contains only the 30.2 M trained parameters — Q-Former (22.8 M), speech→LLaMA projection (3.1 M), Vicuna LoRA r=8/α=28 (4.2 M), and layer norms. No Vicuna/Whisper/BEATs base weights; you supply those separately (scripts/setup_salmonn.sh in the repo).

Usage

git clone https://github.com/LarocheC/llm-sqa && cd llm-sqa
uv sync --extra experiments
bash scripts/setup_salmonn.sh                       # SALMONN code + Whisper/Vicuna/BEATs
uv run python scripts/fetch_checkpoints.py          # pulls this repo
uv run python -m experiments.planb.eval_compare --n-clips 6

How it was trained

Two-stage LoRA-SFT on a 4,000-clip corpus built from LibriTTS-R train-clean-100, degraded on the fly with known parameters so the targets are exact rather than teacher-labelled.

  • Degradations — reverb (SLR28 simulated RIRs + our synthetic exp-decay), noise (real MUSAN + synthetic white/pink/brown), codec (Opus/MP3), band-limiting, clipping, packet loss, loudness. A blind-spot-weighted sampler gives each clip 0–3 axes; ~46% of clips carry ≥2 simultaneously.
  • Targets — per-dimension 1–5 scores derived from the applied parameter (a "severity map"); overall MOS = 0.55·min + 0.45·mean of those scores, blended 70/30 with a fused PESQ+NISQA+DNSMOS metric MOS; descriptions LLM-paraphrased and programmatically grounding-verified (must name every degraded axis, and no clean one).
  • Stage 1 (calibration, 2 epochs) — target is the score block only, so the read-out locks onto the calibrated numbers with no description tokens competing for the gradient.
  • Stage 2 (reasoning, 4 epochs) — target is scores + description + MOS, initialized from Stage 1.

Trainable: Q-Former + projection + LoRA. Frozen: Whisper, BEATs, Vicuna base.

Reverberation severity is scored from the worse of the RT60 band and the DRR (direct-to- reverberant ratio) band. DRR matters as much as RT60: on a RIR set with varying mic distance it predicts perceived degradation far better (ρ(PESQ,DRR) = +0.67 vs ρ(PESQ,RT60) = −0.27) — a long-RT60 room still sounds fairly dry when the mic is close. RT60 and DRR are measured from each impulse response (Schroeder integration), so the pipeline works with any RIR corpus.

Limitations — read before using

  • The per-dimension structured scores are the most reliable signal. Prefer them over the MOS.

  • The MOS is calibrated against objective metrics (PESQ/NISQA/DNSMOS), not human listener MOS. It is not a substitute for a subjective listening test.

  • Reverberation depends on which reverb you test. Scored against PESQ (an independent reference):

    reverb typelegacy/v3this model
    synthetic exp-decay (fixed artificial direct path)+0.61+0.39
    SLR28 simulated RIRs (image-method) — this model trained on these+0.33+0.63
    real measured RIRs (RWCP / AIR / REVERB), held out from both+0.79+0.83

    On genuinely measured rooms the two are close, with this model modestly ahead. The large gap is on the simulated RIRs it trained on, so that figure reflects in-distribution advantage rather than generalization. If your audio is dominated by synthetic reverb, evaluate legacy/v3 too.

  • v3 is also slightly better calibrated on VoiceBank-DEMAND (ρ 0.69–0.75 vs 0.65–0.71) and uses a finer MOS scale (81 vs 63 distinct values). It is not reproducible from public data.

  • English, 16 kHz, single-speaker speech. Not validated on music, multi-speaker, or other languages.

License & attribution

Apache-2.0 for these weights. They are a derivative of SALMONN (Apache-2.0) and are used with Vicuna-7B-v1.5 / Whisper-large-v2 / BEATs, each under its own license — you must obtain those base models separately and comply with their terms (notably Meta's LLaMA license via Vicuna).

Fuentes

1 fuente
Hugging FacePrincipalVersión 86e6283e3a458285cb47410b535f7064e139327a
huggingface.co/claroche1/salmonn-sqa-planb-v3/tree/86e6283e3a458285cb47410b535f7064e139327a

Verificado 19 oct

Download files

Artefactos del modelo

4 artefactos

legacy/v3_stage1_checkpoint_best.pth

pth · 115 MB · SHA-256 8b175e9513e4…7b7c · Hugging Face

Download file

legacy/v3_stage2_checkpoint_best.pth

pth · 115 MB · SHA-256 991fe20b2425…f7fd · Hugging Face

Download file

stage1_checkpoint_best.pth

pth · 115 MB · SHA-256 e46c3b6f53e8…a836 · Hugging Face

Download file

stage2_checkpoint_best.pth

pth · 115 MB · SHA-256 34d53c483673…3090 · Hugging Face

Download file

Extractos de fuentes

2 extractos

--- license: apache-2.0 language: - en tags: - speech-quality-assessment - audio-llm - salmonn - mos - lora pipeline_tag: audio-text-to-text --- # SALMONN-SQA — a calibrated, multi-dimensional speech-quality rater LoRA/Q-Former weights that turn the SQA-finetuned [SALMONN-7B](https://github.com/bytedance/SALMONN) from a **lenient noise specialist** into a **calibrated, multi-dimensional** speech-quality rater. Given a 16 kHz speech recording it emits per-dimension 1–5 scores, a short grounded description of what is wrong, and an overall MOS: ``` noise:2 reverberation:1 bandwidth:4 clipping:5 discontinuity:5 loudness:5. The recording suffers from heavy reverberation and persistent background noise, and the limited frequency range gives the voice a somewhat boxed-in, muffled character. Overall MOS: 1.87 ``` **Every input used to train this model is public**, so the whole pipeline is reproducible end to end: LibriTTS-R (CC BY 4.0) + MUSAN (CC BY 4.0) + OpenSLR SLR28 RIRs (Apache-2.0). Code, corpus and the full experiment log: **https://github.com/LarocheC/llm-sqa** ## What problem this fixes The released SQA checkpoint described additive **noise** well, but as a quality *meter* it was weak: a coarse 5-value MOS floored at 2.5, effectively **blind to reverberation** (ρ(MOS,severity) = −0.11), and its MOS did not move when a denoiser improved the audio (+0.03). A Stage-0 linear probe showed the degradation information *was* present in the frozen encoders (R² 0.82–0.95 at every tap, including the Q-Former output that reaches the LLM). The blindness lived in the LLM's learned **read-out** — trained only on noise — not in the architecture. So the fix was **data + targets**, with the encoders left frozen. ## Results (held-out) | # | Original SQA | **this model** | |---|---|---| | 1 | MOS↔SNR ρ 0.37 | **ρ 0.46**; names noise 98% at low SNR | | 2 | Calibration vs PESQ/NISQA/DNSMOS ρ 0.40–0.49; **5 distinct MOS values** | **ρ 0.65–0.71**; **63 distinct values** (1.90–4.89) | | 3 | reverb −0.27, bandwidth −0.37, clipping −0.48 | reverb −0.80, **bandwidth −0.88**, clipping −0.81, noise −0.93 | | 4 | Enhancement: MOS **+0.03**, ρ(gain,PESQ) ≈ 0 | MOS gain **+1.05** (91% of files), ρ **+0.32** | | 5 | Degenerate/made-up JSON under OOD input | **0/108 degenerate** | **Reverberation on real measured rooms** (held-out RWCP / Aachen AIR / REVERB RIRs, PESQ...

Source context: 0 downloads · 1 likes · Pipeline audio-text-to-text · Repo claroche1/salmonn-sqa-planb-v3