Find chorus: weight repetitive short phrases (like 'Ohne dich x5') as strong chorus signal
This commit is contained in:
parent
c17578521a
commit
8eaef029e2
@ -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({
|
||||
|
||||
Loading…
Reference in New Issue
Block a user