Imsachinsingh00 commited on
Commit
f216530
Β·
1 Parent(s): b3d97d5

updated app.py

Browse files
Files changed (2) hide show
  1. app.py +35 -25
  2. requirements.txt +2 -1
app.py CHANGED
@@ -1,33 +1,43 @@
1
  import gradio as gr
 
2
  import torch
3
- from transformers import BertTokenizer, EncoderDecoderModel, pipeline
4
 
5
- # Load model and tokenizer
6
- model = EncoderDecoderModel.from_pretrained("imsachinsingh00/bert2bert-mts-summary")
7
- tokenizer = BertTokenizer.from_pretrained("imsachinsingh00/bert2bert-mts-summary")
8
 
9
- # Move to CUDA if available
10
- device = "cuda" if torch.cuda.is_available() else "cpu"
11
- model.to(device)
 
12
 
13
  # Summarization function
14
- def summarize_dialogue(dialogue):
15
- inputs = tokenizer(dialogue, return_tensors="pt", padding=True, truncation=True, max_length=512).to(device)
16
- summary_ids = model.generate(inputs.input_ids, max_length=64, num_beams=4, early_stopping=True)
17
- summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
18
  return summary
19
 
20
- # Gradio interface
21
- demo = gr.Interface(
22
- fn=summarize_dialogue,
23
- inputs=[
24
- gr.Textbox(lines=10, label="Doctor-Patient Dialogue"),
25
- gr.Audio(source="microphone", type="filepath", optional=True)
26
- ],
27
- outputs="text",
28
- title="Medical Dialogue Summarizer",
29
- description="Enter or speak a conversation. The model will summarize it."
30
- )
31
-
32
- if __name__ == "__main__":
33
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
+ from transformers import pipeline, BertTokenizer, EncoderDecoderModel
3
  import torch
 
4
 
5
+ # Load Whisper for speech-to-text
6
+ asr = pipeline("automatic-speech-recognition", model="openai/whisper-small")
 
7
 
8
+ # Load your fine-tuned summarization model
9
+ model_name = "Imsachinsingh00/bert2bert-mts-summary"
10
+ tokenizer = BertTokenizer.from_pretrained(model_name)
11
+ model = EncoderDecoderModel.from_pretrained(model_name).to("cuda" if torch.cuda.is_available() else "cpu")
12
 
13
  # Summarization function
14
+ def summarize_text(text):
15
+ inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=512).to(model.device)
16
+ outputs = model.generate(**inputs, max_length=64)
17
+ summary = tokenizer.decode(outputs[0], skip_special_tokens=True)
18
  return summary
19
 
20
+ # Pipeline: audio β†’ transcription
21
+ def transcribe(audio):
22
+ return asr(audio)["text"]
23
+
24
+ # App UI
25
+ with gr.Blocks() as demo:
26
+ gr.Markdown("## 🩺 Medical Dialogue Summarizer")
27
+
28
+ with gr.Row():
29
+ with gr.Column():
30
+ audio_input = gr.Audio(source="microphone", type="filepath", label="πŸŽ™οΈ Record Dialogue")
31
+ transcribed_text = gr.Textbox(lines=10, label="πŸ“ Transcribed Text (editable)")
32
+
33
+ record_button = gr.Button("🎧 Transcribe")
34
+ record_button.click(transcribe, inputs=audio_input, outputs=transcribed_text)
35
+
36
+ with gr.Column():
37
+ summary_output = gr.Textbox(lines=10, label="πŸ“‹ Summary (output)", interactive=False)
38
+ summarize_button = gr.Button("βœ‚οΈ Summarize")
39
+ summarize_button.click(summarize_text, inputs=transcribed_text, outputs=summary_output)
40
+
41
+ gr.Markdown("Built for Voize Interview β€” Powered by Whisper + BERT")
42
+
43
+ demo.launch()
requirements.txt CHANGED
@@ -2,4 +2,5 @@ transformers
2
  datasets
3
  evaluate
4
  rouge_score
5
- torch
 
 
2
  datasets
3
  evaluate
4
  rouge_score
5
+ torch
6
+ gradio