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_file) 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 = False) 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()