import gradio as gr import whisper import os model = whisper.load_model("tiny") # main processing def main(URL): video_path = youtube_dl(URL) text = transcript(video_path) return text # Transcribe text using Whisper def transcript(video_path): result = model.transcribe(video_path) return result["text"] # Download the video def youtube_dl(URL): # Download the video os.system(f"yt-dlp -f best -v {URL} -o target.mp4") # Path of downloaded video video_path = os.path.join(os.path.dirname(__file__), "target.mp4") return video_path with gr.Blocks() as demo: gr.Markdown( """ # YouTube video transcription app Enter the YouTube URL, press the button, and it will transcribe the video. """ ) with gr.Row(): with gr.Column(): with gr.Row(): url = gr.Textbox(placeholder = 'Youtube video URL', label = 'URL') with gr.Row(): transcribe_btn = gr.Button('Transcribe') with gr.Column(): outputs = gr.Textbox(placeholder = 'Transcription of the video', label = 'Transcription') transcribe_btn.click(fn = main, inputs = url, outputs = outputs ) if __name__ == "__main__": demo.launch()