File size: 1,473 Bytes
5ac505a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
38
39
40
41
42
43
44
45
import gradio as gr
from transformers import pipeline

# Load Whisper pipeline (speech-to-text)
asr_pipe = pipeline(
    task="automatic-speech-recognition",
    model="openai/whisper-small",
    return_timestamps=True
)

# Load summarization pipeline
summarizer = pipeline("summarization", model="google/pegasus-cnn_dailymail")

# Function to transcribe and summarize
def transcribe_and_summarize(audio_file):
    if audio_file is None:
        return "Please upload an audio file.", ""
    
    # Transcription
    transcript = asr_pipe(audio_file)["text"]

    # Summarization (limit to 1024 tokens for safety)
    if len(transcript) > 1000:
        transcript = transcript[:1000]  # truncate long transcripts
    summary = summarizer(transcript, max_length=80, min_length=20, do_sample=False)[0]["summary_text"]
    
    return transcript, summary

# Gradio Interface
with gr.Blocks() as app:
    gr.Markdown("## 🎙️ Whisper ASR + Summary\nUpload or record audio to get a transcription and summary.")

    with gr.Row():
        audio_input = gr.Audio(type="filepath", label="Upload or Record Audio")
    
    with gr.Row():
        transcribe_btn = gr.Button("Transcribe & Summarize")
    
    with gr.Row():
        transcript_box = gr.Textbox(label="Transcription", lines=6)
        summary_box = gr.Textbox(label="Summary", lines=4)

    transcribe_btn.click(fn=transcribe_and_summarize, inputs=audio_input, outputs=[transcript_box, summary_box])

app.launch()