futurecafe-voice-core / models /asr_whisper.py
Eyob-Sol's picture
Upload 38 files
74bb5fe verified
raw
history blame
1.05 kB
# models/asr_whisper.py
from faster_whisper import WhisperModel
from utils.config import get_settings
_asr_singleton = None
class WhisperASR:
def __init__(self):
s = get_settings()
# faster-whisper supports: 'cpu' or 'cuda' (no 'mps')
requested = (s.ASR_DEVICE or "cpu").lower()
device = "cpu" if requested not in ("cpu", "cuda") else requested
if requested == "mps":
print("[ASR] 'mps' not supported by faster-whisper; falling back to CPU.")
compute_type = "int8" if device == "cpu" else "float16"
self.model = WhisperModel("tiny", device=device, compute_type=compute_type)
def transcribe(self, path: str) -> dict:
segments, info = self.model.transcribe(path, beam_size=1, language="en")
text = " ".join(seg.text.strip() for seg in segments)
return {"text": text, "language": info.language, "segments": []}
def get_asr():
global _asr_singleton
if _asr_singleton is None:
_asr_singleton = WhisperASR()
return _asr_singleton