Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -10,6 +10,109 @@ import spaces
|
|
10 |
import pytube
|
11 |
import librosa
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
def extract_audio(video_path):
|
14 |
video = mp.VideoFileClip(video_path)
|
15 |
audio = video.audio
|
@@ -38,7 +141,9 @@ def generate_subtitles(audio_path):
|
|
38 |
return [{"start": 0, "end": len(audio_input) / 16000, "text": transcription[0]}]
|
39 |
|
40 |
def translate_subtitles(subtitles, target_language):
|
41 |
-
|
|
|
|
|
42 |
translated_subtitles = []
|
43 |
for segment in subtitles:
|
44 |
translated_text = translator.translate(segment["text"])
|
@@ -99,7 +204,7 @@ iface = gr.Interface(
|
|
99 |
inputs=[
|
100 |
gr.Video(label="Upload Video"),
|
101 |
gr.Textbox(label="YouTube Link"),
|
102 |
-
gr.Dropdown(choices=
|
103 |
],
|
104 |
outputs=gr.Video(label="Processed Video"),
|
105 |
title="Video Subtitle Translator",
|
|
|
10 |
import pytube
|
11 |
import librosa
|
12 |
|
13 |
+
# Add the LANGUAGES dictionary
|
14 |
+
LANGUAGES = {
|
15 |
+
"en": "eng",
|
16 |
+
"zh": "zho",
|
17 |
+
"de": "deu",
|
18 |
+
"es": "spa",
|
19 |
+
"ru": "rus",
|
20 |
+
"ko": "kor",
|
21 |
+
"fr": "fra",
|
22 |
+
"ja": "jpn",
|
23 |
+
"pt": "por",
|
24 |
+
"tr": "tur",
|
25 |
+
"pl": "pol",
|
26 |
+
"ca": "cat",
|
27 |
+
"nl": "nld",
|
28 |
+
"ar": "ara",
|
29 |
+
"sv": "swe",
|
30 |
+
"it": "ita",
|
31 |
+
"id": "ind",
|
32 |
+
"hi": "hin",
|
33 |
+
"fi": "fin",
|
34 |
+
"vi": "vie",
|
35 |
+
"iw": "heb",
|
36 |
+
"uk": "ukr",
|
37 |
+
"el": "ell",
|
38 |
+
"ms": "msa",
|
39 |
+
"cs": "ces",
|
40 |
+
"ro": "ron",
|
41 |
+
"da": "dan",
|
42 |
+
"hu": "hun",
|
43 |
+
"ta": "tam",
|
44 |
+
"no": "nor",
|
45 |
+
"th": "tha",
|
46 |
+
"ur": "urd",
|
47 |
+
"hr": "hrv",
|
48 |
+
"bg": "bul",
|
49 |
+
"lt": "lit",
|
50 |
+
"la": "lat",
|
51 |
+
"mi": "mri",
|
52 |
+
"ml": "mal",
|
53 |
+
"cy": "cym",
|
54 |
+
"sk": "slk",
|
55 |
+
"te": "tel",
|
56 |
+
"fa": "fas",
|
57 |
+
"lv": "lav",
|
58 |
+
"bn": "ben",
|
59 |
+
"sr": "srp",
|
60 |
+
"az": "aze",
|
61 |
+
"sl": "slv",
|
62 |
+
"kn": "kan",
|
63 |
+
"et": "est",
|
64 |
+
"mk": "mkd",
|
65 |
+
"br": "bre",
|
66 |
+
"eu": "eus",
|
67 |
+
"is": "isl",
|
68 |
+
"hy": "hye",
|
69 |
+
"ne": "nep",
|
70 |
+
"mn": "mon",
|
71 |
+
"bs": "bos",
|
72 |
+
"kk": "kaz",
|
73 |
+
"sq": "sqi",
|
74 |
+
"sw": "swa",
|
75 |
+
"gl": "glg",
|
76 |
+
"mr": "mar",
|
77 |
+
"pa": "pan",
|
78 |
+
"si": "sin",
|
79 |
+
"km": "khm",
|
80 |
+
"sn": "sna",
|
81 |
+
"yo": "yor",
|
82 |
+
"so": "som",
|
83 |
+
"af": "afr",
|
84 |
+
"oc": "oci",
|
85 |
+
"ka": "kat",
|
86 |
+
"be": "bel",
|
87 |
+
"tg": "tgk",
|
88 |
+
"sd": "snd",
|
89 |
+
"gu": "guj",
|
90 |
+
"am": "amh",
|
91 |
+
"yi": "yid",
|
92 |
+
"lo": "lao",
|
93 |
+
"uz": "uzb",
|
94 |
+
"fo": "fao",
|
95 |
+
"ht": "hat",
|
96 |
+
"ps": "pus",
|
97 |
+
"tk": "tuk",
|
98 |
+
"nn": "nno",
|
99 |
+
"mt": "mlt",
|
100 |
+
"sa": "san",
|
101 |
+
"lb": "ltz",
|
102 |
+
"my": "mya",
|
103 |
+
"bo": "bod",
|
104 |
+
"tl": "tgl",
|
105 |
+
"mg": "mlg",
|
106 |
+
"as": "asm",
|
107 |
+
"tt": "tat",
|
108 |
+
"haw": "haw",
|
109 |
+
"ln": "lin",
|
110 |
+
"ha": "hau",
|
111 |
+
"ba": "bak",
|
112 |
+
"jw": "jav",
|
113 |
+
"su": "sun",
|
114 |
+
}
|
115 |
+
|
116 |
def extract_audio(video_path):
|
117 |
video = mp.VideoFileClip(video_path)
|
118 |
audio = video.audio
|
|
|
141 |
return [{"start": 0, "end": len(audio_input) / 16000, "text": transcription[0]}]
|
142 |
|
143 |
def translate_subtitles(subtitles, target_language):
|
144 |
+
# Use the LANGUAGES dictionary to get the full language name
|
145 |
+
target_lang_code = next((k for k, v in LANGUAGES.items() if v == target_language), target_language)
|
146 |
+
translator = GoogleTranslator(source='auto', target=target_lang_code)
|
147 |
translated_subtitles = []
|
148 |
for segment in subtitles:
|
149 |
translated_text = translator.translate(segment["text"])
|
|
|
204 |
inputs=[
|
205 |
gr.Video(label="Upload Video"),
|
206 |
gr.Textbox(label="YouTube Link"),
|
207 |
+
gr.Dropdown(choices=list(LANGUAGES.values()), label="Target Language")
|
208 |
],
|
209 |
outputs=gr.Video(label="Processed Video"),
|
210 |
title="Video Subtitle Translator",
|