File size: 1,275 Bytes
4d4b8ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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()