Spaces:
Runtime error
Runtime error
from ui import * | |
from file_name import * | |
from diarization import start_diarization | |
from transcribe import start_transcribe | |
from video_tool import convert_video_to_audio, add_subtitle_to_video | |
import gradio as gr | |
import re | |
import os | |
import utils | |
def prepare_input(input_file, start_time, end_time, lang, model_size, use_summary, progress=gr.Progress()): | |
gr.Info(ui_lang["progress_starting_process"]) | |
if input_file is None or not os.path.exists(input_file): | |
gr.Warning(ui_lang["input_video_warning"]) | |
return [None, None, [None, None]] | |
if validate_time_format(start_time) is False: | |
gr.Warning(ui_lang["start_time_warning"]) | |
return [None, None, [None, None]] | |
if validate_time_format(end_time) is False: | |
gr.Warning(ui_lang["end_time_warning"]) | |
return [None, None, [None, None]] | |
if lang is None: | |
gr.Warning(ui_lang["lang_radio_warning"]) | |
return [None, None, [None, None]] | |
if model_size is None: | |
gr.Warning(ui_lang["model_dropdown_warning"]) | |
return [None, None, [None, None]] | |
print(f"SOURCE: {input_file}") | |
print(f"AUDIO FILE: {audio_file}") | |
# Convert video to audio | |
progress(0.2, desc=ui_lang["progress_preparing_video"]) | |
convert_video_to_audio( | |
input_file, audio_file, start_time, end_time) | |
# Start diarization | |
progress(0.4, desc=ui_lang["progress_acquiring_diarization"]) | |
start_diarization(audio_file) | |
# Start transcribing | |
progress(0.6, desc=ui_lang["progress_transcribing_audio"]) | |
start_transcribe(input_file, lang, model_size, progress) | |
# Add subtitle to video | |
progress(0.8, desc=ui_lang["progress_add_subtitle"]) | |
add_subtitle_to_video(input_file, subtitle_file, | |
video_subtitle_file, start_time, end_time) | |
# Return video file link, transcribe string, transcribe.txt, subtitle.txt | |
transcribe_txt_list, _ = utils.read_transcribe_subtitle_file( | |
input_file, False) | |
transcribe_txt = "\n".join(transcribe_txt_list) | |
return [ | |
video_subtitle_file, | |
transcribe_txt, | |
[transcribe_file, subtitle_file] | |
] | |
def validate_time_format(input_string): | |
pattern = re.compile(r'^\d{2}:\d{2}:\d{2}$') | |
return pattern.match(input_string) is not None | |