From f8f7a28c728fc6d4c940020f327f865db1b469a1 Mon Sep 17 00:00:00 2001 From: Subliminal Guy <subliminal_kid@posteo.de> Date: Sun, 20 Apr 2025 20:10:46 +0200 Subject: [PATCH] Add transcription status route --- app/asr_models/asr_model.py | 3 ++- app/asr_models/faster_whisper_engine.py | 5 +++++ app/asr_models/mbain_whisperx_engine.py | 5 +++++ app/asr_models/openai_whisper_engine.py | 5 +++++ app/webservice.py | 7 +++++++ 5 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/asr_models/asr_model.py b/app/asr_models/asr_model.py index 8c625ec..76b7b85 100644 --- a/app/asr_models/asr_model.py +++ b/app/asr_models/asr_model.py @@ -19,7 +19,8 @@ class ASRModel(ABC): last_activity_time = time.time() def __init__(self): - pass + # Flag indicating if a transcription is currently running + self.transcription_active = False @abstractmethod def load_model(self): diff --git a/app/asr_models/faster_whisper_engine.py b/app/asr_models/faster_whisper_engine.py index d7c3c44..3c9c8b5 100644 --- a/app/asr_models/faster_whisper_engine.py +++ b/app/asr_models/faster_whisper_engine.py @@ -35,6 +35,9 @@ class FasterWhisperASR(ASRModel): options: Union[dict, None], output, ): + # Mark transcription as active + self.transcription_active = True + # Update last activity timestamp self.last_activity_time = time.time() with self.model_lock: @@ -62,6 +65,8 @@ class FasterWhisperASR(ASRModel): output_file = StringIO() self.write_result(result, output_file, output) output_file.seek(0) + # Mark transcription as completed + self.transcription_active = False return output_file diff --git a/app/asr_models/mbain_whisperx_engine.py b/app/asr_models/mbain_whisperx_engine.py index 87494a3..458b5bc 100644 --- a/app/asr_models/mbain_whisperx_engine.py +++ b/app/asr_models/mbain_whisperx_engine.py @@ -48,6 +48,9 @@ class WhisperXASR(ASRModel): options: Union[dict, None], output, ): + # Mark transcription as active + self.transcription_active = True + # Update last activity timestamp self.last_activity_time = time.time() with self.model_lock: if self.model is None: @@ -88,6 +91,8 @@ class WhisperXASR(ASRModel): output_file = StringIO() self.write_result(result, output_file, output) output_file.seek(0) + # Mark transcription as completed + self.transcription_active = False return output_file diff --git a/app/asr_models/openai_whisper_engine.py b/app/asr_models/openai_whisper_engine.py index 655d682..a82ec7f 100644 --- a/app/asr_models/openai_whisper_engine.py +++ b/app/asr_models/openai_whisper_engine.py @@ -33,6 +33,9 @@ class OpenAIWhisperASR(ASRModel): options: Union[dict, None], output, ): + # Mark transcription as active + self.transcription_active = True + # Update last activity timestamp self.last_activity_time = time.time() with self.model_lock: @@ -52,6 +55,8 @@ class OpenAIWhisperASR(ASRModel): output_file = StringIO() self.write_result(result, output_file, output) output_file.seek(0) + # Mark transcription as completed + self.transcription_active = False return output_file diff --git a/app/webservice.py b/app/webservice.py index 8f4fa6a..24fe05d 100644 --- a/app/webservice.py +++ b/app/webservice.py @@ -119,6 +119,13 @@ async def detect_language( "language_code": detected_lang_code, "confidence": confidence, } + +@app.get("/transcription/status", tags=["Endpoints"]) +async def transcription_status(): + """ + Return whether a transcription is currently running. + """ + return {"active": asr_model.transcription_active} @click.command() -- GitLab