MichalIwaniuk commited on
Commit
c1e8004
·
1 Parent(s): 2102b33

Initial commit

Browse files
Files changed (3) hide show
  1. app.py +42 -0
  2. model.h5 +3 -0
  3. requirements.txt +5 -0
app.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import tensorflow as tf
3
+ import librosa
4
+ import numpy as np
5
+
6
+ # Wczytanie modelu
7
+ model = tf.keras.models.load_model("model.h5")
8
+
9
+ # Lista klas (dostosuj do swojego przypadku)
10
+ INSTRUMENTS = ['piano', 'guitar', 'violin', 'drums'] # <- zmień na własne klasy
11
+
12
+ # Parametry przetwarzania
13
+ SR = 22050
14
+ DURATION = 5
15
+ N_MELS = 128
16
+
17
+ def preprocess_audio(file):
18
+ y, _ = librosa.load(file.name, sr=SR, duration=DURATION)
19
+ if len(y) < SR * DURATION:
20
+ y = np.pad(y, (0, SR * DURATION - len(y)))
21
+ mel = librosa.feature.melspectrogram(y=y, sr=SR, n_mels=N_MELS)
22
+ mel_db = librosa.power_to_db(mel, ref=np.max)
23
+ mel_db = mel_db[..., np.newaxis] # Dodaj kanał
24
+ mel_db = np.expand_dims(mel_db, axis=0) # Dodaj batch
25
+ return mel_db
26
+
27
+ def predict_instrument(audio_file):
28
+ mel_input = preprocess_audio(audio_file)
29
+ preds = model.predict(mel_input)[0]
30
+ result = {cls: float(score) for cls, score in zip(INSTRUMENTS, preds)}
31
+ return result
32
+
33
+ demo = gr.Interface(
34
+ fn=predict_instrument,
35
+ inputs=gr.Audio(type="file", label="Wgraj plik WAV"),
36
+ outputs=gr.Label(num_top_classes=3),
37
+ title="Rozpoznawanie Instrumentów",
38
+ description="Model rozpoznaje instrumenty muzyczne na podstawie pliku dźwiękowego (.wav)."
39
+ )
40
+
41
+ if __name__ == "__main__":
42
+ demo.launch()
model.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:20cac95d5166f8f0b69e0d96d3dcc4e4f4228c59606c75b122f9b27e06c31c86
3
+ size 281904
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ tensorflow
2
+ librosa
3
+ gradio
4
+ numpy
5
+ scikit-learn