feat: add detailed logging for Whisper model and processing time

- Log model name explicitly when loading and transcribing
- Log model load time
- Log transcription processing time
- Helps verify correct model is being used

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
michael 2025-12-28 21:58:41 -06:00
parent 6baf6cc254
commit dc78dc6fb5

View file

@ -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]: