IAMTFRMZA commited on
Commit
8077eca
·
verified ·
1 Parent(s): 66e8de0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +5 -12
app.py CHANGED
@@ -5,7 +5,7 @@ import re
5
  import requests
6
  import tempfile
7
  from openai import OpenAI
8
- from streamlit_webrtc import webrtc_streamer, WebRtcMode, ClientSettings
9
  import av
10
  import numpy as np
11
  import wave
@@ -81,7 +81,6 @@ with col1:
81
 
82
  # ------------------ Chat & Voice Panel ------------------
83
  with col2:
84
- # Display previous messages
85
  for message in st.session_state.messages:
86
  st.chat_message(message["role"]).write(message["content"])
87
 
@@ -91,11 +90,7 @@ with col2:
91
  key="speech",
92
  mode=WebRtcMode.SENDONLY,
93
  in_audio_enabled=True,
94
- audio_receiver_size=256,
95
- client_settings=ClientSettings(
96
- media_stream_constraints={"audio": True, "video": False},
97
- rtc_configuration={"iceServers": [{"urls": ["stun:stun.l.google.com:19302"]}]},
98
- ),
99
  )
100
 
101
  if audio_ctx.audio_receiver:
@@ -104,8 +99,8 @@ with col2:
104
  audio_data = result.to_ndarray()
105
  st.session_state.audio_buffer.append(audio_data)
106
 
107
- # ⏱️ Auto stop after short time
108
- if len(st.session_state.audio_buffer) > 30: # about 3s
109
  tmp_path = tempfile.NamedTemporaryFile(delete=False, suffix=".wav").name
110
  save_wav(st.session_state.audio_buffer, tmp_path)
111
  st.session_state.audio_buffer = []
@@ -119,7 +114,6 @@ with col2:
119
  st.chat_message("user").write(transcript)
120
  prompt = transcript
121
 
122
- # ---- Assistant interaction ----
123
  try:
124
  if st.session_state.thread_id is None:
125
  thread = client.beta.threads.create()
@@ -158,7 +152,6 @@ with col2:
158
  st.chat_message("assistant").write(assistant_message)
159
  st.session_state.messages.append({"role": "assistant", "content": assistant_message})
160
 
161
- # Image link extract
162
  image_match = re.search(
163
  r'https://raw\.githubusercontent\.com/AndrewLORTech/surgical-pathology-manual/main/[\w\-/]*\.png',
164
  assistant_message
@@ -173,4 +166,4 @@ with col2:
173
  if prompt := st.chat_input("💬 Or type your question..."):
174
  st.session_state.messages.append({"role": "user", "content": prompt})
175
  st.chat_message("user").write(prompt)
176
- # Send prompt to assistant logic follows same flow above (you can wrap in a function)
 
5
  import requests
6
  import tempfile
7
  from openai import OpenAI
8
+ from streamlit_webrtc import webrtc_streamer, WebRtcMode
9
  import av
10
  import numpy as np
11
  import wave
 
81
 
82
  # ------------------ Chat & Voice Panel ------------------
83
  with col2:
 
84
  for message in st.session_state.messages:
85
  st.chat_message(message["role"]).write(message["content"])
86
 
 
90
  key="speech",
91
  mode=WebRtcMode.SENDONLY,
92
  in_audio_enabled=True,
93
+ audio_receiver_size=256
 
 
 
 
94
  )
95
 
96
  if audio_ctx.audio_receiver:
 
99
  audio_data = result.to_ndarray()
100
  st.session_state.audio_buffer.append(audio_data)
101
 
102
+ # ⏱️ Auto stop after ~3 seconds
103
+ if len(st.session_state.audio_buffer) > 30:
104
  tmp_path = tempfile.NamedTemporaryFile(delete=False, suffix=".wav").name
105
  save_wav(st.session_state.audio_buffer, tmp_path)
106
  st.session_state.audio_buffer = []
 
114
  st.chat_message("user").write(transcript)
115
  prompt = transcript
116
 
 
117
  try:
118
  if st.session_state.thread_id is None:
119
  thread = client.beta.threads.create()
 
152
  st.chat_message("assistant").write(assistant_message)
153
  st.session_state.messages.append({"role": "assistant", "content": assistant_message})
154
 
 
155
  image_match = re.search(
156
  r'https://raw\.githubusercontent\.com/AndrewLORTech/surgical-pathology-manual/main/[\w\-/]*\.png',
157
  assistant_message
 
166
  if prompt := st.chat_input("💬 Or type your question..."):
167
  st.session_state.messages.append({"role": "user", "content": prompt})
168
  st.chat_message("user").write(prompt)
169
+ # You can add assistant logic here if you want it to run immediately