kjysmu commited on
Commit
40ad63c
·
verified ·
1 Parent(s): 46d9135

Update utils/mir_eval_modules.py

Browse files
Files changed (1) hide show
  1. utils/mir_eval_modules.py +46 -10
utils/mir_eval_modules.py CHANGED
@@ -67,23 +67,59 @@ def idx2voca_chord():
67
 
68
  def audio_file_to_features(audio_file, config):
69
  original_wav, sr = librosa.load(audio_file, sr=config.mp3['song_hz'], mono=True)
 
 
70
  currunt_sec_hz = 0
71
- while len(original_wav) > currunt_sec_hz + config.mp3['song_hz'] * config.mp3['inst_len']:
 
 
72
  start_idx = int(currunt_sec_hz)
73
- end_idx = int(currunt_sec_hz + config.mp3['song_hz'] * config.mp3['inst_len'])
74
- tmp = librosa.cqt(original_wav[start_idx:end_idx], sr=sr, n_bins=config.feature['n_bins'], bins_per_octave=config.feature['bins_per_octave'], hop_length=config.feature['hop_length'])
75
- if start_idx == 0:
76
- feature = tmp
77
- else:
78
- feature = np.concatenate((feature, tmp), axis=1)
 
 
 
79
  currunt_sec_hz = end_idx
80
- tmp = librosa.cqt(original_wav[currunt_sec_hz:], sr=sr, n_bins=config.feature['n_bins'], bins_per_octave=config.feature['bins_per_octave'], hop_length=config.feature['hop_length'])
81
- feature = np.concatenate((feature, tmp), axis=1)
 
 
 
 
 
 
 
 
 
 
82
  feature = np.log(np.abs(feature) + 1e-6)
83
  feature_per_second = config.mp3['inst_len'] / config.model['timestep']
84
- song_length_second = len(original_wav)/config.mp3['song_hz']
85
  return feature, feature_per_second, song_length_second
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  # Audio files with format of wav and mp3
88
  def get_audio_paths(audio_dir):
89
  return [os.path.join(root, fname) for (root, dir_names, file_names) in os.walk(audio_dir, followlinks=True)
 
67
 
68
  def audio_file_to_features(audio_file, config):
69
  original_wav, sr = librosa.load(audio_file, sr=config.mp3['song_hz'], mono=True)
70
+ song_length_second = len(original_wav) / sr
71
+ inst_samples = int(sr * config.mp3['inst_len'])
72
  currunt_sec_hz = 0
73
+ feature = None
74
+
75
+ while currunt_sec_hz + inst_samples <= len(original_wav):
76
  start_idx = int(currunt_sec_hz)
77
+ end_idx = int(currunt_sec_hz + inst_samples)
78
+ tmp = librosa.cqt(
79
+ original_wav[start_idx:end_idx],
80
+ sr=sr,
81
+ n_bins=config.feature['n_bins'],
82
+ bins_per_octave=config.feature['bins_per_octave'],
83
+ hop_length=config.feature['hop_length']
84
+ )
85
+ feature = tmp if feature is None else np.concatenate((feature, tmp), axis=1)
86
  currunt_sec_hz = end_idx
87
+
88
+ # Handle remaining samples (including case where audio < inst_len)
89
+ if currunt_sec_hz < len(original_wav):
90
+ tmp = librosa.cqt(
91
+ original_wav[currunt_sec_hz:],
92
+ sr=sr,
93
+ n_bins=config.feature['n_bins'],
94
+ bins_per_octave=config.feature['bins_per_octave'],
95
+ hop_length=config.feature['hop_length']
96
+ )
97
+ feature = tmp if feature is None else np.concatenate((feature, tmp), axis=1)
98
+
99
  feature = np.log(np.abs(feature) + 1e-6)
100
  feature_per_second = config.mp3['inst_len'] / config.model['timestep']
101
+
102
  return feature, feature_per_second, song_length_second
103
 
104
+ # def audio_file_to_features(audio_file, config):
105
+ # original_wav, sr = librosa.load(audio_file, sr=config.mp3['song_hz'], mono=True)
106
+ # currunt_sec_hz = 0
107
+ # while len(original_wav) > currunt_sec_hz + config.mp3['song_hz'] * config.mp3['inst_len']:
108
+ # start_idx = int(currunt_sec_hz)
109
+ # end_idx = int(currunt_sec_hz + config.mp3['song_hz'] * config.mp3['inst_len'])
110
+ # tmp = librosa.cqt(original_wav[start_idx:end_idx], sr=sr, n_bins=config.feature['n_bins'], bins_per_octave=config.feature['bins_per_octave'], hop_length=config.feature['hop_length'])
111
+ # if start_idx == 0:
112
+ # feature = tmp
113
+ # else:
114
+ # feature = np.concatenate((feature, tmp), axis=1)
115
+ # currunt_sec_hz = end_idx
116
+ # tmp = librosa.cqt(original_wav[currunt_sec_hz:], sr=sr, n_bins=config.feature['n_bins'], bins_per_octave=config.feature['bins_per_octave'], hop_length=config.feature['hop_length'])
117
+ # feature = np.concatenate((feature, tmp), axis=1)
118
+ # feature = np.log(np.abs(feature) + 1e-6)
119
+ # feature_per_second = config.mp3['inst_len'] / config.model['timestep']
120
+ # song_length_second = len(original_wav)/config.mp3['song_hz']
121
+ # return feature, feature_per_second, song_length_second
122
+
123
  # Audio files with format of wav and mp3
124
  def get_audio_paths(audio_dir):
125
  return [os.path.join(root, fname) for (root, dir_names, file_names) in os.walk(audio_dir, followlinks=True)