Kim, Saito, Chi, Angelopoulos, Watanabe, Mitsufuji, Chiang, Donahue et al. (Sony AI / CMU / Georgia Tech / LMArena), 2025

Music Arena: Live Evaluation
for Text-to-Music

Stop paying thousands of dollars for one-off listening studies. Let everyday users blind-battle two music generators on prompts they actually care about — and turn those clicks into a Bradley-Terry leaderboard plus a renewable stream of human preference data.

Prerequisites: Probability basics + the idea of "a model outputs audio"
10
Chapters
6
Simulations

Chapter 0: The Problem

You built a text-to-music model. It takes a sentence — "dreamy lo-fi beat with rain in the background" — and produces 30 seconds of audio. You want to claim it's better than last year's model. How do you prove that?

You can't just compute a number. Music is a human endeavor. Whether a clip is "good" depends on whether a person likes it — which mixes objective fidelity (no clicks, no warble) with deeply subjective taste (is this groove fire or is it cheesy?). There is no ground-truth waveform to compare against, the way image models can compare to a real photo.

The core question: Music quality is defined by human preference, but soliciting human preference is expensive, inconsistent, and unrealistic. How do we get a cheap, standardized, renewable stream of human preferences for text-to-music systems — and turn it into a trustworthy ranking?

Why the existing options all fail

The field had three tools before Music Arena, and each breaks in a specific way:

ApproachHow it worksWhy it fails
Automatic metrics (Fréchet Audio Distance, CLAP score)A formula compares generated audio to a reference distributionCorrelates imperfectly with what humans actually prefer — and can't capture creativity or taste
Crowdsourced listening study (MTurk MOS)Pay annotators to rate clips 1–5Costs hundreds to thousands of dollars per study; not renewable — the numbers freeze the moment you stop paying
Ad hoc in-house studyEach paper runs its own listening testProtocols differ — different interfaces, different models compared, different annotators — so win rates from two papers are not comparable

Read that table as three separate wounds: metrics are cheap but wrong, crowdsourced studies are right but expensive and frozen, and ad hoc studies are incomparable across labs. Nobody had a method that was simultaneously human-grounded, cheap, comparable, and renewable.

The deeper issue: incentives are misaligned

Why is human preference data so expensive? Because in a paid study, the annotator's only reason to be there is the money. They have no stake in the music. They'll rush, satisfice, and leave the moment the task ends. You're buying attention you don't really have.

Now flip it. Imagine someone who genuinely wants to make music from a prompt. They'd happily generate, listen carefully, and tell you which result they like — for free — because they're getting something they want (a track) in return. The preference is a byproduct of a self-motivated activity. That's the loophole the whole paper exploits.

Why can't we just rank text-to-music models with an automatic metric like Fréchet Audio Distance?

Chapter 1: The Key Insight

The fix borrows a recipe that already worked for chatbots (Chatbot Arena), text-to-speech, image generation, and code assistants. The paper calls it live evaluation, and it has one defining move:

The insight — align incentives. Give everyday users free access to generative AI systems in exchange for their preferences. The user submits their own prompt, gets two anonymized outputs, picks the one they like, and walks away with the track. Their click is a vote. Millions of self-motivated clicks become a free, realistic, renewable preference dataset.

The structure is always the same three steps:

1. Submit
User types a prompt of their own choosing — not a researcher's contrived test sentence.
2. Battle (blind)
Two anonymous models generate. The user listens and votes: A better, B better, tie, or both bad.
3. Aggregate
Pairwise votes across all users are distilled into one global leaderboard via the Bradley-Terry model.

Because every model is scored under the same protocol and the same annotator population, the scores are finally comparable across systems. Because the data flows from genuine usage, it's realistic. Because users keep coming, it's renewable. That single design hits all four wounds from Chapter 0 at once.

But music is not a chatbot

Music Arena's real contribution is recognizing that you can't just copy Chatbot Arena. Music has three properties that text doesn't, and each forces a music-specific design choice. We'll build all three in this lesson:

