|
import os |
|
os.environ["HF_HOME"] = "/tmp/huggingface" |
|
os.environ["HF_HUB_CACHE"] = "/tmp/huggingface/hub" |
|
os.environ["TRANSFORMERS_CACHE"] = "/tmp/huggingface/transformers" |
|
os.environ["TORCH_HOME"] = "/tmp/torch" |
|
os.environ["XDG_CACHE_HOME"] = "/tmp/xdg_cache" |
|
|
|
import streamlit as st |
|
from d import download_and_extract_audio, analyze_accent, get_accent_classifier |
|
|
|
st.title("English Accent Classifier") |
|
st.write(""" |
|
Upload a public video URL (e.g., YouTube, Loom, or direct MP4 link). The tool will extract the audio, analyze the speaker’s accent, and provide a confidence score. |
|
""") |
|
|
|
|
|
if "model_loaded" not in st.session_state: |
|
with st.spinner("Loading models (this may take a while the first time)..."): |
|
get_accent_classifier() |
|
st.session_state["model_loaded"] = True |
|
st.success("Model loaded!") |
|
|
|
video_url = st.text_input("Enter public video URL:") |
|
|
|
if st.button("Analyze Accent") and video_url: |
|
with st.spinner("Downloading and extracting audio..."): |
|
try: |
|
audio_path = download_and_extract_audio(video_url) |
|
except Exception as e: |
|
st.error(f"Audio extraction failed: {e}") |
|
st.stop() |
|
st.success("Audio extracted successfully!") |
|
st.audio(audio_path) |
|
with st.spinner("Analyzing accent (downloading model if needed)..."): |
|
try: |
|
accent, confidence, summary = analyze_accent(audio_path) |
|
except Exception as e: |
|
st.error(f"Accent analysis failed: {e}") |
|
st.stop() |
|
st.markdown(f"**Accent:** {accent}") |
|
st.markdown(f"**English Accent Confidence:** {confidence:.2f}%") |
|
st.markdown(f"**Summary:** {summary}") |
|
|