themanas021's picture
Update app.py
2d1fd8c
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import speech_recognition as sr
import moviepy.editor as mp
def summarize_youtube_video(link):
try:
# Download and convert the YouTube video to audio
video = mp.VideoFileClip(link)
video.audio.write_audiofile("audio.wav")
# Convert speech to text using Google Web Speech API
recognizer = sr.Recognizer()
with sr.AudioFile("audio.wav") as source:
audio = recognizer.record(source)
transcript = recognizer.recognize_google(audio)
checkpoint = "facebook/bart-large-cnn"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSeq2SeqLM.from_pretrained(checkpoint)
inputs = tokenizer(transcript,
max_length=1024,
truncation=True,
return_tensors="pt")
summary_ids = model.generate(inputs["input_ids"])
summary = tokenizer.batch_decode(summary_ids,
skip_special_tokens=True,
clean_up_tokenization_spaces=False)
return summary[0]
except Exception as e:
return "SummarizationError: Could not generate a summary"
# Define the input and output components for Gradio
inputs = gr.inputs.Textbox(label="YouTube Video Link")
outputs = gr.outputs.Textbox()
# Create the Gradio interface
gr.Interface(fn=summarize_youtube_video, inputs=inputs, outputs=outputs, title="YouTube Video Summarizer").launch(debug=True)