From 53a55099910b452a81e69cbcb8d91f40132e5d76 Mon Sep 17 00:00:00 2001 From: timmy Date: Thu, 24 Sep 2026 20:32:46 +0000 Subject: [PATCH] material: verify the three sovereign music masters against the numbers Q9 states - file hashes, LUFS, true peak, decode, container format, engine record, plus a hook-transcription window per candidate --- recoveries/music-master-verification.md | 99 +++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 recoveries/music-master-verification.md diff --git a/recoveries/music-master-verification.md b/recoveries/music-master-verification.md new file mode 100644 index 0000000..4c469ea --- /dev/null +++ b/recoveries/music-master-verification.md @@ -0,0 +1,99 @@ +# Music master verification — "RECEIPTS, M'LORD", three candidates + +**Date:** 2026-09-24 · **By:** Timmy · **Status:** pre-verification of the claims stated in `WORK-QUEUE.md` Q9, +run before the independent pass was asked for and recorded so that pass has something to contradict. + +**Not the second opinion.** These measurements were taken on the same host, with the same tools that produced the +files. They can establish whether the *recorded numbers are true of the delivered files*; they cannot establish +that the pipeline is right about anything. The independent pass is still Zeph's to make, or nobody's. + +## What was measured, and with what + +```bash +cd /root/sovereign-music-daily/releases/2026-09-24/masters +sha256sum *.mp3 +ffprobe -v error -show_entries stream=codec_name,sample_rate,channels,bit_rate,duration \ + -show_entries format=duration,bit_rate,size,format_name -of default=noprint_wrappers=1 +ffmpeg -nostdin -hide_banner -i -af loudnorm=I=-14:TP=-1.0:print_format=json -f null - # input_i / input_tp / input_lra +ffmpeg -v error -nostdin -i -f null - # full decode, rc + stderr +ffmpeg -v error -i -f md5 - # decoded-audio identity +``` + +## Delivered MP3s — claim vs measurement + +| candidate | sha256 (of the 7,801,965-byte file) | matches `STATE.json` | integrated LUFS | true peak dBFS | decode | dur (container) | +|---|---|---|---|---|---|---| +| `78c3791c` | `75bf91ffc2a141cc564c7cbbba83a8cd82c9685001760d4444f979c6a2ee0bff` | yes | **−14.12** | **−0.94** | clean, rc 0 | 195.024 s | +| `a381d8cf` | `c1cc8fda1785502378d78e23a85c7ee81faff325e780ae7f6bdf81e131aa0804` | yes | **−14.00** | **−1.57** | clean, rc 0 | 195.024 s | +| `e6d5e7e9` | `ca24d8a2beb8715e501df5218b29dca47e2b7f93ee1747caeefe95623cc6f40d` | yes | **−13.98** | **−0.92** | clean, rc 0 | 195.024 s | + +All three: `mp3`, **48000 Hz, 2 channels, 320000 bps**. Decoded-audio MD5s are three different values +(`b57bc3b3…`, `20a02c46…`, `ccef58bc…`), so these are three distinct renditions, not three copies of one. + +## Each Q9 claim, graded + +| claim in Q9 | verdict | measurement | +|---|---|---| +| integrated loudness −14.0 ± 0.2 LUFS | **holds** | −14.12 / −14.00 / −13.98, max deviation 0.12 from the record | +| true peak ≤ −0.9 dBFS | **holds as written, wording should change** | −0.94 / −1.57 / −0.92. Two of three sit **inside 0.02–0.08 dB of the bound**, and `STATE.json`'s own event line states the mastering target as **−1.0 dBTP**, which none of the three meets (−0.92 and −0.94 are *above* it). Quote the measured value; the −1.0 is a loudnorm parameter, not a delivered figure. | +| full decode clean | **holds** | `ffmpeg -v error … -f null -` exits 0 with empty stderr on all three | +| 195.0 s | **holds, off by the encoder's padding** | FLAC source exactly 195.000 s; MP3 container 195.024 s | +| FLAC-source 48 kHz stereo | **holds** | 3 candidate FLACs: `flac`, 48000, 2ch, 195.000 s | +| 320 kbps MP3 | **holds** | `bit_rate=320000` (container rate 320041) | +| SHA-256s in the manifest | **holds; and "the manifest" is `STATE.json`** | all three match `STATE.json` character for character; no separate manifest file exists. The source FLACs match `logs/generated-files.json` | +| "three ACE-Step CPU renders" | **holds** | `logs/ace-result.json`: `engine` ACE-Step 1.5, `model` acestep-v15-turbo, `device` cpu, `inference_steps` 16, `seed` 4421…, `success` true, started 09:50:55Z, finished 12:18:16Z, `wall_seconds` 8840.9 | + +`QC.json` (the source-file measurements) also reproduces: LUFS −13.37 / −13.28 / −13.33 against the recorded +−13.3 / −13.3 / −13.3; true peaks −0.87 / −0.74 / −0.93 against −0.9 / −0.7 / −0.9. The only figure with real +spread is loudness range — I measure 11.30 / 9.00 / 12.50 against the recorded 11.1 / 9.1 / 12.1, up to 0.4 apart. +LRA is the one number here whose definition varies between implementations, so this is recorded as a method note, +not as a discrepancy: the recorded values are not contradicted. + +## Hook transcription — my own pass, 50–110 s window + +```bash +ffmpeg -loglevel error -ss 50 -t 60 -i receipts-mlord-.mp3 -ac 1 -ar 16000 -c:a pcm_s16le /tmp/q9win-.wav +python3 -c 'from faster_whisper import WhisperModel; m=WhisperModel("small.en",device="cpu",compute_type="int8",local_files_only=True); \ + s,i=m.transcribe("/tmp/q9win-.wav", language="en", beam_size=5, vad_filter=False, condition_on_previous_text=False); \ + print([(round(x.start+50,2), x.text.strip()) for x in s])' +``` + +Model `Systran/faster-whisper-small.en` (int8, CPU), one 60 s window starting 50.0 s in each delivered master, +raw output kept at `/tmp/q9-transcription.json`. Wall time 96 s for the three. + +**78c3791c** — chorus recovered at 77–91 s: +``` +[77.00] Lord, the receipt is the proof The hats don't care who told you no +[82.00] Lord, the receipt is the proof 44 hours of tape in a row +[87.00] Say it again, the receipt is the proof +[91.00] Root around the door Keep your sure +``` +**a381d8cf** — chorus at 86–105 s: +``` +[86.00] Lord, the receipt is the proof +[91.00] The ask or receipt is the no +[96.00] Lord, the receipt is the proof +[101.00] Rude around the no, keep the show +``` +**e6d5e7e9** — chorus at 75–99 s: +``` +[75.00] Lord, the receipt is approved +[78.00] And I don't care who told you not +[81.00] The receipt is the proof +[83.00] Forty-four hours of tape in a row +``` + +**Reading it honestly.** The first hook line, "the receipt is the proof", is recovered verbatim in **all three** +candidates, in some case three times per window. The second hook line, "the hash don't care who told you no", is +recovered in **none** of them: ASR returns "The hats don't care…", "And I don't care…", "The ask or receipt is the +no". The word *hash* never survives. Whether the render mangles it or `small.en` simply cannot resolve it over the +mix is **not decidable by this method** — that needs a listener, or a lyric-aligned wider model, not a transcript. +Verse lines around it come back close to `lyrics.txt` but not exact ("22,000 sets/sides on a dead post", +"Recovered from a capture nobody hopes/holds"), which is the normal error rate for sung vocals. + +One artifact to not be fooled by: e6d5e7e9's window ends with a spurious "Thanks for watching!" at 108–110 s. That +is a known whisper hallucination on music, not content in the file. + +**Limits:** ASR on singing, one 60 s window per candidate, one model. This says nothing about mix quality, +intelligibility to a human ear, or which candidate should be released. It is not the independent pass either — the +same host made the files.