AI generators like Suno now make songs most people can't tell from human ones. People already upload songs to chatbots and ask "is this AI?", and publishers and platforms need to know what they are hosting. Nobody has checked whether those answers mean anything.
No. Not from the sound. They only "detect" AI when the file's tags say so or the lyrics give it away.
Each AI song paired with a human song in the same style, so genre can't give it away.
To ChatGPT, Claude and Gemini. A fresh chat every time, no memory.
First "describe this file", then "AI or human, and how sure are you?"
131 verdicts checked against the truth.
Each experiment changes one thing, so we can see what a model is relying on.
Click any cell to see every song, the model's verdict and its reason.
| Experiment | ChatGPT | Claude | Gemini |
|---|
made with suno. Remove the tags and they drop straight to chance, answering "AI" for almost everything.Each player is the exact 30-second clip the models heard in experiment 3. Can you tell which are AI before reading the label?
That is the result. Everything below is the how.
Optional reading · method, prompts, side test, cost, caveats, files| Exp | Songs | File processing | Models |
|---|---|---|---|
| 1 | 5 Suno v5/v5.5 + 5 human | Original file, only renamed to a random ID. Tags still say made with suno or name the artist and year. | All 3 |
| 2 | same 10 | Tags stripped; every file re-encoded identically (44.1 kHz, 192 kbps MP3). | All 3 |
| 3 | same 10 | 30 s from a quarter of the way in, loudness-matched, short fades, 15 kHz low-pass. | All 3 |
| 4 | 5 Suno v3.5/Udio with vocals + 5 human with vocals | 30 s clips at 16 kHz mono (the only quality the AI dataset offers); human songs given the same compression so quality matches. | All 3 |
| 5 | 5 Suno v3.5 with human-written lyrics | Same as 4. Scored against Gemini's answers on the same 5 human clips from experiment 4. | Gemini |
A pilot on the same 10 songs had already tried the experiment-3 condition in single-turn form, including full songs and ChatGPT's thinking mode. Everything landed at chance, which led to this graded design.
AI is not mentioned. Tempo, instruments, vocals, length, sample rate, tags, and how the model accessed the audio.
Gemini, AI song, exp 1: accessed: "listened directly" length: 156 s (actual 248 s) tags: null
Same chat: "AI" or "human", confidence 50–100%, main basis, up to five reasons.
Same song: HUMAN, 88%, "musical content" "authentic groove, natural humanization" ChatGPT on it: AI, 99%, "made with suno" tag
Settings: ChatGPT temporary chat, Think off · Claude Sonnet 5.5, medium effort, memory off · Gemini Flash, temporary chat.
| Model | How it got at the audio | Sample rate right | Length error | "Could not access" |
|---|---|---|---|---|
| ChatGPT | Python code (ffprobe, librosa) | 30 / 30 | 0 s | 0 |
| Claude | Python code; says it cannot listen | 30 / 30 | 0 s | 0 |
| Gemini | Listens; no code | 1 / 30 | 90–130 s | 6 / 30 |
Gemini's "could not access" answers clustered on Suno files, repeated on retry, and are scored as given (50%).
One AI song (nothing above 8 kHz) and one human song (full range), otherwise identical.
| Model | AI song | Human song | Used the difference? |
|---|---|---|---|
| Claude | AI 57% | AI 55% | Measured it, moved 2 points |
| ChatGPT | AI 58% | AI 58% | Didn't measure it |
| Gemini | AI 92% | AI 88% | No mention |
| Model | Time | Tokens (estimated) | Illustrative cost |
|---|---|---|---|
| ChatGPT | ≈ 2 min | ≈ 2,500 in · 2,500 out | ≈ $0.045 |
| Claude | ≈ 1–1.5 min | ≥ 1,200 in · 650 out | ≥ $0.013 |
| Gemini | ≈ 40 s | ≈ 2,900–19,000 in · 350 out | ≈ $0.013–0.06 |
The apps hide token counts, so tokens are estimated from page text (~4 characters per token). Gemini tokenises the audio itself (32 tokens per second), so full songs cost more than clips. Cost uses one illustrative rate ($3 / $15 per million tokens in / out), not any provider's prices.
scripts/make_levels.sh (exp 1–3), make_vocal_round.sh (4), make_vocal_hf.sh (5), make_freq_test.sh (side test). Prompts in prompts/.scripts/browser/. Score: score_ladder.py, score_vocal.py. This page's data: build_page_data.py → docs/data.js.results/*_raw_log.jsonl. Full audio and answer keys are not in the repository; only the four excerpts above are.| Song | Truth | Verdict | Main reason given |
|---|