From e38082e9781dd97b133388863f21809aaed19810 Mon Sep 17 00:00:00 2001
From: Subliminal Guy <subliminal_kid@posteo.de>
Date: Mon, 21 Apr 2025 16:07:07 +0200
Subject: [PATCH] Add More Subtle Way to query trancription status

---
 app/asr_models/asr_model.py | 17 +++++++++++++++++
 app/webservice.py           |  3 ++-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/app/asr_models/asr_model.py b/app/asr_models/asr_model.py
index 76b7b85..2c6fbf0 100644
--- a/app/asr_models/asr_model.py
+++ b/app/asr_models/asr_model.py
@@ -75,3 +75,20 @@ class ASRModel(ABC):
         gc.collect()
         self.model = None
         print("Model unloaded due to timeout")
+    
+    @property
+    def is_transcribing(self) -> bool:
+        """
+        Returns True if a transcription is currently running.
+        """
+        return self.model_lock.locked()
+    
+    @property
+    def is_model_loaded(self) -> bool:
+        """
+        Returns True if the model is loaded in memory.
+        """
+        model_attr = self.model
+        if isinstance(model_attr, dict):
+            return model_attr.get('whisperx') is not None
+        return model_attr is not None
diff --git a/app/webservice.py b/app/webservice.py
index 24fe05d..38431fa 100644
--- a/app/webservice.py
+++ b/app/webservice.py
@@ -125,7 +125,8 @@ async def transcription_status():
     """
     Return whether a transcription is currently running.
     """
-    return {"active": asr_model.transcription_active}
+    # Use the model lock to check if a transcription is currently running
+    return {"active": asr_model.is_transcribing}
 
 
 @click.command()
-- 
GitLab