diff --git a/backend/app/services/whisper_service.py b/backend/app/services/whisper_service.py index f0da8ef..9e57642 100644 --- a/backend/app/services/whisper_service.py +++ b/backend/app/services/whisper_service.py @@ -2,6 +2,7 @@ from __future__ import annotations +import time from dataclasses import dataclass from faster_whisper import WhisperModel @@ -62,14 +63,16 @@ class WhisperService: def model(self) -> WhisperModel: """Lazy-load Whisper model on first use.""" if self._model is None: - logger.info(f"Loading Whisper model: {self._model_name}") + logger.info(f"Loading Whisper model '{self._model_name}' (device=cpu, compute_type=int8)...") + load_start = time.time() self._model = WhisperModel( self._model_name, device="cpu", compute_type="int8", # Quantized for faster CPU inference cpu_threads=4 ) - logger.info("Whisper model loaded successfully") + load_time = time.time() - load_start + logger.info(f"Whisper model '{self._model_name}' loaded successfully in {load_time:.2f}s") return self._model def transcribe_audio(self, audio_path: str) -> list[WordTimestamp]: @@ -82,7 +85,8 @@ class WhisperService: Returns: List of WordTimestamp objects with word-level timing """ - logger.info(f"Starting Whisper transcription: {audio_path}") + logger.info(f"Starting Whisper transcription using model '{self._model_name}': {audio_path}") + transcribe_start = time.time() segments, info = self.model.transcribe( audio_path, @@ -104,7 +108,11 @@ class WhisperService: end=word.end )) - logger.info(f"Whisper transcription complete: {len(words)} words detected") + transcribe_time = time.time() - transcribe_start + logger.info( + f"Whisper transcription complete using model '{self._model_name}': " + f"{len(words)} words detected in {transcribe_time:.2f}s" + ) return words def identify_speech_gaps(self, words: list[WordTimestamp]) -> list[SpeechGap]: