Imsachinsingh00 commited on
Commit
cd2b0ba
Β·
1 Parent(s): 1d6914e

updated requirements.txt

Browse files
Files changed (2) hide show
  1. app.py +27 -30
  2. requirements.txt +2 -1
app.py CHANGED
@@ -1,43 +1,40 @@
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()
 
1
  import gradio as gr
2
+ from transformers import BertTokenizer, EncoderDecoderModel
3
  import torch
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
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
9
+ model = model.to(device)
10
 
11
+ def summarize_text(dialogue):
12
+ inputs = tokenizer(dialogue, return_tensors="pt", padding=True, truncation=True, max_length=512)
13
+ inputs = {k: v.to(device) for k, v in inputs.items()}
 
 
 
 
 
14
  outputs = model.generate(**inputs, max_length=64)
15
  summary = tokenizer.decode(outputs[0], skip_special_tokens=True)
16
  return summary
17
 
18
+ # Gradio app
 
 
 
 
19
  with gr.Blocks() as demo:
20
+ gr.Markdown("## 🎀 Medical Dialogue Summarization App")
21
 
22
  with gr.Row():
23
+ mic_input = gr.Microphone(label="πŸŽ™οΈ Record Dialogue")
24
+ text_input = gr.Textbox(label="πŸ“ Or Paste Dialogue", lines=10, placeholder="Paste or speak a conversation here...")
25
+
26
+ summarize_btn = gr.Button("Summarize")
27
+ summary_output = gr.Textbox(label="πŸ“„ Summary", interactive=False)
28
+
29
+ def transcribe_and_summarize(audio, text):
30
+ import whisper
31
+ model_whisper = whisper.load_model("base")
32
+ result = model_whisper.transcribe(audio)
33
+ transcribed_text = result["text"]
34
+ text = text or transcribed_text
35
+ summary = summarize_text(text)
36
+ return transcribed_text, summary
37
+
38
+ summarize_btn.click(fn=transcribe_and_summarize, inputs=[mic_input, text_input], outputs=[text_input, summary_output])
39
 
40
  demo.launch()
requirements.txt CHANGED
@@ -5,4 +5,5 @@ rouge_score
5
  torch
6
  gradio
7
  scikit-learn
8
- huggingface_hub
 
 
5
  torch
6
  gradio
7
  scikit-learn
8
+ huggingface_hub
9
+ whisper