import os import uuid from abc import ABC, abstractmethod from pathlib import Path from flask import Flask, Response, jsonify, request from sziszapangma.integration.base_asr_service.asr_result import AsrResult _TEMP_DIRECTORY = "asr_processing" class AsrProcessor(ABC): @abstractmethod def process_asr(self, audio_file_path: str) -> AsrResult: """Method to call for ASR results.""" def process_request(self) -> Response: file_tag = str(uuid.uuid4()) f = request.files["file"] if f is not None and f.filename is not None: file_extension = f.filename.split(".")[-1] file_name = f"{file_tag}.{file_extension}" file_path = f"{_TEMP_DIRECTORY}/{file_name}" f.save(file_path) try: transcription = self.process_asr(file_path) os.remove(file_path) result_object = jsonify( {"transcription": transcription.words, "full_text": transcription.full_text} ) except: result_object = jsonify({"error": "Error on asr processing"}) else: result_object = jsonify({"error": "Error on asr processing"}) return result_object def start_processor(self): app = Flask(__name__) Path(_TEMP_DIRECTORY).mkdir(parents=True, exist_ok=True) app.route("/process_asr", methods=["POST"])(self.process_request) app.run(debug=True, host="0.0.0.0")