import gradio as gr import argparse # import os # import torch # from time import sleep # from tqdm import tqdm # from lang_list import union_language_dict # # import pyperclip # from pytube import YouTube # import re # from PIL import Image # import urllib.request # NUMBER = 100 # DEVICE = "cuda" if torch.cuda.is_available() else "cpu" # DEVICE = "cpu" # DOWNLOAD = True # SLICE_AUDIO = True # TRANSCRIBE_AUDIO = True # CONCATENATE_TRANSCRIPTIONS = True # TRANSLATE_TRANSCRIPTIONS = True # ADD_SUBTITLES_TO_VIDEO = True # REMOVE_FILES = True # if DEVICE == "cpu": # # I supose that I am on huggingface server # # Get RAM space # ram = int(os.popen("free -m | grep Mem | awk '{print $2}'").read()) # factor = 1 # SECONDS = int(ram*factor) # print(f"RAM: {ram}, SECONDS: {SECONDS}") # else: # # I supose that I am on my computer # # Get VRAM space # SECONDS = 300 # YOUTUBE = "youtube" # TWITCH = "twitch" # ERROR = "error" # try: # # Asumiendo que tienes la imagen en una carpeta 'assets' de tu proyecto # subtify_logo = Image.open("assets/subtify_logo-scaled.webp") # subtify_logo_width, subtify_logo_height = subtify_logo.size # factor = 4 # new_width = subtify_logo_width // factor # new_height = subtify_logo_height // factor # except Exception as e: # print(f"No se pudo cargar la imagen: {e}") # # Valores predeterminados en caso de error # new_width = 200 # new_height = 100 # BACKGROUND_COLOR = "#0b0f19" # BUTTON_COLOR = "#47515f" # SVG_COLOR = "#f3f4f6" # PANEL_COLOR = "#101827" # PRIMARY_TEXT_COLOR = "#f3f4f6" # SUBDUED_TEXT_COLOR = "#59616f" # BACKGROUND_PRIMARY_COLOR = "#1f2937" # BACKGROUND_SECONDARY_COLOR = "#101827" # PRIMARY_BODER_COLOR = "#323c4c" # BLOCK_TITLE_TEXT_COLOR = "#dfe2e6" # INPUT_BACKGROUND_COLOR = "#2f3947" # INPUT_BORDER_COLOR = "#313b4b" # INPUT_PLACEHOLDER_COLOR = "#616977" # ERROR_BACKGROUND_COLOR = "#101827" # ERROR_TEXT_COLOR = "#f7f2f2" # ERROR_BORDER_COLOR = "#9b3339" # BUTTON_SECONDARY_BACKGROUND_COLOR = "#434d5c" # BUTTON_SECONDARY_BORDER_COLOR = "#444d5b" # BUTTON_SECONDARY_TEXT_COLOR = "#c5c9cc" # RED = "#ff0000" # GREEN = "#00ff00" # BLUE = "#0000ff" # html_social_media = f''' #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# ''' # html_subtify_logo = f""" #
# #
# """ # html_buy_me_a_coffe = ''' #
# # buy me a coffe # #
# ''' # language_dict = union_language_dict() # def subtify_no_ui(): # number_works = 6 # progress_bar = tqdm(total=number_works, desc="Subtify") # folder_chunck = "chunks" # folder_concatenated = "concatenated_transcriptions" # folder_translated_transcriptions = "translated_transcriptions" # if not os.path.exists(folder_chunck): # os.makedirs(folder_chunck) # if not os.path.exists(folder_concatenated): # os.makedirs(folder_concatenated) # if not os.path.exists(folder_translated_transcriptions): # os.makedirs(folder_translated_transcriptions) # ################## Download video and audio ################## # if DOWNLOAD: # print('*'*NUMBER) # # url = "https://www.twitch.tv/videos/1936119752" # twitch Rob Mula 2 horas # # url = "https://www.youtube.com/watch?v=yX5EJf4R77s" # ✅ debate, varios hablantes, 3 minutos # # url = "https://www.youtube.com/watch?v=cgx0QnXo1OU" # ✅ smart home, un solo hablante, 4:42 minutos # # url = "https://www.youtube.com/watch?v=dgOBxhi19T8" # ✅ rob mula, muchos hablantes, 4:28 minutos # # url = "https://www.youtube.com/watch?v=Coj72EzmX20" # rob mula, un solo hablante, 16 minutos # # url = "https://www.youtube.com/watch?v=Tqth0fKo0_g" # Conversación short # url = "https://www.youtube.com/watch?v=h9xPrgTYP_0" # Letitia 40 segundos # print(f"Downloading video and audio from {url}") # python_file = "download.py" # command = f"python {python_file} {url}" # os.system(command) # sleep(1) # print('*'*NUMBER) # print("\n\n") # progress_bar.update(1) # ################## Slice audio ################## # if SLICE_AUDIO: # print('*'*NUMBER) # print("Slicing audio") # python_file = "slice_audio.py" # audio = "audios/download_audio.mp3" # command = f"python {python_file} {audio} {SECONDS}" # os.system(command) # print('*'*NUMBER) # print("\n\n") # progress_bar.update(1) # ################# Transcript slices ################## # if TRANSCRIBE_AUDIO: # print('*'*NUMBER) # print("Transcript slices") # chunks_folder = "chunks" # if not os.path.exists(chunks_folder): # os.makedirs(chunks_folder) # python_file = "transcribe.py" # chunks_file = "chunks/output_files.txt" # number_of_speakers = 10 # source_languaje = "English" # command = f"python {python_file} {chunks_file} {source_languaje} {number_of_speakers} {DEVICE}" # os.system(command) # if REMOVE_FILES: # with open(chunks_file, 'r') as f: # files = f.read().splitlines() # for file in files: # audios_extension = "mp3" # file_name, _ = file.split(".") # _, file_name = file_name.split("/") # vocal = f'{chunks_folder}/{file_name}.{audios_extension}' # command = f"rm {vocal}" # os.system(command) # print('*'*NUMBER) # print("\n\n") # progress_bar.update(1) # ################## Concatenate transcriptions ################## # if CONCATENATE_TRANSCRIPTIONS: # print('*'*NUMBER) # print("Concatenate transcriptions") # folder_concatenated = "concatenated_transcriptions" # if not os.path.exists(folder_concatenated): # os.makedirs(folder_concatenated) # chunck_file = "chunks/output_files.txt" # python_file = "concat_transcriptions.py" # command = f"python {python_file} {chunck_file} {SECONDS}" # os.system(command) # if REMOVE_FILES: # with open(chunck_file, 'r') as f: # files = f.read().splitlines() # for file in files: # file_name, _ = file.split(".") # _, file_name = file_name.split("/") # transcriptions_folder = "transcriptions" # transcription_extension = "srt" # command = f"rm {transcriptions_folder}/{file_name}.{transcription_extension}" # os.system(command) # print('*'*NUMBER) # print("\n\n") # progress_bar.update(1) # ################## Translate transcription ################## # target_languaje = "Español" # if TRANSLATE_TRANSCRIPTIONS: # print('*'*NUMBER) # print("Translate transcription") # transcription_file = "concatenated_transcriptions/download_audio.srt" # source_languaje = "English" # python_file = "translate_transcriptions.py" # command = f"python {python_file} {transcription_file} --source_languaje {source_languaje} --target_languaje {target_languaje} --device {DEVICE}" # os.system(command) # if REMOVE_FILES: # if os.path.exists(transcription_file): # command = f"rm {transcription_file}" # os.system(command) # print('*'*NUMBER) # print("\n\n") # progress_bar.update(1) # ################## Add subtitles to video ################## # if ADD_SUBTITLES_TO_VIDEO: # print('*'*NUMBER) # print("Add subtitles to video") # python_file = "add_subtitles_to_video.py" # transcription_file = f"translated_transcriptions/download_audio_{target_languaje}.srt" # input_video_file = "videos/download_video.mp4" # input_audio_file = "audios/download_audio.mp3" # command = f"python {python_file} {transcription_file} {input_video_file} {input_audio_file}" # os.system(command) # if REMOVE_FILES: # if os.path.exists(input_video_file): # command = f"rm {input_video_file}" # os.system(command) # if os.path.exists(input_audio_file): # command = f"rm {input_audio_file}" # os.system(command) # if os.path.exists(transcription_file): # command = f"rm {transcription_file}" # os.system(command) # if os.path.exists("chunks/output_files.txt"): # command = f"rm chunks/output_files.txt" # os.system(command) # if os.path.exists("chunks"): # command = f"rm -r chunks" # os.system(command) # if os.path.exists("vocals/speakers.txt"): # command = f"rm vocals/speakers.txt" # os.system(command) # print('*'*NUMBER) # print("\n\n") # progress_bar.update(1) # def remove_all_files(): # if os.path.exists("audios"): # command = f"rm -r audios" # os.system(command) # if os.path.exists("chunks"): # command = f"rm -r chunks" # os.system(command) # if os.path.exists("concatenated_transcriptions"): # command = f"rm -r concatenated_transcriptions" # os.system(command) # if os.path.exists("transcriptions"): # command = f"rm -r transcriptions" # os.system(command) # if os.path.exists("translated_transcriptions"): # command = f"rm -r translated_transcriptions" # os.system(command) # if os.path.exists("videos"): # command = f"rm -r videos" # os.system(command) # if os.path.exists("vocals"): # command = f"rm -r vocals" # os.system(command) # # def paste_url_from_clipboard(): # # return pyperclip.paste() # def reset_frontend(): # visible = False # return ( # "", # gr.Image(visible=visible), # gr.Dropdown(visible=visible), # gr.Dropdown(visible=visible), # gr.Dropdown(visible=visible), # gr.Accordion(visible=visible), # gr.Button(visible=visible), # gr.Textbox(visible=visible), # gr.Textbox(visible=visible), # gr.Textbox(visible=visible), # gr.Textbox(visible=visible), # gr.Textbox(visible=visible), # gr.Textbox(visible=visible), # gr.Textbox(visible=visible), # gr.Textbox(visible=visible), # gr.Textbox(visible=visible), # gr.Textbox(visible=visible), # gr.Textbox(visible=visible), # gr.Video(visible=visible), # ) # def show_auxiliar_block1(): # return gr.Textbox(value="URL checked", visible=False) # def get_youtube_thumbnail(url): # yt = YouTube(url) # thumbnail_url = yt.thumbnail_url # return thumbnail_url # def is_valid_youtube_url(url): # # This regular expression should match the following YouTube URL formats: # # - https://youtube.com/watch?v=video_id # # - https://www.youtube.com/watch?v=video_id # # - https://youtu.be/video_id # patron_youtube = r'(https?://)?(www\.)?(youtube\.com/watch\?v=|youtu\.be/)[\w-]+' # return bool(re.match(patron_youtube, url)) # def is_valid_twitch_url(url): # # This regular expression should match the following Twitch URL formats: # # - https://twitch.tv/channel_name # # - https://www.twitch.tv/channel_name # # - https://twitch.tv/videos/video_id # twitch_pattern = r'(https?://)?(www\.)?twitch\.tv/(videos/\d+|\w+)' # return bool(re.match(twitch_pattern, url)) # def is_valid_url(url): # num_speaker = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] # source_languaje = gr.Dropdown(visible=True, label="Source languaje", show_label=True, value="English", choices=language_dict, scale=1, interactive=True) # target_languaje = gr.Dropdown(visible=True, label="Target languaje", show_label=True, value="Español", choices=language_dict, scale=1, interactive=True) # advanced_setings = gr.Accordion(visible=True) # number_of_speakers = gr.Dropdown(visible=True, label="Number of speakers", show_label=True, value=10, choices=num_speaker, scale=1, interactive=True) # subtify_button = gr.Button(size="lg", value="subtify", min_width="10px", scale=0, visible=True) # # Youtube # if "youtube" in url.lower() or "youtu.be" in url.lower(): # if is_valid_youtube_url(url): # thumbnail = get_youtube_thumbnail(url) # if thumbnail: # return ( # gr.Image(value=thumbnail, visible=True, show_download_button=False, container=False), # source_languaje, # target_languaje, # advanced_setings, # number_of_speakers, # subtify_button, # ) # else: # return ( # gr.Image(value="assets/youtube-no-thumbnails.webp", visible=True, show_download_button=False, container=False), # source_languaje, # target_languaje, # advanced_setings, # number_of_speakers, # subtify_button, # ) # # Twitch # elif "twitch" in url.lower() or "twitch.tv" in url.lower(): # if is_valid_twitch_url(url): # return ( # gr.Image(value="assets/twitch.webp", visible=True, show_download_button=False, container=False), # source_languaje, # target_languaje, # advanced_setings, # number_of_speakers, # subtify_button, # ) # # Error # visible = False # image = gr.Image(value="assets/youtube_error.webp", visible=visible, show_download_button=False, container=False) # source_languaje = gr.Dropdown(visible=visible, label="Source languaje", show_label=True, value="English", choices=language_dict, scale=1, interactive=True) # target_languaje = gr.Dropdown(visible=visible, label="Target languaje", show_label=True, value="Español", choices=language_dict, scale=1, interactive=True) # advanced_setings = gr.Accordion(visible=visible) # number_of_speakers = gr.Dropdown(visible=visible, label="Number of speakers", show_label=True, value=10, choices=num_speaker, scale=1, interactive=True) # subtify_button = gr.Button(size="lg", value="subtify", min_width="10px", scale=0, visible=visible) # return ( # image, # source_languaje, # target_languaje, # advanced_setings, # number_of_speakers, # subtify_button, # ) # def change_visibility_texboxes(): # return ( # gr.Textbox(value="Done"), # gr.Textbox(visible=True), # gr.Textbox(visible=True), # gr.Textbox(visible=True), # gr.Textbox(visible=True), # gr.Textbox(visible=True), # gr.Textbox(visible=True), # gr.Textbox(visible=False), # ) # def get_audio_and_video_from_video(url): # print('*'*NUMBER) # print(f"Downloading video and audio from {url}") # audios_folder = "audios" # videos_folder = "videos" # if not os.path.exists(audios_folder): # os.makedirs(audios_folder) # if not os.path.exists(videos_folder): # os.makedirs(videos_folder) # python_file = "download.py" # command = f"python {python_file} {url}" # os.system(command) # sleep(1) # audio = "audios/download_audio.mp3" # video = "videos/download_video.mp4" # return ( # gr.Textbox(value="Ok"), # gr.Textbox(value=audio), # gr.Textbox(value=video), # ) # def slice_audio(audio_path): # print('*'*NUMBER) # print("Slicing audio") # folder_vocals = "vocals" # folder_chunck = "chunks" # if not os.path.exists(folder_vocals): # os.makedirs(folder_vocals) # if not os.path.exists(folder_chunck): # os.makedirs(folder_chunck) # python_file = "slice_audio.py" # command = f"python {python_file} {audio_path} {SECONDS}" # os.system(command) # return ( # gr.Textbox(value="Ok") # ) # def trascribe_audio(source_languaje, number_of_speakers): # print('*'*NUMBER) # print("Transcript slices") # folder_chunks = "chunks" # python_file = "transcribe.py" # chunks_file = "chunks/output_files.txt" # command = f"python {python_file} {chunks_file} {source_languaje} {number_of_speakers} {DEVICE}" # os.system(command) # with open(chunks_file, 'r') as f: # files = f.read().splitlines() # for file in files: # audios_extension = "mp3" # file_name, _ = file.split(".") # _, file_name = file_name.split("/") # vocal = f'{folder_chunks}/{file_name}.{audios_extension}' # command = f"rm {vocal}" # os.system(command) # return ( # gr.Textbox(value="Ok") # ) # def concatenate_transcriptions(): # print('*'*NUMBER) # print("Concatenate transcriptions") # folder_concatenated = "concatenated_transcriptions" # if not os.path.exists(folder_concatenated): # os.makedirs(folder_concatenated) # chunck_file = "chunks/output_files.txt" # python_file = "concat_transcriptions.py" # command = f"python {python_file} {chunck_file} {SECONDS}" # os.system(command) # with open(chunck_file, 'r') as f: # files = f.read().splitlines() # for file in files: # file_name, _ = file.split(".") # _, file_name = file_name.split("/") # transcriptions_folder = "transcriptions" # transcription_extension = "srt" # command = f"rm {transcriptions_folder}/{file_name}.{transcription_extension}" # os.system(command) # audio_transcribed = "concatenated_transcriptions/download_audio.srt" # return ( # gr.Textbox(value="Ok"), # gr.Textbox(value=audio_transcribed), # ) # def translate_transcription(original_audio_transcribed_path, source_languaje, target_languaje): # print('*'*NUMBER) # print("Translate transcription") # folder_translated_transcriptions = "translated_transcriptions" # if not os.path.exists(folder_translated_transcriptions): # os.makedirs(folder_translated_transcriptions) # python_file = "translate_transcriptions.py" # command = f"python {python_file} {original_audio_transcribed_path} --source_languaje {source_languaje} --target_languaje {target_languaje} --device {DEVICE}" # os.system(command) # translated_transcription = f"translated_transcriptions/download_audio_{target_languaje}.srt" # transcription_file = "concatenated_transcriptions/download_audio.srt" # if os.path.exists(transcription_file): # command = f"rm {transcription_file}" # os.system(command) # return ( # gr.Textbox(value="Ok"), # gr.Textbox(value=translated_transcription) # ) # def add_translated_subtitles_to_video(original_video_path, original_audio_path, original_audio_translated_path): # print('*'*NUMBER) # print("Add subtitles to video") # python_file = "add_subtitles_to_video.py" # command = f"python {python_file} {original_audio_translated_path} {original_video_path} {original_audio_path}" # os.system(command) # if os.path.exists(original_video_path): # command = f"rm {original_video_path}" # os.system(command) # if os.path.exists(original_audio_path): # command = f"rm {original_audio_path}" # os.system(command) # if os.path.exists(original_audio_translated_path): # command = f"rm {original_audio_translated_path}" # os.system(command) # if os.path.exists("chunks/output_files.txt"): # command = f"rm chunks/output_files.txt" # os.system(command) # subtitled_video = "videos/download_video_with_subtitles.mp4" # visible = False # return ( # gr.Video(value=subtitled_video, visible=True), # gr.Textbox(value="Ok", visible=visible), # gr.Textbox(value="Ok"), # ) # def hide_textbobes_progress_info(): # visible = False # return ( # gr.Textbox(value="Waiting", visible=visible), # gr.Textbox(value="Waiting", visible=visible), # gr.Textbox(value="Waiting", visible=visible), # gr.Textbox(value="Waiting", visible=visible), # gr.Textbox(value="Waiting", visible=visible), # gr.Textbox(value="Waiting", visible=visible), # ) def subtify(): with gr.Blocks( theme=gr.themes.Default().set ( # body_background_fill=BACKGROUND_COLOR, # body_background_fill_dark=BACKGROUND_COLOR, # body_text_color=PRIMARY_TEXT_COLOR, # body_text_color_dark=PRIMARY_TEXT_COLOR, # body_text_color_subdued=SUBDUED_TEXT_COLOR, # body_text_color_subdued_dark=SUBDUED_TEXT_COLOR, # background_fill_primary=BACKGROUND_PRIMARY_COLOR, # background_fill_primary_dark=BACKGROUND_PRIMARY_COLOR, # background_fill_secondary=BACKGROUND_SECONDARY_COLOR, # background_fill_secondary_dark=BACKGROUND_SECONDARY_COLOR, # border_color_primary=PRIMARY_BODER_COLOR, # border_color_primary_dark=PRIMARY_BODER_COLOR, # block_background_fill=BACKGROUND_PRIMARY_COLOR, # block_background_fill_dark=BACKGROUND_PRIMARY_COLOR, # block_title_text_color=BLOCK_TITLE_TEXT_COLOR, # block_title_text_color_dark=BLOCK_TITLE_TEXT_COLOR, # input_background_fill=INPUT_BACKGROUND_COLOR, # input_background_fill_dark=INPUT_BACKGROUND_COLOR, # input_border_color=INPUT_BORDER_COLOR, # input_border_color_dark=INPUT_BORDER_COLOR, # input_placeholder_color=INPUT_PLACEHOLDER_COLOR, # input_placeholder_color_dark=INPUT_PLACEHOLDER_COLOR, # error_background_fill=ERROR_BACKGROUND_COLOR, # error_background_fill_dark=ERROR_BACKGROUND_COLOR, # error_text_color=ERROR_TEXT_COLOR, # error_text_color_dark=ERROR_TEXT_COLOR, # error_border_color=ERROR_BORDER_COLOR, # error_border_color_dark=ERROR_BORDER_COLOR, # button_secondary_background_fill=BUTTON_SECONDARY_BACKGROUND_COLOR, # button_secondary_background_fill_dark=BUTTON_SECONDARY_BACKGROUND_COLOR, # button_secondary_border_color=BUTTON_SECONDARY_BORDER_COLOR, # button_primary_background_fill_dark=BUTTON_SECONDARY_BORDER_COLOR, # button_secondary_text_color=BUTTON_SECONDARY_TEXT_COLOR, # button_secondary_text_color_dark=BUTTON_SECONDARY_TEXT_COLOR, ) ) as demo: num_speaker = [] for i in range(100, 0, -1): num_speaker.append(i) # Layout # gr.HTML(html_social_media) gr.HTML("

