File size: 3,689 Bytes
38a7da0
 
a990f25
 
08fbba1
 
 
3ae5946
38a7da0
54ecabd
38a7da0
54ecabd
6c8d339
54ecabd
 
 
4579397
54ecabd
 
 
 
4579397
54ecabd
 
4579397
54ecabd
 
 
869e886
54ecabd
 
 
 
38a7da0
 
84d3dde
 
 
 
 
c279ea6
f304c9c
c6874ca
 
f304c9c
c6874ca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f304c9c
 
 
 
c279ea6
 
 
 
 
 
 
 
fd48156
e24d441
9cd7ee3
19ba116
 
d3c50e4
 
9cd7ee3
19ba116
2baf7a5
fd48156
aed1a1c
473819b
84d3dde
bc72fb2
84d3dde
08fbba1
6b8406b
 
473819b
f304c9c
08fbba1
ed5f4de
08fbba1
c279ea6
5ef14a2
c279ea6
 
 
f304c9c
c279ea6
 
84d3dde
8f8b684
84d3dde
935f0c9
 
84d3dde
 
 
 
 
 
 
 
 
 
 
 
2f8eb98
84d3dde
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import whisper
import gradio as gr
import openai 
import os

openai.api_key = os.environ["OPENAI_API_KEY"]

model = whisper.load_model("small")


def transcribe(audio):
    model = whisper.load_model("base")
    result = model.transcribe(audio)
    return result["text"]
    
# 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 = False)
#     result = whisper.decode(model, mel, options)
#     return result.text
    
    
def process_text(input_text):
    # Apply your function here to process the input text
    output_text = input_text.upper()
    return output_text

def get_completion(prompt, model='gpt-3.5-turbo'):
    messages = [
        {"role": "system", "content": """You are a world class nurse practitioner. You are provided with the transcription following a patient's visit. \
    Extract the following information from the transcription, replace curly brackets with relevant extracted information, and present as follows, one category per line: \ 
        
    Date of Visit: {}
    Claimant: {}
    Client/Employer: {}
    Claim #: {}
    DOI (Date of Injury): {}
    Provider: {}
    Diagnosis Treated: {}
    Subjective findings: {}
    Objective Findings: {}
    Treatment plan: {}
    Medications: {}
    RTW (Return to Work) Status: {}
    Restrictions: {}
    NOV (Next Office Visit): {}

    Only use the information from the provided transcription. Do not make up stuff. If information is not available just put "N/A" next to the relevant line.
         """
        },
        {"role": "user", "content": prompt}
        ]
    response = openai.ChatCompletion.create(
        model = model, 
        messages = messages, 
        temperature = 0, 
        
    ) 
    return response.choices[0].message['content']

with gr.Blocks() as demo:
    
    gr.Markdown("""
    # Chat with NP <br>
    
    This is to make life of NPs easier. 
    Record post visit summary in natural language, press "transcribe audio", and then "prepare a report".
    """)

    
    title = "Chat with NP"
    audio = gr.Audio(source="microphone", type="filepath")
    
    b1 = gr.Button("Transcribe audio")
    b2 = gr.Button("Prepare a report")


    text1 = gr.Textbox(lines=5)
    text2 = gr.Textbox(lines=5)

    prompt = text1
    
  
    
    b1.click(transcribe, inputs=audio, outputs=text1)
    b2.click(get_completion, inputs=text1, outputs=text2)


    # b1.click(transcribe, inputs=audio, outputs=text1)
    # b2.click(get_completion, inputs=prompt, outputs=text2)



demo.launch()

#demo.launch(share=True, auth=("username", "password"))

# In this example, the process_text function just converts the input text to uppercase, but you can replace it with your desired function. The Gradio Blocks interface will have two buttons: "Transcribe audio" and "Process text". The first button transcribes the audio and fills the first textbox, and the second button processes the text from the first textbox and fills the second textbox.


# gr.Interface(
#     title = 'OpenAI Whisper ASR Gradio Web UI', 
#     fn=transcribe, 
#     inputs=[
#         gr.inputs.Audio(source="microphone", type="filepath")
#     ],
#     outputs=[
#         "textbox"
#     ],
    
#     live=True).launch()