talk_to_NP / app.py
textToSQL's picture
Update app.py
c9fdada
raw
history blame
2.34 kB
import whisper
import gradio as gr
import openai
import os
openai.api_key = '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'
# load model and processor
model = whisper.load_model("medium")
def get_completion(prompt, model='gpt-3.5-turbo'):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model = model,
messages = messages,
temperature = 0,
)
return response.choices[0].message['content']
def transcribe(audio):
#time.sleep(3)
# load audio and pad/trim it to fit 30 seconds
audio = whisper.load_audio(audio)
audio = whisper.pad_or_trim(audio)
# make log-Mel spectrogram and move to the same device as the model
mel = whisper.log_mel_spectrogram(audio).to(model.device)
# detect the spoken language
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")
# decode the audio
options = whisper.DecodingOptions(fp16 = True)
result = whisper.decode(model, mel, options)
return result.text
# gr.Interface(
# title = 'Talk to NP',
# fn=transcribe,
# inputs=[
# gr.inputs.Audio(source="microphone", type="filepath")
# ],
# outputs=[
# "textbox"
# ],
# live=True).launch()
def speech_to_text(speech):
text = asr(speech)["text"]
return text
def text_to_sentiment(text):
return classifier(text)[0]["label"]
demo = gr.Blocks()
with demo:
audio_file = gr.Audio(type="filepath")
text1 = gr.Textbox()
text2 = gr.Textbox()
prompt = f"""
You are a world class nurse practitioner. You are provided with text delimited by triple quotes. \
Summarize the text and put it in a table format with rows as follows: \
1. Patient identification:
2. Chief complaint:
3. Medical history:
4. Family history:
5. Social history:
6. Review of systems:
7. Current medications:
8. Vaccination status:
9. Emotional well-being:
10. Patient concerns and expectations:
\"\"\"{text1}\"\"\"
"""
b1 = gr.Button("Transcribe audio")
b2 = gr.Button("Summarize")
b1.click(transcribe, inputs=audio_file, outputs=text1)
b2.click(get_completion, inputs=text1, outputs=text2)
demo.launch()