Spaces:
Runtime error
Runtime error
import os.path | |
import traceback | |
from flask import Flask, render_template, request | |
from flask_cors import CORS | |
from flask_executor import Executor | |
from flask_socketio import SocketIO, emit | |
from gevent import monkey | |
from utils import get_search_index | |
from scipy.io import wavfile | |
import base64, io | |
import numpy as np | |
import whisper | |
from main import run | |
monkey.patch_all(ssl=False) | |
app = Flask(__name__) | |
app.config['SECRET_KEY'] = 'secret!' | |
socketio = SocketIO(app, cors_allowed_origins="*", logger=True) | |
# cors = CORS(app) | |
executor = Executor(app) | |
executor.init_app(app) | |
app.config['EXECUTOR_MAX_WORKERS'] = 5 | |
model = whisper.load_model('small.en') | |
def index(): | |
get_search_index() | |
return render_template('index.html') | |
def handle_message(data): | |
question = data['question'] | |
print("question: " + question) | |
if executor.futures: | |
emit('response', {'response': 'Server is busy, please try again later'}) | |
return | |
try: | |
future = executor.submit(run, question) | |
response = future.result() | |
emit('response', {'response': response}) | |
except Exception as e: | |
traceback.print_exc() | |
# print(f"Error processing request: {str(e)}") | |
emit('response', {'response': 'Server is busy. Please try again later.'}) | |
def handle_audio(): | |
# print the request files and names | |
print(request.files) | |
audio_data = request.files['audio'] | |
audio_data.save('audio.webm') | |
print("audio data received: " + str(audio_data)) | |
if os.path.isfile('audio.webm'): | |
print("audio file exists") | |
# Transcribe the audio data using OpenAI Whisper | |
transcript = whisper.transcribe(model, 'audio.webm') | |
data = {'question': transcript['text']} | |
handle_message(data) | |
if __name__ == '__main__': | |
socketio.run(app, port=5001) | |