From ab5424d37bb4f30504df2268cb491a1082f34cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastjan=20Arti=C4=8D?= Date: Wed, 29 Apr 2026 19:41:56 +0000 Subject: [PATCH] Clip starts EXACTLY on chorus first word (no buffer) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User feedback: 'na refren ne pred na začetek refrena' — the clip should start right when the chorus begins, not 0.3s before. Changes: 1. Prompt rule: 'Začetek = TOČNO ko prva beseda refrena začne' (was: '~0.3s PRED prvo besedo refrena') 2. Word-level extension: removed -0.15s buffer when extending back (now lands exactly on word start) Reasoning: with no_subs as default, we don't need buffer to avoid cutting first word during fade-in (fade-in is now 0.05s = imperceptible). Cleaner cuts directly at chorus onset. --- scripts/analyze.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/analyze.py b/scripts/analyze.py index 8b080a0..70eb0a8 100644 --- a/scripts/analyze.py +++ b/scripts/analyze.py @@ -1188,11 +1188,11 @@ PROSIM: Uporabnik je izbral način "**SAMO REFREN**". To pomeni: - ## ⚠️ ABSOLUTNO PRAVILO: clip se ZAČNE na PRVI BESEDI prvega refrena + ## ⚠️ ABSOLUTNO PRAVILO: clip se ZAČNE TOČNO NA PRVI BESEDI prvega refrena - **NE** vključuj kateri koli verz, pre-chorus, build-up, ali intro - **NE** začni "tik pred" refrenom - - **Začetek = ~0.3s PRED prvo besedo refrena** (npr. če prva beseda refrena "Žena" začne pri 78.0s, izberi start = 77.7s) - - **Razlog**: 0.3s buffer da ne odrežeš prve besede zaradi audio fade-in efekta + - **Začetek = TOČNO ko prva beseda refrena začne** (npr. če prva beseda refrena "Žena" začne pri 78.0s, izberi start = 78.0s — NE 77.7s) + - **Brez buffer-ja** — clip začne natančno na vokalu ## Identifikacija refrena (univerzalno čez jezike): - Najdi del, ki se v pesmi **ponavlja vsaj 2-krat** (običajno 3-4x) @@ -1793,7 +1793,7 @@ def main(): if gap >= 0.5: break anchor_idx = j - 1 - new_start = max(0, all_words[anchor_idx]["start"] - 0.15) + new_start = max(0, all_words[anchor_idx]["start"]) # NI buffer-ja captured = " ".join(w2["text"].strip() for w2 in all_words[anchor_idx:i+1]) print(f" 🎵 Razširim clip začetek {current_start:.2f}s → {new_start:.2f}s " f"(clip sredi besede; ujamem '{captured}')", file=sys.stderr) @@ -1813,7 +1813,7 @@ def main(): if gap >= 0.5: break anchor_idx = j - 1 - new_start = max(0, all_words[anchor_idx]["start"] - 0.15) + new_start = max(0, all_words[anchor_idx]["start"]) # NI buffer-ja captured = " ".join(w2["text"].strip() for w2 in all_words[anchor_idx:i+1]) print(f" 🎵 Razširim clip začetek {current_start:.2f}s → {new_start:.2f}s " f"(beseda '{w['text'].strip()}' tik pred clip start; "