Universal chorus selection: chorus mandatory, pre-chorus only natural extension
User feedback: 'REFREN je obvezen, pre-chorus opcijsko' + 'sistem mora biti
stabilen za vse jezike, tudi španščino in romunščino'.
Two changes:
1. Web search is now MANDATORY first step (was: optional fallback):
- Even if Claude thinks it knows the song, must search lyrics first
- Universal lyrics sources by language:
SLO: besedila.com, lyricstranslate.com
DE: songtexte.com
HR/SR/BS: tekstovi.net
ES: letras.com, musica.com
RO: versuri.ro
IT: angolotesti.it
FR: paroles.net
EN: genius.com, azlyrics.com
Universal: lyricstranslate.com (any language)
- Search strategy: artist+title first, then transcript snippet fallback
- Without lyrics, Claude cannot reliably identify chorus boundaries
2. Simplified selection rules - chorus is THE priority:
- Chorus (full first occurrence) = MANDATORY
- Pre-chorus = ONLY if 1-2 verse lines tightly connected to chorus
- In doubt: just take chorus alone (12-25s)
- Outro fillers explicitly multi-language:
SLO 'aj ja ja' / 'ej ej ej'
EN 'yeah' / 'oh oh'
ES 'ay ay ay'
RO 'hei hei'
JA 'la la la'
- 12-35s total range (was 15-35s, now allows shorter chorus-only clips)
This makes the system language-agnostic: works the same way for Slovenian
narodno-zabavna, Spanish reggaeton, Romanian manele, German Schlager, etc.
The lyrics lookup is what makes it stable across languages.
This commit is contained in:
parent
389c26d012
commit
90cdad516b
@ -769,17 +769,35 @@ def _build_analysis_prompt(transcript, video_duration, target_duration=30, filen
|
||||
hint_block = f"""
|
||||
|
||||
🎵 IME DATOTEKE: "{filename_hint}"
|
||||
Iz imena datoteke morda lahko prepoznaš naslov pesmi ali izvajalca. Če je tako:
|
||||
- Uporabi svoje znanje o **dejanskem besedilu** te pesmi
|
||||
- Če Whisper transkript ne ustreza znanemu besedilu pesmi, POPRAVI besedilo na **dejansko besedilo pesmi**
|
||||
- Ohrani timestamp-e iz Whisper-ja (časovne meje so pravilne, samo besede so morda napačne)
|
||||
|
||||
🔍 ČE NE POZNAŠ PESMI (npr. slovenske narodno-zabavne, manj znane pesmi) → **UPORABI web_search tool** da poiščeš pravo besedilo!
|
||||
Primeri search queryjev:
|
||||
- "[ime izvajalca] [naslov pesmi] besedilo" (slovenske: Modrijani, Veseli Dolenjci, Avseniki, Čuki, Atomik Harmonik)
|
||||
- "[artist] [title] lyrics" (angleške/nemške)
|
||||
- Pogosto so besedila na: besedila.com, lyricstranslate.com, genius.com, tekstovi.net (HR/SR), songtexte.com (DE)
|
||||
Ko najdeš pravo besedilo, uporabi to za popravljanje "corrected_segments" — **transkript bo veliko bolj točen** kot če le ugibaš.
|
||||
🚨 **PRVI KORAK — VEDNO PRED ANALIZO**:
|
||||
Iz imena datoteke prepoznaj izvajalca + naslov pesmi. Potem **OBVEZNO uporabi web_search tool** da poiščeš pravo besedilo pesmi — TUDI ČE MISLIŠ DA POZNAŠ PESEM.
|
||||
|
||||
Razlog: večinoma ne poznaš celotnih besedil pesmi (predvsem ne-angleških). Brez pravega besedila NE MOREŠ:
|
||||
- Pravilno prepoznati strukture (verz / pre-chorus / chorus / bridge)
|
||||
- Vedeti kje refren **začne in konča** (vključno z outro frazami)
|
||||
- Popraviti STT halucinacij
|
||||
|
||||
📋 **Search strategija** (univerzalna za vse jezike):
|
||||
1. Prvo iskanje: `[izvajalec] [naslov] lyrics` ALI `[izvajalec] [naslov] besedilo/Songtext/letra/versuri`
|
||||
2. Če ni rezultatov: `[del transkripta - 4-5 zaporednih besed] lyrics`
|
||||
3. Trusted lyrics sajti po jezikih:
|
||||
- 🇸🇮 SLO: besedila.com, lyricstranslate.com
|
||||
- 🇩🇪 DE: songtexte.com, lyricstranslate.com
|
||||
- 🇭🇷🇷🇸 HR/SR/BS: tekstovi.net, lyricstranslate.com
|
||||
- 🇪🇸 ES: letras.com, musica.com
|
||||
- 🇷🇴 RO: versuri.ro, lyricstranslate.com
|
||||
- 🇮🇹 IT: angolotesti.it
|
||||
- 🇫🇷 FR: paroles.net
|
||||
- 🇬🇧🇺🇸 EN: genius.com, azlyrics.com
|
||||
- **Univerzalno**: lyricstranslate.com (vsi jeziki)
|
||||
|
||||
Ko najdeš lyrics:
|
||||
- Identificiraj kateri del je REFREN (ponavlja se)
|
||||
- Identificiraj VERZE (zgodba, ne ponavlja se)
|
||||
- Identificiraj BRIDGE / PRE-CHORUS / OUTRO če obstajajo
|
||||
- Mapiraj transkript timestamp-e na strukturne dele
|
||||
- Popravi corrected_segments z dejanskim besedilom
|
||||
"""
|
||||
|
||||
return f"""Tu je transcript pesmi iz STT modela (timestamp v sekundah, besedilo):
|
||||
@ -788,8 +806,8 @@ Iz imena datoteke morda lahko prepoznaš naslov pesmi ali izvajalca. Če je tako
|
||||
|
||||
Cela pesem traja {video_duration:.1f}s. Cilj: izrezati ~{target_duration}s odsek za TikTok/Instagram Reel.{hint_block}
|
||||
|
||||
⚠️ POMEMBNO: STT lahko naredi napake — narečne besede, slovanski jeziki, ko glasba prevladuje:
|
||||
- Pri narečjih in slovanskih jezikih
|
||||
⚠️ POMEMBNO: STT lahko naredi napake v vseh jezikih, posebej:
|
||||
- Pri narečjih, slovanskih jezikih, romanskih jezikih
|
||||
- Generira "tipičen" tekst (npr. tekst druge pesmi istega izvajalca)
|
||||
- Lahko vstavi besede ki se POdoBNO slišijo, ampak imajo ČISTO drug pomen
|
||||
|
||||
@ -807,32 +825,40 @@ PROSIM:
|
||||
- Refren MORA imeti vse pojavitve ENAKE
|
||||
- Popravi pomešane jezike (vse vrstice v enem jeziku)
|
||||
- Ohrani timestamp-e nespremenjene
|
||||
3. Prepoznaj REFREN: del besedila ki se PONAVLJA (ponavadi je 2-4 vrstice ki se večkrat ponovijo skozi pesem)
|
||||
3. Prepoznaj REFREN: del besedila ki se PONAVLJA (ponavadi 2-4 vrstice, ki se v pesmi večkrat ponovijo). To je **univerzalno za vse jezike** — refren je strukturni element pesmi, ne le slovenske/nemške/angleške.
|
||||
|
||||
4. **IZBERI ODSEK PO TEM PRIORITETNEM REDU:**
|
||||
4. **IZBERI ODSEK — REFREN JE GLAVNA STVAR:**
|
||||
|
||||
🥇 **PRVA IZBIRA**: zadnji verz pred refrenom (build-up) + cel **PRVI** refren
|
||||
- Build-up = zadnji verz pesmi tik PRED prvim refrenom (običajno 8-15s)
|
||||
- Refren = ves prvi nastop refrena (običajno 10-20s)
|
||||
- SKUPAJ: 20-35 sekund
|
||||
- Začni na začetku build-up verza (ne sredi besede)
|
||||
- **Končaj 1-2 sekunde PO zadnji besedi refrena** — pevec ima outro / drži ton, naj clip zajame celoten emocionalni vrh
|
||||
- **NE reži clip točno na zadnjo besedo** — refren naj se naravno izteče (vključno s "ej-ej-ej", "oh", "yeah" outroji)
|
||||
- Primer: če refren začne na 32s in zadnja beseda konča na 48s → izberi 20-50s (12s build-up + 16s refren + 2s outro padding)
|
||||
## 🎯 OBVEZNO: cel **PRVI** refren
|
||||
- **Začetek**: prva vrstica refrena (kjer ponavljanje prvič začne)
|
||||
- **Konec**: vključno z **vsem naravnim izpevom refrena**:
|
||||
- Outro fraze ki so del refrena (slo: "aj ja ja", "ej ej ej"; en: "yeah", "oh oh"; es: "ay ay ay"; ro: "hei hei"; ja: "la la la" — uniSAERZALno čez jezike)
|
||||
- Pevec drži zadnji ton 1-3s — to je **del refrena**, ne reži ga
|
||||
- Refren naj se **naravno izteče**
|
||||
|
||||
🥈 **DRUGA IZBIRA** (samo če pre-chorus ni dovolj močan): samo cel **PRVI** refren
|
||||
- Brez build-upa, samo refren z 1-2s padding pred in 1-2s padding po
|
||||
- Ne sekaj ravno na zadnji besedi
|
||||
## 💡 PRE-CHORUS samo če JE pred refrenom in pasta naravno
|
||||
- **PRE-CHORUS = zadnja 1-2 vrstici verza tik pred refrenom** (slišne, povezane z refrenom)
|
||||
- **Dodaj samo če**:
|
||||
- Je tik pred refrenom (brez pavze ali instrumental vmes)
|
||||
- Vsebinsko vodi v refren (gradnja občutka, "stopnjuje" se)
|
||||
- Je kratek: 4-10 sekund
|
||||
- **Ne dodajaj** pre-refrena če:
|
||||
- Refren se začne neposredno za prejšnjim refrenom
|
||||
- Verz je predaleč (>2s pavze) ali je instrumental vmes
|
||||
- Bi presegel skupno dolžino 35s
|
||||
- **V dvomu**: bolje SAMO REFREN kot da bi dodal čuden pre-chorus
|
||||
|
||||
🥉 **TRETJA IZBIRA** (samo če pesem nima jasnega refrena): najbolj dramatičen/zaključen del
|
||||
## 📏 Skupna dolžina: 12-35 sekund
|
||||
- **Sam refren** (najpogostejša izbira): 12-25s
|
||||
- **Refren + pre-chorus**: 18-32s
|
||||
|
||||
**NIKOLI**:
|
||||
- Ne izbiraj DRUGEGA ali tretjega refrena (pojasnimo: prvi nastop ima največ energije)
|
||||
- Ne vključuj instrumentalnih medbridge sekcij ali "la la la" delov
|
||||
- Ne preskakuj med verzi (clip mora biti ena celota)
|
||||
- Ne podaljšuj clipa čez 35 sekund
|
||||
## 🚫 NIKOLI:
|
||||
- **Drugi/tretji refren** — vedno PRVI nastop
|
||||
- **Instrumentalni medbridge** brez petja
|
||||
- **Skok med verzi** (clip mora biti ena neprekinjena celota)
|
||||
- **Sekanje sredi besede ali izpeta tona**
|
||||
|
||||
5. Če Whisper transkript je v večini halucinacija (manj kot 30% smiselnih besed), v "reason" napiši "WHISPER_HALLUCINATION_DETECTED" in vrni najmanj segmentov (samo tisti ki so smiselni)
|
||||
5. Če transkript je v večini halucinacija (manj kot 30% smiselnih besed), v "reason" napiši "STT_HALLUCINATION_DETECTED"
|
||||
|
||||
Odgovori SAMO v JSON formatu (brez markdown, brez razlage):
|
||||
{{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user