Sajidahamed's picture
Upload 3 files
98c4440 verified
raw
history blame
1.34 kB
import streamlit as st
import os
import subprocess
import torchaudio
from speechbrain.pretrained import EncoderClassifier
st.title("🗣️ English Accent Classifier (Proof of Concept)")
url = st.text_input("Enter public video URL (YouTube or direct MP4):")
if st.button("Analyze"):
with st.spinner("Downloading video..."):
if "youtube.com" in url or "youtu.be" in url:
os.system(f'yt-dlp -o input_video.mp4 "{url}"')
else:
os.system(f'wget -O input_video.mp4 "{url}"')
with st.spinner("Extracting audio..."):
os.system("ffmpeg -y -i input_video.mp4 -ar 16000 -ac 1 -vn audio.wav")
with st.spinner("Classifying accent..."):
accent_model = EncoderClassifier.from_hparams(
source="speechbrain/lang-id-commonlanguage_ecapa",
savedir="tmp_accent_model"
)
signal, fs = torchaudio.load("audio.wav")
if signal.shape[0] > 1:
signal = signal[0].unsqueeze(0)
prediction = accent_model.classify_batch(signal)
pred_label = prediction[3][0]
pred_scores = prediction[1][0]
confidence = float(pred_scores.max()) * 100
st.success(f"Predicted Accent: {pred_label} ({confidence:.1f}%)")
st.info(f"The model is {confidence:.0f}% confident this is a {pred_label} English accent.")