Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pytube | |
from transformers import pipeline | |
# Initialize pipelines | |
asr = pipeline("automatic-speech-recognition", model="openai/whisper-base", chunk_length_s=30) | |
summarizer = pipeline("summarization", model="facebook/bart-large-cnn") | |
def summarize_youtube(url): | |
# Download audio | |
yt = pytube.YouTube(url) | |
stream = yt.streams.filter(only_audio=True).first() | |
stream.download(filename="audio.mp3") | |
# Transcribe | |
result = asr("audio.mp3") | |
transcript = result["text"] | |
# Summarize | |
summary = summarizer(transcript, max_length=150, min_length=50, do_sample=False)[0]["summary_text"] | |
# Embed video | |
v_id = url.split("v=")[-1] | |
embed_html = f'<iframe width="560" height="315" src="https://www.youtube.com/embed/{v_id}" frameborder="0" allowfullscreen></iframe>' | |
return embed_html, transcript, summary | |
# Build Gradio app | |
with gr.Blocks() as demo: | |
gr.Markdown("## 🎓 Multi‑lingual YouTube Summarizer (Hindi / Hinglish / English)") | |
url_input = gr.Textbox(label="YouTube URL") | |
vid, txt, summ = gr.HTML(), gr.Textbox(label="Transcript"), gr.Textbox(label="Summary") | |
btn = gr.Button("Summarize") | |
btn.click(summarize_youtube, inputs=url_input, outputs=[vid, txt, summ]) | |
demo.launch() | |