Spaces:
Runtime error
Runtime error
from flask import Flask, jsonify, request | |
from librosa.feature import mfcc | |
import numpy as np | |
from scipy.io.wavfile import read | |
from tsai.all import * | |
from werkzeug.utils import secure_filename | |
app = Flask(__name__) | |
UPLOAD_FOLDER = "./" | |
app.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER | |
def preprocess(audio): | |
sr, a = audio | |
m = mfcc(y=a.astype(float), sr=sr) | |
l = [] | |
for a in m: | |
l.append([]) | |
flag = True | |
for b in a: | |
if abs(b) < 1e-3 and flag: | |
continue | |
else: | |
flag = False | |
l[len(l) - 1].append(b) | |
listy = [] | |
for a in l.reverse(): | |
listy.insert(0, []) | |
for b in a.reverse(): | |
if abs(b) < 1e-3 and flag: | |
continue | |
else: | |
flag = False | |
listy[0].insert(0, b) | |
temp = [] | |
for a in listy: | |
if len(a) < 236: | |
a.extend([0 for i in range(236 - len(a))]) | |
temp.append(a) | |
elif len(a) > 236: | |
c = (len(a) - 236) / 2 | |
temp.append(a[c : c + 236]) | |
else: | |
temp.append(a) | |
m = np.array(temp) | |
return m | |
def tone_vowel_pred(): | |
if "blob" in request.files: | |
file = request.files["blob"] | |
filename = secure_filename(file.filename) | |
filepath = os.path.join(app.config["UPLOAD_FOLDER"], filename) | |
file.save(filepath) | |
audio = read(filepath) | |
m = preprocess(audio) | |
t = tone.predict(m).item(0) | |
v = vowel.predict(m).item(0) | |
return jsonify({"vowel": v, "tone": t}) | |
if __name__ == "__main__": | |
tone = load_minirocket("minirocket-tone-8981") | |
vowel = load_minirocket("minirocket-vowel-9814") | |
app.run(debug=True) |