From 113ee59c30d465a845bf5d0e646aa31304be46b7 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Tue, 4 Nov 2025 18:24:49 +0800 Subject: [PATCH] bugfix --- fw/fw.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 fw/fw.py diff --git a/fw/fw.py b/fw/fw.py new file mode 100644 index 0000000..8a98977 --- /dev/null +++ b/fw/fw.py @@ -0,0 +1,42 @@ +from longtasks.longtasks import LongTasks +from faster_whisper import WhisperModel +from appPublic.worker import awaitify +from ahserver.filestorage import FileStorage + +class MyLongTask(LongTasks): + def __init__(self, *args, **kw): + super().__init__(self, *args, **kw) + self.load_models() + + def load_models(self): + self.models = [] + for i in range(self.worker_cnt): + model = WhisperModel(model_size, device="cuda", compute_type="float16") + self.models.append(model) + + def process_task(self, payload:dict, workerid:int=None): + if workerid is None: + return { + "task_status": "error", + "message": "workerid is None" + } + model = self.models[workerid] + webpath = payload.get('audio_file') + if webpath is None: + return { + "task_status": "error", + "message":"not audio_file provided" + } + fs = FileStorage() + fpath = fs.realPath(webpath) + f = awaitify(self.transcribe) + return await f(model, fpath) + + def transcribe(self, model, fpath): + segments, info = model.transcribe(fpath, beam_size=5) + return { + 'language': info.language, + 'language_probability': info.language_probability, + 'segments': [[segment.start, segment.end, segment.text] for segment in segments] + } +