SameerMahajan's picture
Update app.py
df93c2f verified
raw
history blame contribute delete
No virus
2.35 kB
import gradio as gr
import tensorflow as tf
from keras import models
import numpy as np
import sys
class_to_number = {0 : 1, 1 : 10, 2 : 100, 3 : 11, 4 : 12, 5 : 13, 6 : 14, 7 : 15, 8 : 16, 9 : 17, 10 : 18, 11 : 19,
12 : 2, 13 : 20, 14 : 21, 15 : 22, 16 : 23, 17 : 24, 18 : 25, 19 : 26, 20 : 27, 21 : 28, 22 : 29,
23 : 3, 24 : 30, 25 : 31, 26 : 32, 27 : 33, 28 : 34, 29 : 35, 30 : 36, 31 : 37, 32 : 38, 33 : 39,
34 : 4, 35 : 40, 36 : 41, 37 : 42, 38 : 43, 39 : 44, 40 : 45, 41 : 46, 42 : 47, 43 : 48, 44 : 49,
45 : 5, 46 : 50, 47 : 51, 48 : 52, 49 : 53, 50 : 54, 51 : 55, 52 : 56, 53 : 57, 54 : 58, 55 : 59,
56 : 6, 57 : 60, 58 : 61, 59 : 62, 60 : 63, 61 : 64, 62 : 65, 63 : 66, 64 : 67, 65 : 68, 66 : 69,
67 : 7, 68 : 70, 69 : 71, 70 : 72, 71 : 73, 72 : 74, 73 : 75, 74 : 76, 75 : 77, 76 : 78, 77 : 79,
78 : 8, 79 : 80, 80 : 81, 81 : 82, 82 : 83, 83 : 84, 84 : 85, 85 : 86, 86 : 87, 87 : 88, 88 : 89,
89 : 9, 90 : 90, 91 : 91, 92 : 92, 93 : 93, 94 : 94, 95 : 95, 96 : 96, 97 : 97, 98 : 98, 99 : 99}
def get_spectrogram(waveform):
# Convert the waveform to a spectrogram via a STFT.
spectrogram = tf.signal.stft(
waveform, frame_length=255, frame_step=128)
# Obtain the magnitude of the STFT.
spectrogram = tf.abs(spectrogram)
# Add a `channels` dimension, so that the spectrogram can be used
# as image-like input data with convolution layers (which expect
# shape (`batch_size`, `height`, `width`, `channels`).
spectrogram = spectrogram[..., tf.newaxis]
return spectrogram
model = tf.keras.layers.TFSMLayer("marathi-100", call_endpoint='serving_default')
def recognize_number(audio):
x = tf.io.read_file(audio)
x, sample_rate = tf.audio.decode_wav(x, desired_channels=1, desired_samples=16000,)
x = tf.squeeze(x, axis=-1)
x = get_spectrogram(x)
x = x[tf.newaxis,...]
prediction = model(x)
return class_to_number[np.argmax(prediction)]
gr.close_all()
demo = gr.Interface(fn=recognize_number, inputs = [
gr.Audio(sources=["upload", "microphone"], type="filepath", streaming=True),
],
outputs="text")
demo.launch()