Spaces:
Sleeping
Sleeping
import gradio as gr | |
import numpy | |
import pathlib | |
import tensorflow as tf | |
from PIL import Image | |
from music21 import stream,chord,duration,clef | |
myModel = tf.keras.models.load_model('my_model.h5') | |
class_names = ['Crash', | |
'Crash + KickBass', | |
'Crash + Snare', | |
'Crash + Snare + KickBass', | |
'Crash + Tom', | |
'Crash + Tom + KickBass', | |
'Hihat', | |
'Hihat + KickBass', | |
'Hihat + Snare', | |
'Hihat + Snare + KickBass', | |
'Hihat + Tom', | |
'Hihat + Tom + KickBass', | |
'KickBass', | |
'Ride', | |
'Ride + KickBass', | |
'Ride + Snare', | |
'Ride + Snare + KickBass', | |
'Ride + Tom', | |
'Ride + Tom + KickBass', | |
'Snare', | |
'Snare + KickBass', | |
'Snare + Tom', | |
'Snare + Tom + KickBass', | |
'Tom', | |
'Tom + KickBass'] | |
def PredictionToNotation(predict): | |
score = stream.Score() | |
drum_part = stream.Part() | |
drum_part.id = 'Drums' | |
for prediction in predict: | |
n=chord.Chord(PredictionToChord(prediction)) | |
n.duration = duration.Duration(0.5) | |
drum_part.append(n) | |
drum_part.clef = clef.PercussionClef() | |
score.insert(0, drum_part) | |
score.write('lily.png',"notation") | |
return Image.open('notation.png') | |
def PredictionToChord(prediction): | |
noteToChord = [] | |
drumComponent = {"Hihat":"A4","Snare":"D4","KickBass":"G3","Crash":"B4","Tom":"E4","Ride":"G4"} | |
for component in prediction.split(" "): | |
if(component in drumComponent): | |
noteToChord.append(drumComponent[component]) | |
return noteToChord | |
def transcribe(AudioFile): | |
return PredictionToNotation(["Hihat + Snare"]) | |
gr.Interface( | |
fn=transcribe, | |
inputs=gr.Audio(type="filepath"), | |
outputs="image").launch() |