Music is special because……so Music Arena addsChapter
Models have wildly different I/O — some want lyrics, some want a duration, some are instrumental-onlyAn LLM routing system on a single text box5
Music is consumed in real time — you can't glance at it like an imageListening data: timestamps + a minimum-listen gate before voting6
Models trade quality for latency (creative tools want speed)RTF (real-time factor) reported alongside the score8
What is the single "loophole" that makes live evaluation cheap and renewable?

Chapter 2: The Battle Loop — Anatomy of One Vote

Before any math, let's trace exactly what happens, end to end, when one user runs one battle. This is the data lifecycle of Figure 1 in the paper. The platform has three modular pieces that talk over plain HTTP: a Frontend (the web UI), a Backend (the orchestrator), and a set of Model Endpoints (the TTM systems, each in its own Docker container).

The Music Arena Data Lifecycle — click each stage
Click a stage above to see what data flows through it.

Each box is a stage in one battle. Click to inspect the data flowing through it — the prompt text, the structured route, the two audio blobs, and the final vote record.

Walking the flow with real tensor-level data

Let's trace the actual battle from the paper's appendix — prompt "Celtic punk song with prominent vocals and lyrics about an evaluation platform called Music Arena":

  1. Prompt in. A single string: prompt = "Celtic punk song…". One text box. The user does not specify lyrics, duration, or whether it's instrumental.
  2. Route. The backend calls an LLM (GPT-4o) which returns structured fields: {instrumental: false, lyrics: null, duration: null}. "Vocals" is implied by "song with prominent vocals," so only vocal-capable models are eligible.
  3. Generate in parallel. Two eligible models are picked uniformly at random — here riffusion-fuzz-1-0 and acestep. The backend dispatches both at the same time, and crucially waits for both before showing anything.
  4. Deliver simultaneously. The two audio blobs come back with metadata: A is 44.1 kHz, 2-channel, 192.5 s; B is 48 kHz, 2-channel, 30.0 s. The UI hides both the durations and the model names.
  5. Listen + vote. The user plays A and B (timestamps logged), then votes preference: "A" with free-text feedback. Only now are the model identities and generation speeds revealed.
  6. Store. The full record — salted user ID, prompt, both audios, listening timestamps, vote, feedback — is written to the database, ready for the leaderboard and the monthly data release.
Two anti-bias design choices hide in step 3–4. (1) The backend waits for the slower model so a fast model can't "win" just by appearing first. (2) Durations are concealed so a user can't infer "the longer one is probably the fancy commercial model." Both protect the blindness of the comparison.
Why does the backend wait for BOTH models to finish before delivering any audio?

Chapter 3: Bradley-Terry — From Clicks to a Number

We have a pile of pairwise votes: "A beat B," "C beat A," "B beat C"… How do we turn that into a single score per model that we can rank? We need a model of how a "win" is generated. The 1952 Bradley-Terry model is that model, and it's beautifully simple.

Manufacturing the need

Naive idea: just use raw win rate. Model A won 70% of its battles → score 0.70. Why is that broken? Because it ignores who you played. Beating a strong model 60% of the time is far more impressive than beating a weak model 60% of the time. Win rate has no notion of opponent strength. We need a score where each model has a hidden "strength," and the probability of winning depends on the difference in strengths.

Bradley-Terry in one sentence: give each model i a real-valued strength βi, and say the probability that model i beats model j is the logistic function of their strength gap.
P(i beats j) = σ(βi − βj) = 1 / (1 + e−(βi − βj))

Every symbol, with a plain analogy:

A worked numerical example

Suppose βA = 1.0 and βB = 0.0. Then the gap is 1.0, and:

P(A beats B) = 1 / (1 + e−1.0) = 1 / (1 + 0.368) = 0.731

