Skip to content
Extraits de code Groupes Projets
Valider 8a884653 rédigé par Sting's avatar Sting
Parcourir les fichiers

Fixes

parent 8c4b8a9e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!3Madmom
......@@ -3,7 +3,6 @@ import numpy as np
import sys
import re
import matplotlib.pyplot as plt
from scipy.ndimage.filters import maximum_filter
import scipy.signal as sg
import parselmouth
......@@ -17,6 +16,7 @@ def segment(songfile, reference_syls=None, syls_per_line=10, last_syl_dur=500):
spectral = madmom.features.onsets.SpectralOnsetProcessor('modified_kullback_leibler')
sig = madmom.audio.signal.Signal(songfile, num_channels=1)
parsel = parselmouth.Sound(sig)
spec = madmom.audio.spectrogram.Spectrogram(sig)
filt_spec = madmom.audio.spectrogram.FilteredSpectrogram(spec, filterbank=madmom.audio.filters.LogFilterbank, num_bands=24)
......@@ -38,11 +38,22 @@ def segment(songfile, reference_syls=None, syls_per_line=10, last_syl_dur=500):
onsets = madmom.features.onsets.peak_picking(activation_smoothed, threshold=0.1, smooth=0)
#onsets = np.array([o for o in onsets if cnn_smoothed[o] > 0.1])
pitch = parsel.to_pitch()
pitch_values = pitch.selected_array['frequency']
pad_before = round(pitch.xs()[0]*100)
pad_after = len(magnitude) - len(pitch_values) - pad_before
pitch_values = np.pad(pitch_values, (pad_before, pad_after), 'constant', constant_values=(0,0))
mask_function = magnitude * pitch_values
mask_function = mask_function/np.max(mask_function)
mask_threshold = 0.15
mask_window = [1,6]
invalid_onsets_idx = []
magnitude_window = [2,8]
magnitude_threshold = 1.2
for i in range(len(onsets)):
if np.max(magnitude[onsets[i]+magnitude_window[0]:onsets[i]+magnitude_window[1]]) < magnitude_threshold:
if np.max(mask_function[onsets[i]+mask_window[0]:onsets[i]+mask_window[1]]) < mask_threshold:
invalid_onsets_idx.append(i)
onsets = np.delete(onsets, invalid_onsets_idx)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter