Skip to content
Snippets Groups Projects

Add base ASR serice

5 files
+ 169
3
Compare changes
  • Side-by-side
  • Inline

Files

 
import os
 
import uuid
 
from abc import ABC, abstractmethod
 
from pathlib import Path
 
 
from asr_result import AsrResult
 
from flask import Flask, Response, jsonify, request
 
 
_TEMP_DIRECTORY = "asr_processing"
 
 
 
class AsrProcessor(ABC):
 
def __init__(self):
 
self.read_user_credentials = self.read_user_credentials()
 
self._cached_users_credentials = None
 
 
@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")
Loading