A music foundation model, 1,887 labelled songs, and a linear classifier.
The score is the output of a classifier trained to reproduce the ratings given by the hosts of Yacht or Nyacht? [1]. Each host scores a song out of 100, and the four scores are averaged into its yachtski. The site treats 50 as the boundary between Yacht Rock and Nyacht Rock.
This model listens to 30 seconds of audio and returns the estimated probability that a song's yachtski β the average of the four hosts β would land above 50. That is not the same as all four hosts agreeing: of the 1,243 songs with an average above 50, only 942 have every host individually above it. A song can clear the line on the strength of two enthusiasts and a sceptic.
It is a rough detector, not a verdict. On songs it has never seen it gets the Yacht/Nyacht call right about 70% of the time, where always guessing the majority class would score 51%, and its probability explains roughly 30% of the variance in the hosts' scores. It is confident and correct at the extremes, and close to guessing on songs near the boundary.
MERT-v1-95M [2], a self-supervised model trained on music. Each
of its 13 transformer layers is mean-pooled over time, giving a
9,984-dimensional representation of how the recording sounds.All figures are for the logistic model on songs held out of training, under nested cross-validation across all 1,887 songs: the regularisation strength is re-selected by an inner cross-validation inside each outer training fold, so no hyperparameter ever sees the song it is scoring.
| Metric | Held out | What it means |
|---|---|---|
| ROC AUC | 0.766 | Ranks a random yacht song above a random nyacht song 77% of the time |
| Accuracy | 0.70 | Yacht/Nyacht call. Always guessing the majority class would score 0.51 |
| Reliability | 0.0015 | Miscalibration: take every song scored near 30% β what fraction were actually yacht? This is the average squared gap between the two. Lower is better, 0 is perfect |
| P(yacht) vs true score | Pearson r = 0.55 | The probability tracks the hosts' 0β100 rating, not just the label |
Two of those rows are worth a note. Reliability of 0.0015 means the probabilities are close to honest: of the songs the model calls 30%, close to 30% really are yacht, and the same holds across the range. So the number on the dial can be read as a genuine confidence, not just a ranking β a 90 really is much likelier to be yacht rock than a 60.
And the model is trained only on a yes/no label, yet its probability still correlates with the hosts' full 0β100 score at a Pearson correlation of 0.55. It recovers more than it was asked to.
MERT [2] was compared against CLAP [3], an audioβtext model, under identical conditions β same songs, same folds, same classifier, same nested tuning.
| Encoder | Dims | AUC | Pearson r vs true score |
|---|---|---|---|
| MERT, all 13 layers | 9,984 | 0.766 | +0.551 |
| MERT, layer 8 only (best layer) | 768 | 0.758 | +0.535 |
| CLAP | 512 | 0.734 | +0.489 |
MERT wins, but by less than it might appear: +0.032 AUC. CLAP reaches 95% of that from a representation 19Γ smaller, and embeds roughly ten times faster. The much larger gain in this project came from dropping zero-shot text prompts in favour of a supervised head β not from the change of encoder. Concatenating both encoders scores 0.772, which is inside noise of MERT alone and not worth double the inference cost.
A score of 90 does not mean "the hosts would average this at 90". It means the model is 90% confident their average would land on the yacht side of 50. The two usually move together β the probability correlates with the hosts' actual rating at r = 0.55 β but a song can be unmistakably yacht-shaped and still only be rated 60.
An earlier version reported a direct 0β100 yachtski estimate from a ridge regression. It was dropped: its predictions compressed toward the middle of the scale, rarely leaving the 20β80 range even for songs the hosts rated 5 or 95. The probability does not have that problem β it uses nearly the full range β but it is answering a different question, and it is worth being clear which one.
Roughly 62% of its mistakes are songs the hosts rated between 40 and 60. Some of that is not really model error: a song rated 49 and one rated 51 are near-identical, but the binary label calls them opposites.
Smooth, well-produced records that the hosts reject on other grounds tend to score too high β some 1980s R&B, and Japanese city pop in particular, which is sonically almost indistinguishable from yacht rock but which the hosts rate only modestly.
Every metric above is measured on the kind of song the hosts choose to review: overwhelmingly studio recordings from roughly 1975β1990, soft rock and its immediate neighbours. A search box accepts anything β covers, remixes, live versions, modern pop, classical, children's music. None of that resembles the training data, and the model has no way to say "I have not seen anything like this". It will always return a confident-looking number.
Training on the same Deezer previews the app scores removes one failure mode an earlier version had: when training audio came from one source and scoring audio from another, the same song could land eight points apart depending on the upload's mastering. Now a track's preview is a single canonical input. But Deezer lists covers, remasters and live versions as separate tracks, and each one is scored as its own unheard piece of audio.
One hypothesis that did not survive. The low scores given to several modern revivalist tracks suggested the model might be detecting recording vintage rather than genre. Testing it on the 190 post-2000 songs the hosts have actually rated refuted this: the correlation between release year and prediction error is -0.04, essentially zero. The apparent era pattern was mean-reversion in disguise.
Every scored track is stored, so a repeat query returns instantly rather than re-downloading and re-running the model.
If you pick a song that is already in the training data β matched by artist and title β the app returns its cross-validated score β the score produced by a model trained on the other songs, which never saw this one. Running the fitted model on its own training example would report a memorised answer and flatter the model. Those results are labelled cross-validated in the interface.
Audio is fetched transiently to compute a score and is not redistributed. Ratings belong to the hosts of Yacht or Nyacht?; this is an unaffiliated hobby project by Felipe Maia Polo.