diff --git a/scripts/find_chorus.py b/scripts/find_chorus.py index 32fdc10..f80743c 100644 --- a/scripts/find_chorus.py +++ b/scripts/find_chorus.py @@ -219,12 +219,20 @@ def find_chorus(video, lang=None, model_size="small", target_duration=30.0): avg_e = avg_energy_in_range(energies, start, start + target_duration) energy_score = max(0, avg_e - avg_overall) # koliko nad povprečjem - # Score: ponovitve + energija + dolžina vrstice - # Refren je navadno glasnejši kot verz — energija je močnejši signal + # Score: refren = ponavljajoča kratka fraza + glasnejši + # - Ponovitve močno štejejo + # - Energija močno šteje (refren je glasnejši) + # - Kratke vrstice z veliko ponovitvami iste besede = klasičen refren + rep_words = rep_text.lower().split() + # Penaliziraj dolge informativne vrstice (verzi imajo več različnih besed) + unique_word_ratio = len(set(rep_words)) / max(len(rep_words), 1) + # Refren ima nizek unique_ratio (ponavljajoče besede), verz visok + chorus_signal = max(0, (1.0 - unique_word_ratio) * 20) + score = ( - len(cluster) * 5 # repetition weight (zmanjšano) - + energy_score * 10 # energy weight (povečano — refren je glasnejši) - + min(len(rep_text.split()), 10) + len(cluster) * 8 # ponovitve + + energy_score * 10 # energija (refren je glasnejši) + + chorus_signal # ponavljajoča fraza signal ) candidates.append({