Update app.py
Browse files
app.py
CHANGED
@@ -7,16 +7,17 @@ from semantic_router.encoders import HuggingFaceEncoder
|
|
7 |
from faster_whisper import WhisperModel
|
8 |
import spaces
|
9 |
|
|
|
10 |
# Function to download YouTube audio
|
11 |
def download_youtube_audio(url, output_path, preferred_quality="192"):
|
12 |
ydl_opts = {
|
13 |
-
'format': 'bestaudio/best',
|
14 |
'postprocessors': [{
|
15 |
'key': 'FFmpegExtractAudio',
|
16 |
'preferredcodec': 'mp3',
|
17 |
'preferredquality': preferred_quality,
|
18 |
}],
|
19 |
-
'outtmpl': output_path
|
20 |
}
|
21 |
|
22 |
try:
|
@@ -32,7 +33,7 @@ def download_youtube_audio(url, output_path, preferred_quality="192"):
|
|
32 |
|
33 |
except yt_dlp.utils.DownloadError as e:
|
34 |
print(f"Error downloading audio: {e}")
|
35 |
-
return None
|
36 |
|
37 |
# Function to transcribe audio using WhisperModel
|
38 |
def transcribe(path, model_name):
|
@@ -42,7 +43,6 @@ def transcribe(path, model_name):
|
|
42 |
return segments
|
43 |
|
44 |
# Function to process segments and convert them into a DataFrame
|
45 |
-
@spaces.GPU
|
46 |
def process_segments(segments):
|
47 |
result = {}
|
48 |
print("Processing...")
|
@@ -60,9 +60,8 @@ def process_segments(segments):
|
|
60 |
return df
|
61 |
|
62 |
# Gradio interface functions
|
63 |
-
|
64 |
-
|
65 |
-
path = "downloaded_audio.mp3.mp3"
|
66 |
download_youtube_audio(youtube_url, path)
|
67 |
segments = transcribe(path, model_name)
|
68 |
df = process_segments(segments)
|
@@ -100,15 +99,14 @@ def download_video(youtube_url):
|
|
100 |
# Define download options
|
101 |
ydl_opts = {
|
102 |
'format': 'mp4',
|
103 |
-
'outtmpl': 'downloaded_video
|
104 |
'quiet': True
|
105 |
}
|
106 |
|
107 |
# Extract video ID to check if already downloaded
|
108 |
with yt_dlp.YoutubeDL({'quiet': True}) as ydl:
|
109 |
info_dict = ydl.extract_info(youtube_url, download=False)
|
110 |
-
|
111 |
-
video_path = f'downloaded_video.mp4'
|
112 |
|
113 |
# Check if video already downloaded
|
114 |
if not os.path.exists(video_path):
|
|
|
7 |
from faster_whisper import WhisperModel
|
8 |
import spaces
|
9 |
|
10 |
+
|
11 |
# Function to download YouTube audio
|
12 |
def download_youtube_audio(url, output_path, preferred_quality="192"):
|
13 |
ydl_opts = {
|
14 |
+
'format': 'bestaudio/best',
|
15 |
'postprocessors': [{
|
16 |
'key': 'FFmpegExtractAudio',
|
17 |
'preferredcodec': 'mp3',
|
18 |
'preferredquality': preferred_quality,
|
19 |
}],
|
20 |
+
'outtmpl': output_path
|
21 |
}
|
22 |
|
23 |
try:
|
|
|
33 |
|
34 |
except yt_dlp.utils.DownloadError as e:
|
35 |
print(f"Error downloading audio: {e}")
|
36 |
+
return None
|
37 |
|
38 |
# Function to transcribe audio using WhisperModel
|
39 |
def transcribe(path, model_name):
|
|
|
43 |
return segments
|
44 |
|
45 |
# Function to process segments and convert them into a DataFrame
|
|
|
46 |
def process_segments(segments):
|
47 |
result = {}
|
48 |
print("Processing...")
|
|
|
60 |
return df
|
61 |
|
62 |
# Gradio interface functions
|
63 |
+
def generate_transcript(youtube_url, model_name="distil-large-v3"):
|
64 |
+
path = "downloaded_audio.mp3"
|
|
|
65 |
download_youtube_audio(youtube_url, path)
|
66 |
segments = transcribe(path, model_name)
|
67 |
df = process_segments(segments)
|
|
|
99 |
# Define download options
|
100 |
ydl_opts = {
|
101 |
'format': 'mp4',
|
102 |
+
'outtmpl': 'downloaded_video.mp4',
|
103 |
'quiet': True
|
104 |
}
|
105 |
|
106 |
# Extract video ID to check if already downloaded
|
107 |
with yt_dlp.YoutubeDL({'quiet': True}) as ydl:
|
108 |
info_dict = ydl.extract_info(youtube_url, download=False)
|
109 |
+
video_path = 'downloaded_video.mp4'
|
|
|
110 |
|
111 |
# Check if video already downloaded
|
112 |
if not os.path.exists(video_path):
|