From d8c2aae9c13aaf6ab95f6286a015729984bd69fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastjan=20Arti=C4=8D?= Date: Thu, 30 Apr 2026 05:19:35 +0000 Subject: [PATCH] Prompt: chorus must start on FIRST WORD of FIRST LINE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User feedback after re-processing 14 reels: - 8 perfect (BRAJDE 100%, FICKA, Abracadabra, Žena, Stisn, PA PA, Gojzar tanc, GADI Pijan) - 4 problematic patterns identified: 1. CVETELE: clip extends 22s into instrumental on 'nekoč oba' hold 2. GORENJSKA LJUBLJENA: clip starts mid-line at 'obrnem nazaj' instead of 'V Ljubljani se obrnem nazaj' 3. Fantje: clip starts mid-chorus at 'vabijo me' (2nd line) instead of first line 4. PODEŽELSKI: extends into 'o o o' outro filler Common cause: Soniox can group end-of-verse + start-of-chorus into same segment (e.g., '[43.6-47.6] doma. V Ljubljani se'), and Claude picks segment.start (43.6) or next segment.start (48.2) instead of the actual word 'V' boundary inside the segment. Prompt fix: 1. NEW critical rule: 'clip start = TOČNO prva beseda PRVE vrstice' 2. Warning about Soniox merging end-of-verse + start-of-chorus 3. Use word-level timestamps to find chorus start word 4. Warning about long held tones in Soniox segments (15-20s on 'oba', 'doma', 'srca' due to fade-out instrumental) 5. Cut 1-2s after last sung word, don't wait 20s for tone to die 6. Outro filler: include short outros (yeah/aj-aj), but cut before long repeating outros (5+s of 'o o o') as those are fade-out Added concrete examples in PRIMERI: - BRAJDE: 28s (already perfect) - GORENJSKA: explicit warning about 'V Ljubljani se' boundary - CVETELE: explicit warning about 15-20s held tone segments This is a prompt-only change. No code logic modified. LLM still has full autonomy on duration. --- scripts/analyze.py | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/scripts/analyze.py b/scripts/analyze.py index 6c3aa15..c26050e 100644 --- a/scripts/analyze.py +++ b/scripts/analyze.py @@ -1410,21 +1410,34 @@ PROSIM: ## STRATEGIJA — kako razmišljati: 1. **Najdi PRVI nastop refrena** v pesmi - 2. **Poglej KAJ SLEDI**: + - Refren je tisti del, ki se ponavlja v pesmi (običajno 2-4 vrstice) + - Identificiraj **PRVO vrstico refrena** (ne drugo, ne tretjo!) + - Primer: če refren je "V Ljubljani se obrnem nazaj / saj vrača me pogled / kjer gore se dotikajo neba / gorenjska ljubljena", **prva vrstica = "V Ljubljani se obrnem nazaj"** + - Primer: če refren je "Žena me tepe / mi prazni žepe / da vidi, kje in s kom sem bil", **prva vrstica = "Žena me tepe"** + + 2. **🎯 KRITIČNO: clip start = TOČNO prva beseda PRVE vrstice refrena** + - Če prva vrstica je "V Ljubljani se obrnem nazaj", clip start = beseda **"V"**, NE "obrnem" + - Če prva vrstica je "Žena me tepe", clip start = beseda **"Žena"**, NE "me" + - **OPOZORILO**: STT (Soniox) lahko združi konec verza z začetkom refrena v en segment, npr. segment "[43.6-47.6] doma. V Ljubljani se" — TUKAJ refren začne sredi segmenta na "V Ljubljani". Uporabi WORD-LEVEL timestampe da najdeš točno začetno besedo "V"! + - **NIKOLI ne začni** sredi besede ali sredi vrstice refrena + + 3. **Poglej KAJ SLEDI**: - Če **takoj sledi DRUGI nastop ISTEGA refrena** (gap < 3s) → **vključi oba** = ~30s. ✅ TO JE NAJBOLJ POGOST PRIMER. - Če sledi **drug refren** (B-refren z drugim besedilom) → samo prvi A-refren - Če sledi instrumental break → samo prvi refren - Če sledi takoj verz → samo prvi refren - 3. **Vključi naravne intro klice/fraze**: + 4. **Vključi naravne intro klice/fraze**: - "Ajmo Janezi!" pred BRAJDE refrenom = del refrena, vključi - "Hey!" / "Yeah!" / "Oh!" intro klici = del refrena, vključi - "Pa-pa!" / "La-la!" v začetku refrena = del refrena, vključi - 4. **Naravni konec refrena**: - - Pevec drži zadnji ton 1-3s = del refrena - - Outro filler ("aj aj aj", "yeah yeah") = del refrena - - Ne reži sredi besede ali izpetega tona + 5. **Naravni konec refrena**: + - Pevec drži zadnji ton 1-3s = **del refrena, vključi** + - Outro filler ("aj aj aj", "yeah yeah", "la la la") = **del refrena, vključi** + - **AMPAK**: če je outro filler **dolg in se ponavlja** (npr. "o o o o o o" 5+ sekund), **konča pred njim** — to je outro v fade-out, ne pomembna vsebina. Primer: refren konča z "podeželski rokenrol", potem "o o o" 5s = **odreži pri "rokenrol"**, ne pri zadnjem "o" + - Ne reži sredi besede ali sredi izpetega tona + - **OPOZORILO**: STT lahko zadnji izpeti ton ("oba", "doma", "srca") razpiše kot 15-20s segment (ker pevec drži ton + instrumental fade-out). To NI del besedila — odreži po prvih 1-2 sekundah po izpevu, NE čakaj 20s. ## PRIMERI — kako se razmišlja: @@ -1434,6 +1447,18 @@ PROSIM: - Refren 2: "Pejd' greva..." 57.1-63.1s + "Da v senci..." 63.8-69.8s - **Izbira: 41.8-69.8s = 28s** (dva zaporedna refrena z "Ajmo Janezi" intro klicem) ✅ + **GORENJSKA LJUBLJENA (Fehtarji):** + - Refren prva vrstica: "V Ljubljani se obrnem nazaj" + - **POZOR**: Soniox segment je "[43.6-47.6] doma. V Ljubljani se" — refren začne **sredi segmenta** pri besedi "V" (~46s) + - Naslednji segment: "[48.2-59.7] obrnem nazaj, saj vrača me pogled..." + - **Pravilna izbira**: start = beseda "V" pri ~46s, **ne 48.2s** (kjer je 'obrnem' sredi vrstice!) + - End: konec refrena pri "gorenjska ljubljena" (~80s) + + **CVETELE SO MALINE (Avsenik):** + - Refren prva vrstica: "Cvetele so maline, ko rekla je vse mine" + - **POZOR**: zadnja beseda refrena ("oba", "boli") lahko traja 15+ sekund v Soniox segmentu zaradi izpetega tona + instrumentala + - **Pravilna izbira**: konča 1-2 sekundi po zadnji izgovorjeni besedi, **NE čakaj 20s da ton zamre** + **Lady Gaga "Abracadabra":** - Refren: "Abracadabra, amor..." 4 vrstice - Ponavadi se 2x ponovi