Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -2,11 +2,10 @@ import gradio as gr
|
|
| 2 |
from moviepy.editor import VideoFileClip
|
| 3 |
from speechbrain.pretrained import EncoderClassifier
|
| 4 |
import torchaudio
|
| 5 |
-
from pytubefix import YouTube
|
| 6 |
-
from pytubefix.cli import on_progress
|
| 7 |
import requests
|
| 8 |
import os
|
| 9 |
import torch
|
|
|
|
| 10 |
|
| 11 |
CLASSIFIER = "Jzuluaga/accent-id-commonaccent_xlsr-en-english"
|
| 12 |
|
|
@@ -15,15 +14,20 @@ def get_default_device():
|
|
| 15 |
return torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 16 |
|
| 17 |
def download_video(url):
|
| 18 |
-
"""Download video from YouTube or direct MP4 URL using
|
| 19 |
try:
|
| 20 |
if "youtube.com" in url or "youtu.be" in url:
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
else:
|
| 28 |
# Direct MP4 file download
|
| 29 |
local_filename = "temp_video.mp4"
|
|
@@ -70,20 +74,19 @@ def process_video(url):
|
|
| 70 |
except Exception as e:
|
| 71 |
return f"Error: {e}", ""
|
| 72 |
finally:
|
| 73 |
-
# Clean up temporary files
|
| 74 |
for f in [video_path, audio_path]:
|
| 75 |
if f and os.path.exists(f):
|
| 76 |
os.remove(f)
|
| 77 |
|
| 78 |
iface = gr.Interface(
|
| 79 |
fn=process_video,
|
| 80 |
-
inputs=gr.Textbox(label="Enter Public Video URL (YouTube
|
| 81 |
outputs=[
|
| 82 |
gr.Textbox(label="Detected Accent"),
|
| 83 |
gr.Textbox(label="Confidence Score")
|
| 84 |
],
|
| 85 |
title="English Accent Classifier",
|
| 86 |
-
description="Paste a public video URL to detect the English accent and confidence score."
|
| 87 |
)
|
| 88 |
|
| 89 |
if __name__ == "__main__":
|
|
|
|
| 2 |
from moviepy.editor import VideoFileClip
|
| 3 |
from speechbrain.pretrained import EncoderClassifier
|
| 4 |
import torchaudio
|
|
|
|
|
|
|
| 5 |
import requests
|
| 6 |
import os
|
| 7 |
import torch
|
| 8 |
+
import yt_dlp
|
| 9 |
|
| 10 |
CLASSIFIER = "Jzuluaga/accent-id-commonaccent_xlsr-en-english"
|
| 11 |
|
|
|
|
| 14 |
return torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 15 |
|
| 16 |
def download_video(url):
|
| 17 |
+
"""Download video from YouTube or direct MP4 URL using yt_dlp or requests."""
|
| 18 |
try:
|
| 19 |
if "youtube.com" in url or "youtu.be" in url:
|
| 20 |
+
output_path = "temp_video.%(ext)s"
|
| 21 |
+
ydl_opts = {
|
| 22 |
+
'format': 'best[ext=mp4]/best',
|
| 23 |
+
'outtmpl': output_path,
|
| 24 |
+
'quiet': True,
|
| 25 |
+
'noplaylist': True,
|
| 26 |
+
}
|
| 27 |
+
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
| 28 |
+
info_dict = ydl.extract_info(url, download=True)
|
| 29 |
+
downloaded_path = output_path.replace("%(ext)s", info_dict['ext'])
|
| 30 |
+
return downloaded_path
|
| 31 |
else:
|
| 32 |
# Direct MP4 file download
|
| 33 |
local_filename = "temp_video.mp4"
|
|
|
|
| 74 |
except Exception as e:
|
| 75 |
return f"Error: {e}", ""
|
| 76 |
finally:
|
|
|
|
| 77 |
for f in [video_path, audio_path]:
|
| 78 |
if f and os.path.exists(f):
|
| 79 |
os.remove(f)
|
| 80 |
|
| 81 |
iface = gr.Interface(
|
| 82 |
fn=process_video,
|
| 83 |
+
inputs=gr.Textbox(label="Enter Public Video URL (YouTube or direct MP4 link)"),
|
| 84 |
outputs=[
|
| 85 |
gr.Textbox(label="Detected Accent"),
|
| 86 |
gr.Textbox(label="Confidence Score")
|
| 87 |
],
|
| 88 |
title="English Accent Classifier",
|
| 89 |
+
description="Paste a public video URL (YouTube or MP4) to detect the English accent and confidence score."
|
| 90 |
)
|
| 91 |
|
| 92 |
if __name__ == "__main__":
|