Spaces:
Runtime error
Runtime error
File size: 1,624 Bytes
9cb62ce fa15dd8 9cb62ce fa15dd8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
import streamlit as st
from moviepy.editor import VideoFileClip
from speechbrain.pretrained import EncoderClassifier
import torchaudio
import os
from pytube import YouTube
CLASSIFIER = "Jzuluaga/accent-id-commonaccent_xlsr-en-english"
def download_video(url):
"""Handles YouTube and direct video links"""
if "youtube.com" in url:
yt = YouTube(url)
stream = yt.streams.filter(progressive=True, file_extension='mp4').first()
return stream.download()
else: # Direct download
# Implement custom download logic for non-YouTube links
return url
def extract_audio(video_path):
clip = VideoFileClip(video_path)
audio_path = "temp_audio.wav"
clip.audio.write_audiofile(audio_path)
return audio_path
def classify_accent(audio_path):
classifier = EncoderClassifier.from_hparams(
source=CLASSIFIER,
savedir="pretrained_models/accent_classifier"
)
waveform, sample_rate = torchaudio.load(audio_path)
prediction = classifier.classify_batch(waveform)
return prediction
def main():
st.title("REM Waste Accent Classifier")
url = st.text_input("Enter video URL:", "")
if url:
with st.spinner("Processing..."):
video_path = download_video(url)
audio_path = extract_audio(video_path)
prediction = classify_accent(audio_path)
st.success("Analysis Complete")
st.metric("Detected Accent", prediction[3][0])
st.metric("Confidence Score", f"{prediction[1].exp().max().item()*100:.2f}%")
if __name__ == "__main__":
main()
|