Subtify

") # gr.HTML(html_subtify_logo) # with gr.Row(variant="panel"): # url_textbox = gr.Textbox(placeholder="Add video URL here and wait a moment", label="Video URL", elem_id="video_url", scale=1, interactive=True) # # paste_button = gr.Button(size="sm", icon="icons/paste.svg", value="paste", min_width="10px", scale=0) # delete_button = gr.Button(size="sm", icon="icons/delete.svg", value="clear", min_width="10px", scale=0) # visible = False # auxiliar_block1 = gr.Textbox(label="Auxiliar block 1", elem_id="auxiliar_block1", interactive=False, visible=visible) # with gr.Row(equal_height=False): # image = gr.Image(visible=visible, scale=1) # with gr.Column(): # with gr.Row(): # source_languaje = gr.Dropdown(visible=visible, label="Source languaje", show_label=True, value="English", choices=language_dict, scale=1, interactive=True, info="Language of the video") # target_languaje = gr.Dropdown(visible=visible, label="Target languaje", show_label=True, value="Español", choices=language_dict, scale=1, interactive=True, info="Language to translate the subtitles") # with gr.Accordion("Advanced settings", open=False, visible=visible) as Advanced_setings: # number_of_speakers = gr.Dropdown(visible=visible, label="Number of speakers", show_label=True, value=10, choices=num_speaker, scale=1, interactive=True, info="Number of speakers in the video, if you don't know, select 10") # subtify_button = gr.Button(size="lg", value="subtify", min_width="10px", scale=0, visible=visible) # auxiliar_block2 = gr.Textbox(placeholder="Waiting", label="Auxiliar block 2", elem_id="auxiliar_block2", interactive=False, visible=visible) # with gr.Row(): # video_donwloaded_progress_info = gr.Textbox(placeholder="Waiting", label="Video download progress info", elem_id="video_donwloaded_progress_info", interactive=False, visible=visible) # video_sliced_progress_info = gr.Textbox(placeholder="Waiting", label="Video slice progress info", elem_id="video_sliced_progress_info", interactive=False, visible=visible) # video_transcribed_progress_info = gr.Textbox(placeholder="Waiting", label="Transcribe progress info", elem_id="video_transcribed_progress_info", interactive=False, visible=visible) # transcriptions_concatenated_progress_info = gr.Textbox(placeholder="Waiting", label="Concatenate progress info", elem_id="transcriptions_concatenated_progress_info", interactive=False, visible=visible) # video_translated_progress_info = gr.Textbox(placeholder="Waiting", label="Translate progress info", elem_id="transcription_translated_progress_info", interactive=False, visible=visible) # video_subtitled_progress_info = gr.Textbox(placeholder="Waiting", label="Video subtitle progress info", elem_id="video_subtitled_progress_info", interactive=False, visible=visible) # original_audio_path = gr.Textbox(label="Original audio path", elem_id="original_audio_path", visible=visible) # original_video_path = gr.Textbox(label="Original video path", elem_id="original_video_path", visible=visible) # original_audio_transcribed_path = gr.Textbox(label="Original audio transcribed", elem_id="original_audio_transcribed", visible=visible) # original_audio_translated_path = gr.Textbox(label="Original audio translated", elem_id="original_audio_translated", visible=visible) # subtitled_video = gr.Video(label="Subtitled video", elem_id="subtitled_video", visible=visible, interactive=visible) # auxiliar_block3 = gr.Textbox(placeholder="Waiting", label="Auxiliar block 3", elem_id="auxiliar_block3", interactive=False, visible=visible) # Events # paste_button.click(fn=paste_url_from_clipboard, outputs=url_textbox) # delete_button.click( # fn=reset_frontend, # outputs=[ # url_textbox, # image, # source_languaje, # target_languaje, # Advanced_setings, # number_of_speakers, # subtify_button, # auxiliar_block2, # video_donwloaded_progress_info, # video_sliced_progress_info, # video_transcribed_progress_info, # transcriptions_concatenated_progress_info, # video_translated_progress_info, # video_subtitled_progress_info, # subtitled_video, # ] # ) # url_textbox.change( # fn=show_auxiliar_block1, # outputs=[auxiliar_block1] # ) # auxiliar_block1.change( # fn=is_valid_url, # inputs=url_textbox, # outputs=[image, source_languaje, target_languaje, Advanced_setings, number_of_speakers, subtify_button] # ) # subtify_button.click( # fn=change_visibility_texboxes, # outputs=[auxiliar_block2, video_donwloaded_progress_info, video_sliced_progress_info, video_transcribed_progress_info, transcriptions_concatenated_progress_info, video_translated_progress_info, video_subtitled_progress_info, auxiliar_block1] # ) # auxiliar_block2.change( # fn=get_audio_and_video_from_video, # inputs=[url_textbox], # outputs=[video_donwloaded_progress_info, original_audio_path, original_video_path] # ) # video_donwloaded_progress_info.change( # fn=slice_audio, # inputs=[original_audio_path], # outputs=[video_sliced_progress_info] # ) # video_sliced_progress_info.change( # fn=trascribe_audio, # inputs=[source_languaje, number_of_speakers], # outputs=[video_transcribed_progress_info] # ) # video_transcribed_progress_info.change( # fn=concatenate_transcriptions, # outputs=[transcriptions_concatenated_progress_info, original_audio_transcribed_path] # ) # transcriptions_concatenated_progress_info.change( # fn=translate_transcription, # inputs=[original_audio_transcribed_path, source_languaje, target_languaje], # outputs=[video_translated_progress_info, original_audio_translated_path] # ) # video_translated_progress_info.change( # fn=add_translated_subtitles_to_video, # inputs=[original_video_path, original_audio_path, original_audio_translated_path], # outputs=[subtitled_video, video_subtitled_progress_info, auxiliar_block3] # ) # auxiliar_block3.change( # fn=hide_textbobes_progress_info, # outputs=[video_donwloaded_progress_info, video_sliced_progress_info, video_transcribed_progress_info, transcriptions_concatenated_progress_info, video_translated_progress_info, video_subtitled_progress_info] # ) # gr.HTML(html_buy_me_a_coffe) demo.launch() if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--no_ui", action="store_true") parser.add_argument("--remove_all_files", action="store_true") args = parser.parse_args() if args.no_ui: subtify_no_ui() elif args.remove_all_files: remove_all_files() else: subtify()