File size: 1,570 Bytes
b4f6ea7
1fbb0da
b4f6ea7
 
1fbb0da
b4f6ea7
1fbb0da
b4f6ea7
 
 
 
 
1fbb0da
 
 
 
b4f6ea7
 
 
 
 
 
 
1fbb0da
b4f6ea7
1fbb0da
b4f6ea7
 
1fbb0da
b4f6ea7
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from faster_whisper import WhisperModel
from transformers import pipeline

# Load Faster-Whisper and BART model
print("Loading models...")
whisper_model = WhisperModel("base")  # You can use "tiny" if it's still too heavy
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")

def transcribe(audio_path):
    if audio_path is None:
        return "Please record some audio."
    
    segments, _ = whisper_model.transcribe(audio_path)
    transcription = " ".join([segment.text for segment in segments])
    return transcription

def summarize(text):
    if not text.strip():
        return "No transcription available to summarize."
    summary = summarizer(text, max_length=150, min_length=40, do_sample=False)
    return summary[0]['summary_text']

# Build Gradio UI
with gr.Blocks() as app:
    gr.Markdown("## πŸŽ™οΈ Real-Time Transcription & Summarization\nSpeak into your mic and generate a summary.")

    with gr.Row():
        audio_input = gr.Audio(type="filepath", label="🎧 Record Audio (Max ~120 sec)")
        transcription_output = gr.Textbox(label="πŸ“ Transcription", lines=6, interactive=False)

    transcribe_button = gr.Button("Transcribe")
    transcribe_button.click(fn=transcribe, inputs=audio_input, outputs=transcription_output)

    with gr.Row():
        summarize_button = gr.Button("Generate Summary")
        summary_output = gr.Textbox(label="πŸ“„ Summary", lines=6, interactive=False)

    summarize_button.click(fn=summarize, inputs=transcription_output, outputs=summary_output)

app.launch()