File size: 2,410 Bytes
e9d6389
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f939a65
 
 
 
 
e9d6389
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
---
license: apache-2.0
language:
  - en
  - zh
library_name: transformers
base_model: Qwen/Qwen2.5-Omni-7B
tags:
  - audio
  - audio-language-model
  - instruction-following
  - rubric-based-evaluation
  - judge-model
pipeline_tag: audio-text-to-text
---

# AnyAudio-Judge-7B

`AnyAudio-Judge-7B` is a **dynamic rubric-based audio judge** built on top of [Qwen2.5-Omni-7B](https://huggingface.co/Qwen/Qwen2.5-Omni-7B). It predicts, for each yes/no rubric item describing one verifiable aspect of an audio caption, whether the audio satisfies that aspect — together with a short evidence string.

This is the smaller variant of the AnyAudio-Judge family. The larger `AnyAudio-Judge-30B` (initialized from Qwen3-Omni-30B-A3B-Captioner) is the variant reported in the paper. The 7B model is trained on the same SFT corpus and is intended for users who need a more efficient evaluator.

> Companion benchmark: [`cucl2/AnyAudio-Judge-Bench`](https://huggingface.co/datasets/cucl2/AnyAudio-Judge-Bench)
> Companion corpus: [`cucl2/AnyAudio-Judge-Corpus`](https://huggingface.co/datasets/cucl2/AnyAudio-Judge-Corpus)
> Companion 30B model: [`cucl2/AnyAudio-Judge-30B`](https://huggingface.co/cucl2/AnyAudio-Judge-30B)

## Training

- **Base**: Qwen2.5-Omni-7B
- **Corpus**: 105K (audio, instruction, rubric, CoT) tuples (see `cucl2/AnyAudio-Judge-Corpus`)
- **Stage**: full-parameter SFT for 1 epoch
  - 16 × H20 96GB
  - per-device batch size 4, grad accumulation 1
  - learning rate 1e-5

## Usage

```python
from anyaudio_judge import AnyAudioJudge, decompose_instruction

caption = "A gentle, delicate female voice, with soft and smooth pitch, calm and restrained throughout."
rubric  = decompose_instruction(caption)  # external LLM call

judge = AnyAudioJudge.from_pretrained("cucl2/AnyAudio-Judge-7B")
result = judge.judge("./demo.wav", rubric)
print("alignment_score:", result.score)
for item in result.items:
    print(item.question, "->", item.answer)
```

(See the [GitHub repo](https://github.com/) for the full pipeline including external rubric decomposition.)

## License

Apache-2.0, inheriting the license of the base Qwen2.5-Omni-7B model.

## Citation

```bibtex
@misc{anyaudiojudge2026,
  title  = {AnyAudio-Judge: A Dynamic Rubric-Based Benchmark and Evaluator for Audio Instruction Following},
  author = {Anonymous Authors},
  year   = {2026},
  note   = {Preprint, under submission}
}
```