tonytz's picture
Update app.py
abd8c0e
raw
history blame
No virus
1.54 kB
# import library
import gradio as gr
import librosa
import pandas as pd
import numpy as np
import pickle
import tensorflow as tf
from tensorflow.keras.layers.experimental import preprocessing
from tensorflow.keras.preprocessing.image import load_img, img_to_array
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalization, Input
def get_waveform_label(file):
lab = tf.strings.split(file, os.path.sep)[-2]
audio_binary = tf.io.read_file(file)
audio, _ = tf.audio.decode_wav(audio_binary)
waveform=tf.squeeze(audio, axis=-1)
return waveform
def get_spectrogram_label(audio):
padding = tf.zeros([300000]-tf.shape(audio), dtype=tf.float32)
wave = tf.cast(audio, tf.float32)
eq_length = tf.concat([wave, padding], 0)
spectrogram = tf.signal.stft(eq_length, frame_length=210, frame_step=110)
spectrogram = tf.abs(spectrogram)
spectrogram = tf.expand_dims(spectrogram, -1)
return spectrogram
# %load saved model
model = pickle.load(open('audio_classifier_model.pkl', 'rb'))
def get_audio(audio):
audio_waveform = get_waveform_label(audio)
audio_spect = get_spectrogram_label(audio_waveform)
final_feat = np.array([audio_spect])
res = np.argmax(model.predict(final_feat),axis=1)
if res == 1:
res ="Dog Audio";
else:
res = "Cat Audio"
return res
iface = gr.Interface(fn=get_audio,inputs=["audio", "audio"],title="CAT_DOG AUDIO CLASSIFICATION",outputs="html").launch()