import os | |
import streamlit as st | |
CACHE_DIR = "/tmp/pretrained_models" | |
import torch | |
import gc | |
import time | |
from speechbrain.pretrained.interfaces import foreign_class | |
from faster_whisper import WhisperModel | |
# Ensure the folder exists and is writable | |
os.makedirs(CACHE_DIR, exist_ok=True) | |
# ------------------------------- | |
# Load Model (Cached) | |
# ------------------------------- | |
# making sure we only load the model once per every app instance | |
def load_accent_model(): | |
"""Loads custom accent classification model.""" | |
if not os.getenv("HF_TOKEN"): | |
st.error("Hugging Face token not found.") | |
st.stop() | |
try: | |
return foreign_class( | |
source="Jzuluaga/accent-id-commonaccent_xlsr-en-english", | |
pymodule_file="custom_interface.py", | |
classname="CustomEncoderWav2vec2Classifier", | |
) | |
except Exception as e: | |
st.error(f"Error loading model: {e}") | |
st.stop() | |
def load_whisper(): | |
return WhisperModel("tiny", device="cpu", compute_type="int8_float32") | |
def unload_model(model): | |
del model | |
torch.cuda.empty_cache() | |
gc.collect() | |
time.sleep(5) # give system time to clean up before moving on | |