HridayKharpude's picture
Update app.py
1d9c2aa
import gradio as gr
import numpy as np
import pandas as pd
import csv
import librosa
import tensorflow as tf
#!gdown https://drive.google.com/uc?id=1hKQdsTZ35KQmNV9Zrqg-ksTLSmPapR53
model = tf.keras.models.load_model('TTM_model.h5')
def config_audio(audio):
header = 'ChromaSTFT RMS SpectralCentroid SpectralBandwidth Rolloff ZeroCrossingRate'
for i in range(1, 21):
header += f' mfcc{i}'
header += ' label'
header = header.split()
file = open('predict_file.csv', 'w', newline='')
with file:
writer = csv.writer(file)
writer.writerow(header)
#taalfile = audio
#print('stored in taalfile')
y, sr = librosa.load(audio, mono=True, duration=30)
rms = librosa.feature.rms(y=y)
chroma = librosa.feature.chroma_stft(y=y, sr=sr)
spec_centroid = librosa.feature.spectral_centroid(y=y, sr=sr)
spec_bandwidth = librosa.feature.spectral_bandwidth(y=y, sr=sr)
rolloff = librosa.feature.spectral_rolloff(y=y, sr=sr)
zcr = librosa.feature.zero_crossing_rate(y)
mfcc = librosa.feature.mfcc(y=y, sr=sr)
to_append = f' {np.mean(chroma)} {np.mean(rms)} {np.mean(spec_centroid)} {np.mean(spec_bandwidth)} {np.mean(rolloff)} {np.mean(zcr)} '
for e in mfcc:
to_append += f' {np.mean(e)}'
#to_append += f' {t}'
file = open('predict_file.csv', 'a', newline='')
with file:
writer = csv.writer(file)
writer.writerow(to_append.split())
predict_file = pd.read_csv("predict_file.csv")
X_predict = predict_file.drop('label', axis=1)
print('exit2')
return X_predict
def predict_audio(Audio_Input):
audio=Audio_Input.name
X_predict = config_audio(audio)
taals = ['addhatrital','bhajani','dadra','deepchandi','ektal','jhaptal','rupak','trital']
pred = model.predict(X_predict).flatten()
return {taals[i]: float(pred[i]) for i in range(8)},audio
audio = gr.inputs.Audio(source="upload", optional=False)
label = gr.outputs.Label()
audio = gr.inputs.Audio(source="upload", optional=False)
#label = gr.outputs.Label()
gr.Interface(predict_audio,
"file",
[gr.outputs.Label(),gr.outputs.Audio()],
description="",
examples = [["Addhatrital_Sample1.wav"], ["Addhatrital_Sample2.wav"], ["Bhajani_Sample1.wav"], ["Bhajani_Sample2.wav"],
["Dadra_Sample1.wav"], ["Dadra_Sample2.wav"], ["Deepchandi_Sample1.wav"], ["Deepchandi_Sample2.wav"],
["Ektal_Sample1.wav"], ["Ektal_Sample2.wav"], ["Jhaptal_Sample1.wav"], ["Jhaptal_Sample2.wav"],
["Rupak_Sample1.wav"], ["Rupak_Sample2.wav"], ["Trital_Sample1.wav"], ["Trital_Sample2.wav"]]).launch()