mirror of
https://github.com/QuentinFuxa/WhisperLiveKit.git
synced 2026-03-07 14:23:18 +00:00
62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def load_file(warmup_file=None, timeout=5):
|
|
import os
|
|
import tempfile
|
|
import librosa
|
|
|
|
if warmup_file is None:
|
|
# Download JFK sample if not already present
|
|
jfk_url = "https://github.com/ggerganov/whisper.cpp/raw/master/samples/jfk.wav"
|
|
temp_dir = tempfile.gettempdir()
|
|
warmup_file = os.path.join(temp_dir, "whisper_warmup_jfk.wav")
|
|
|
|
if not os.path.exists(warmup_file):
|
|
logger.debug(f"Downloading warmup file from {jfk_url}")
|
|
print(f"Downloading warmup file from {jfk_url}")
|
|
import time
|
|
import urllib.request
|
|
import urllib.error
|
|
import socket
|
|
|
|
original_timeout = socket.getdefaulttimeout()
|
|
socket.setdefaulttimeout(timeout)
|
|
|
|
start_time = time.time()
|
|
try:
|
|
urllib.request.urlretrieve(jfk_url, warmup_file)
|
|
logger.debug(f"Download successful in {time.time() - start_time:.2f}s")
|
|
except (urllib.error.URLError, socket.timeout) as e:
|
|
logger.warning(f"Download failed: {e}. Proceeding without warmup.")
|
|
return None
|
|
finally:
|
|
socket.setdefaulttimeout(original_timeout)
|
|
elif not warmup_file:
|
|
return None
|
|
|
|
if not warmup_file or not os.path.exists(warmup_file) or os.path.getsize(warmup_file) == 0:
|
|
logger.warning(f"Warmup file {warmup_file} invalid or missing.")
|
|
return None
|
|
|
|
try:
|
|
audio, sr = librosa.load(warmup_file, sr=16000)
|
|
except Exception as e:
|
|
logger.warning(f"Failed to load audio file: {e}")
|
|
return None
|
|
return audio
|
|
|
|
def warmup_asr(asr, warmup_file=None, timeout=5):
|
|
"""
|
|
Warmup the ASR model by transcribing a short audio file.
|
|
"""
|
|
audio = load_file(warmup_file=None, timeout=5)
|
|
asr.transcribe(audio)
|
|
logger.info("ASR model is warmed up")
|
|
|
|
def warmup_online(online, warmup_file=None, timeout=5):
|
|
audio = load_file(warmup_file=None, timeout=5)
|
|
online.warmup(audio)
|
|
logger.warning("ASR is warmed up") |