Kholykoko commited on
Commit
40d3368
1 Parent(s): 8a43324

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -25
app.py CHANGED
@@ -24,39 +24,31 @@ genre_classes = {
24
  9: "Rock"
25
  }
26
  def get_melspec_feature(X, target_sr, frame_size, frame_shift_len, n_mels):
27
- melspec_feature = []
28
- for audio in X:
29
- audio_melspec = librosa.feature.melspectrogram(y=audio, sr=target_sr, n_fft=frame_size, hop_length=frame_shift_len)
30
- audio_melspec = librosa.power_to_db(audio_melspec)
31
- audio_melspec = audio_melspec.T
32
- melspec_feature.append(audio_melspec)
33
- return np.array(melspec_feature, dtype=np.float32)
34
-
35
- def process_data_for_conv2D(X, resize_shape=None):
36
- X_conv2D = []
37
- for sample in X:
38
- sample = np.reshape(sample, newshape=(sample.shape[0], sample.shape[1], 1))
39
- if resize_shape:
40
- sample = resize(sample, output_shape=resize_shape)
41
- X_conv2D.append(sample)
42
- return np.array(X_conv2D, dtype=np.float32)
43
 
44
 
45
  def predict_genre(audio):
46
- sr, audio = audio
47
- # print(audio)
48
- # audio = np.ndarray(audio)
49
- audio = audio.astype(np.float32)
50
- melspec = get_melspec_feature(audio, target_sr, frame_size, frame_shift_len, 128)
51
- melspec = process_data_for_conv2D(melspec)
 
 
52
  prediction = model.predict(melspec)[0]
53
- return {genre_classes[i]: float(prediction[i]) for i in range(5)}
54
 
55
 
56
  iface = gr.Interface(
57
  predict_genre,
58
- inputs=gr.inputs.Audio(type="numpy", label="Upload Music file"),
59
- outputs=gr.outputs.Label(num_top_classes=5),
60
  title="Music Genre Classifier",
61
  live=True
62
  )
 
24
  9: "Rock"
25
  }
26
  def get_melspec_feature(X, target_sr, frame_size, frame_shift_len, n_mels):
27
+
28
+ audio_melspec = librosa.feature.melspectrogram(y=X, sr=target_sr, n_fft=frame_size, hop_length=frame_shift_len)
29
+ audio_melspec = librosa.power_to_db(audio_melspec)
30
+ audio_melspec = audio_melspec.T
31
+ print(audio_melspec.shape)
32
+ return np.array(audio_melspec, dtype=np.float32)
 
 
 
 
 
 
 
 
 
 
33
 
34
 
35
  def predict_genre(audio):
36
+ # print(type(audio[1]))
37
+ print(audio)
38
+ start = random.randint(1, 15)
39
+ x, sr = librosa.load(audio, offset=start, duration=10.0)
40
+ # # print(audio)
41
+ # print(type(x))
42
+ melspec = get_melspec_feature(x, target_sr, frame_size, frame_shift_len, 128)
43
+ melspec = np.reshape(melspec, (-1, 431, 128, 1))
44
  prediction = model.predict(melspec)[0]
45
+ return {genre_classes[i]: float(prediction[i]) for i in range(10)}
46
 
47
 
48
  iface = gr.Interface(
49
  predict_genre,
50
+ inputs=gr.inputs.Audio(type="filepath", label="Upload Music file"),
51
+ outputs=gr.outputs.Label(num_top_classes=10),
52
  title="Music Genre Classifier",
53
  live=True
54
  )