So a model one strength-unit above another should win ~73% of head-to-head battles. Now invert it: if we observe A winning 73% of the time, the maximum-likelihood strength gap is ln(0.731/0.269) = ln(2.72) = 1.0. That inversion — going from observed win rates back to strengths — is exactly what fitting Bradley-Terry does. We choose the β values that make the observed battles most probable.

This is just logistic regression. Each battle is one training row: features are a one-hot "+1 for the winner's slot, −1 for the loser's slot," the label is "1 (left won)." Fit the logistic regression with no intercept; the learned coefficients are the strengths β. That's why Music Arena (following Chatbot Arena) can fit a leaderboard in milliseconds.

From strength to "Arena Score"

The raw β are tiny numbers around 0. To make them readable (and to match chess intuition), they're rescaled into an Arena Score on an Elo-like scale, anchored around ~1000–1200:

ArenaScorei = 1000 + 400 / ln(10) · βi

The factor 400/ln(10) ≈ 173.7 is the classic Elo convention: a 400-point gap means the stronger model wins ~10× as often (a 90.9% win probability). In the paper's first leaderboard, riffusion-fuzz-1-1 scored 1250.8 on instrumental music while sao-small scored 782.4 — a 468-point gap, i.e. the top model wins the head-to-head the overwhelming majority of the time.

# Fit Bradley-Terry as logistic regression (the Chatbot/Music Arena recipe) import numpy as np from sklearn.linear_model import LogisticRegression # battles: each row is (winner_idx, loser_idx) among N models def fit_bradley_terry(battles, N, scale=173.7, base=1000): X = np.zeros((len(battles), N)) y = np.ones(len(battles)) for r, (w, l) in enumerate(battles): X[r, w] = +1 # winner's column X[r, l] = -1 # loser's column lr = LogisticRegression(fit_intercept=False, C=1e6) lr.fit(X, y) # coefficients ARE the strengths beta beta = lr.coef_[0] beta -= beta.mean() # strengths are relative; center them return base + scale * beta # -> Arena Scores
Why does Bradley-Terry rank models better than raw win rate?

Chapter 4: The Leaderboard Simulator — Watch Scores Converge

This is the heart of the whole platform, made interactive. Below are five fictional TTM models with hidden true strengths (which you set with the sliders). Press Run battles to draw random pairs, simulate votes using Bradley-Terry, and fit the Arena Score live. Watch the estimated scores climb toward the truth — and watch the 95% confidence intervals (the thin error bars) shrink as votes pile up.

What you're really seeing: every "vote" is one logistic coin flip whose bias is set by the true strength gap. With few votes, the fitted scores are noisy and the bars are wide — you literally cannot tell two close models apart. As N grows, the law of large numbers tightens the estimate. This is exactly why the paper needed 1,051 votes before publishing a leaderboard, and why low-vote models still have huge CIs.
Bradley-Terry Leaderboard — True Strengths → Battles → Fitted Arena Scores
0 votes

The ghost outline on each bar is the true Arena Score implied by the slider. The filled bar is the score fitted from your simulated votes; the whisker is its 95% confidence interval. Drag two sliders close together, then run only 50 battles — see how the CIs overlap so you can't rank them. Run 1000 and they separate.

Try to break it

In the simulator, what happens to the confidence intervals as you run more battles?

Chapter 5: LLM Routing — One Text Box, Many Type Signatures

Here's a problem unique to music. In Chatbot Arena, every model has the same interface: text in, text out. You can route any prompt to any model. But TTM models are a zoo:

ModelWants lyrics?Vocals?Duration control?
MusicGen (Meta)NoInstrumental onlyNo
Stable Audio OpenNoInstrumental onlyYes
SongGen / ACE-StepRequires explicit lyricsYesNo
Riffusion FUZZGenerates lyrics itselfYesNo

So if a user types "folk song about a cat named Chamomile," you can't send that to MusicGen (instrumental — no vocals). And you can't send it raw to SongGen either, because SongGen demands a lyrics field the user never provided. The single text box has to be adapted to each model's type signature.

