Spaces:
Sleeping
Sleeping
| # 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 |