From ea0eedda86e5498e81269ae0d4dd96ab4c0faaea Mon Sep 17 00:00:00 2001 From: Sylpheed RE agent Date: Wed, 26 Aug 2026 00:26:24 +0000 Subject: [PATCH] =?UTF-8?q?re:=20the=20.slb=20parts=20are=20sequential=20s?= =?UTF-8?q?egments=20=E2=80=94=20and=20that=20closes=20the=20original=20my?= =?UTF-8?q?stery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The last open question was whether the leading XMA1-mono region duplicates the RIFF sub-wave, which would make the earlier totals double-count. It does not. Decoding both parts of every bank to mono PCM and measuring energy: bank leading secs / RMS riff secs / RMS VOICE_D_450 0.49 / 158 2.82 / 9898 VOICE_D_451 0.01 / 0 1.58 / 9128 VOICE_D_452 0.31 / 301 2.18 / 9061 VOICE_D_453 2.12 / 9770 0.14 / 14462 VOICE_D_454 3.07 / 10428 0.43 / 11639 Two shapes, and no bank holds the same content twice. In 450/451/452 the leading region is silence or near-silence (RMS 0-301 against ~9000 for speech) and the RIFF holds the line. In 453/454 the leading region holds the line and the RIFF is a short loud tail fragment. Sequential segments of one clip, so the totals stand and with them the 48 kHz fit. This also closes the mystery that started the whole thread. The corpus recorded 450 = 2.8 s, 451 = 1.6 s, 452 = 2.2 s as plausible but 453 = 0.14 s and 454 = 0.43 s as "far too short". The decoder skips everything before the first RIFF: for the first three that discards only silence, so they looked fine; for the last two it discards the line itself and leaves the trailing fragment. One rule, two outcomes, depending on which segment holds the speech. The fix is now well-posed in a way the withdrawn attempt was not: emit the leading region only when it carries signal. That also avoids the 1524-bank blast radius that sank the earlier version. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE --- docs/re/BACKLOG.md | 15 +++++++++--- docs/re/voice-bank-leading-region.md | 34 ++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index 119bb3a..d599a1e 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -1048,9 +1048,18 @@ premise was wrong.** are cleared for take-off!", the same for s02A/s07A/s08A/s13A. Someone expecting a stage-13-specific line would call the generic one wrong while the binding is right. - ❔ Still open: whether the leading XMA1-mono region is *additional* audio or an - alternate take of the same line — the totals above add it to the RIFF sub-waves - and would double-count if it is a duplicate. + ✅ **(same day) The two parts are SEQUENTIAL SEGMENTS, not duplicates** — so the + totals do not double-count and the 48 kHz fit stands. Measured by RMS: + `450`/`451`/`452` have a **silent or near-silent** leading region (RMS 0–301 + against ~9 000 for speech) with the line in the RIFF; `453`/`454` have the line + in the **leading** region with a short loud tail in the RIFF. + 🎯 **That closes the original mystery.** The decoder skips everything before the + first `RIFF`. For the first three that discards only silence, so they looked + fine (2.8 / 1.6 / 2.2 s); for the last two it discards **the line itself**, + leaving 0.14 s and 0.43 s. One rule, two outcomes, depending on which segment + holds the speech. ▶️ The fix is now well-posed: emit the leading region **only + when it carries signal**, which also avoids the 1524-bank blast radius that + sank the earlier attempt. * ❌ **(2026-08-25) The `.slb` "multi-subwave" guess is REFUTED, and the voice decoder is discarding up to 87 % of a bank.** The record table gives a **direct** binding `hokyu_DS_s13A -> VOICE_D_452` where the corpus records the diff --git a/docs/re/voice-bank-leading-region.md b/docs/re/voice-bank-leading-region.md index 2077982..85c3f4e 100644 --- a/docs/re/voice-bank-leading-region.md +++ b/docs/re/voice-bank-leading-region.md @@ -178,6 +178,40 @@ Three of the five are decisive; the other two have their only cue at 0.0 s, whic tells us nothing in either direction. So **something is genuinely missing from these banks** — independent of anything above, and now measured rather than felt. +## ✅ The two parts are SEQUENTIAL SEGMENTS — and that closes the original mystery + +The last open question was whether the leading mono region duplicates the RIFF +sub-wave (in which case adding them would double-count). It does not. Decoding +both parts of each bank to mono PCM and measuring energy: + +| bank | leading | | RIFF | | +|---|---|---|---|---| +| | secs | RMS | secs | RMS | +| `VOICE_D_450` | 0.49 | **158** | 2.82 | 9 898 | +| `VOICE_D_451` | 0.01 | **0** | 1.58 | 9 128 | +| `VOICE_D_452` | 0.31 | **301** | 2.18 | 9 061 | +| `VOICE_D_453` | 2.12 | 9 770 | 0.14 | 14 462 | +| `VOICE_D_454` | 3.07 | 10 428 | 0.43 | 11 639 | + +Two shapes, and no bank has the same content twice: + +* in `450`/`451`/`452` the leading region is **silence or near-silence** (RMS 0 to + 301 against ~9 000 for speech) — a lead-in — and the **RIFF holds the line**; +* in `453`/`454` the **leading region holds the line** and the RIFF is a short + loud tail fragment. + +So the parts are sequential segments of one clip. The totals used above do not +double-count, and the 48 kHz fit stands. + +### 🎯 Why `453` and `454` looked broken and the others did not + +This is exactly the original symptom. The corpus recorded `450` = 2.8 s, +`451` = 1.6 s, `452` = 2.2 s — plausible — but `453` = **0.14 s** and +`454` = **0.43 s**. The decoder skips everything before the first `RIFF`. For the +first three that discards only silence, so they looked fine; for the last two it +discards **the line itself**, leaving the trailing fragment. One rule, two +outcomes, depending on which segment happens to hold the speech. + ## ✅ Each shared bank is ONE generic line The banks are bound to 3–5 movie slots each, and the movies sharing a bank have