The fix: an LLM as a universal adapter. Run the prompt through GPT-4o once. It does two jobs: (1) moderate — reject copyrighted/inappropriate prompts; (2) extract structured fields — does this imply vocals? a specific duration? Then synthesize whatever a target model needs (e.g. generate lyrics for SongGen). The user sees one box; the LLM fans it out to N different APIs.
LLM Router — type a prompt, watch it route to compatible models

Each prompt is parsed into structured fields, then matched against the model roster. Green = compatible (will be in the battle pool). Gray = filtered out. The copyrighted prompt is rejected at moderation before any model sees it.

The data-flow, precisely

Trace the types. Input: prompt: str. The LLM emits {instrumental: bool, lyrics: str|null, duration: float|null} plus a moderation verdict {allowed: bool, reason: str}. The router then computes, for each model, compatible = model.supports(parsed), and draws the battle pair uniformly from the compatible set. For a vocal prompt routed to a lyrics-required model like ACE-Step, the LLM is called a second time to synthesize lyrics — the missing field is filled in, not left null.

Failure mode the paper flags: the router is GPT-4o, so it inherits GPT-4o's blind spots. A clever paraphrase of a copyrighted song could slip past moderation; an ambiguous prompt ("a song" — vocals or not?) gets a best-guess label that may misroute. The structured layer is only as good as the LLM behind it, and it's a single point of dependency for the whole platform.
Why does Music Arena need an LLM router, when Chatbot Arena does not?

Chapter 6: Listening Data — Did They Actually Listen?

An image vote is honest by construction — you see the whole image at a glance before voting. Music isn't like that. It unfolds over time. A user could vote after hearing two seconds, or skip clip B entirely. A vote from someone who never heard B is garbage. Music Arena's response: measure the listening, and gate the vote.

Two music-specific signals. (1) A listen gate: the vote buttons stay locked until the user has played each clip for a minimum duration (4 seconds at the time of writing) — forcing real engagement. (2) Fine-grained listening logs: every PLAY/PAUSE/TICK event with a wall-clock timestamp, for both clips, so researchers can reconstruct how the user listened before deciding.

The log is a list of (event, timestamp) pairs per clip. From the paper's example battle, clip A's log looks like:

# a_listen_data (abbreviated) — wall-clock seconds since epoch [["PLAY", 1753572708.70], # user starts clip A ["TICK", 1753572709.92], # 1-sec heartbeats while playing ["TICK", 1753572729.92], ["PAUSE", 1753572731.19], # paused after ~22s ["PLAY", 1753572763.56], # came back for a second listen ["PAUSE", 1753572789.63]] # total A listen time ≈ 22 + 26 = 48s; clip B ≈ 31s. # Both exceed the 4s gate, so the vote is valid.
Listen Gate — play both clips past 4s to unlock voting

Click Play A and Play B to accumulate listen time. The vote button unlocks only once both bars cross the 4-second threshold. This is the actual mechanism enforcing meaningful engagement.

Beyond the gate, users are asked for optional natural-language feedback — per-clip notes like the paper's real example: "The music quality was much higher overall, though the style wasn't quite what I asked for." Binary A-vs-B tells you which; the text tells you why, which is what you need to actually align a model.

What is the purpose of the 4-second listen gate?

Chapter 7: Privacy — Linking Users Without Knowing Them

Music Arena wants two things that sound contradictory. (1) Record linkage: recognize that 30 battles came from the same person — essential for spam detection and longitudinal "do preferences drift?" research. (2) Privacy: never store who that person actually is. How do you have a stable identity without storing the identity?

The trick: salted one-way hashing. Take a linkable identifier (IP address), prepend a secret server-side salt, push it through a one-way cryptographic hash, and store only the hash. The same IP always produces the same hash (so you can link sessions), but the hash can't be reversed to recover the IP (so privacy holds).
salted_id = HASH( salt ‖ IP )

Symbol by symbol: IP is the raw identifier you must never store. salt is a secret random string known only to the server. is concatenation. HASH is a one-way function — easy forward, infeasible backward.

Why the salt is the whole game

Without a salt, an attacker mounts a rainbow table attack: there are only ~4 billion IPv4 addresses, so you precompute HASH(every_ip) once, then reverse any stored hash by lookup. Trivial. The secret salt defeats this — the attacker would have to recompute the entire table per salt, and they don't know the salt. The hash you publish is useless to anyone but the server.

Salted Hashing — same IP, same anonymous ID; flip the salt, everything changes

Three users hit the platform repeatedly. Same IP → same anonymized ID (linkable). Change the salt and all IDs change at once — so even if last month's table leaked, this month's hashes are unrelated. The raw IP is never stored; only the right-hand column survives.

This is paired with a transparency policy. The whole platform is open source (minus secret keys/salts), and data is released on a rolling monthly cadence — so the field gets a renewable dataset, not a frozen one-off, and anyone can audit the full lifecycle from click to leaderboard.
Why add a secret salt before hashing the IP, instead of just hashing the IP directly?

Chapter 8: The Speed–Quality Tradeoff (RTF)

A leaderboard with one number ("Arena Score") hides a decision every TTM provider must make. A model targeting consumption (you want a finished track) should maximize quality. A model targeting a creative workflow (a producer iterating live) should minimize latency, even at some quality cost. Ranking by score alone punishes the fast-and-good-enough model unfairly. So Music Arena reports a second axis.

Real-Time Factor (RTF): seconds of audio generated ÷ seconds of wall-clock time to generate it. RTF = 10× means the model produces 30 s of music in 3 s. Crucially, dividing by output length means a model isn't punished for taking longer to make longer audio — it's a fair, length-invariant speed metric.
RTF = (seconds of audio produced) / (wall-clock seconds to generate)

Worked example: sao-small in the paper has RTF 12.79× (blazing fast, score 782) while riffusion-fuzz-1-1 has RTF 6.01× (slower, but score 1250). The fast model is roughly twice as fast yet ranks last on quality — a textbook speed-quality tradeoff. Neither number alone tells you which to pick; your application decides.

The Leaderboard Scatter — Arena Score vs. Speed (the paper's Figure 2)

Each point is a real model from the paper's first leaderboard. X = median RTF (log scale, faster → right). Y = Arena Score. The frontier is the upper-right: high quality and fast. Toggle the highlight to see how open-weights vs proprietary models populate the space — and note no single model dominates both axes.

Beyond speed, the leaderboard also surfaces training-data provenance (licensed stock vs Creative-Commons vs unspecified). In music — unlike LLMs, where everyone scrapes the web — the training corpus is a legal/ethical fault line, an "uneven playing field." Showing it lets a viewer weigh a score against how the model was built.
Why divide by output length when measuring generation speed via RTF?

Chapter 9: Connections & Cheat Sheet

Music Arena is not a model — it's an evaluation methodology carefully adapted to a domain. Its lineage runs straight through the "Arena" family, and its real payload is the renewable preference dataset it produces.

Where it sits

Limitations the paper is honest about

Cheat sheet — every key equation

EquationSymbolsWhen to use
P(i>j)=σ(βi−βj)β = strength, σ = logisticModel the probability one model beats another from a pairwise vote
Score = 1000 + 173.7·β173.7 = 400/ln(10)Rescale fitted strengths into a readable Elo-like Arena Score
salted_id = HASH(salt ‖ IP)salt = secret stringLink a user's sessions without storing their identity
RTF = audio_sec / wallclock_secReport length-invariant generation speed
The one-sentence takeaway: Music Arena turns the impossible-to-quantify ("is this music good?") into a tractable statistical estimation problem (fit Bradley-Terry strengths from cheap, self-motivated, blinded pairwise votes) — while engineering around music's quirks with an LLM router, a listen gate, salted hashing, and an RTF axis.
What is Music Arena's central thesis about live evaluation?