Update src/streamlit_app.py
Browse files- src/streamlit_app.py +24 -13
src/streamlit_app.py
CHANGED
|
@@ -67,6 +67,8 @@ def init_session_state():
|
|
| 67 |
st.session_state.context = load_context()
|
| 68 |
if 'processing' not in st.session_state:
|
| 69 |
st.session_state.processing = False
|
|
|
|
|
|
|
| 70 |
|
| 71 |
def load_context():
|
| 72 |
"""Load the context from file or return default."""
|
|
@@ -223,22 +225,31 @@ def main():
|
|
| 223 |
|
| 224 |
# Process audio when new recording is available
|
| 225 |
if audio_bytes and not st.session_state.processing:
|
| 226 |
-
|
|
|
|
|
|
|
| 227 |
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
| 235 |
-
|
| 236 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 237 |
|
| 238 |
# Force a rerun to update the conversation display
|
| 239 |
-
|
| 240 |
-
|
| 241 |
-
st.session_state.processing = False
|
| 242 |
|
| 243 |
with col2:
|
| 244 |
st.subheader("💬 Conversation")
|
|
|
|
| 67 |
st.session_state.context = load_context()
|
| 68 |
if 'processing' not in st.session_state:
|
| 69 |
st.session_state.processing = False
|
| 70 |
+
if 'last_audio_hash' not in st.session_state:
|
| 71 |
+
st.session_state.last_audio_hash = None
|
| 72 |
|
| 73 |
def load_context():
|
| 74 |
"""Load the context from file or return default."""
|
|
|
|
| 225 |
|
| 226 |
# Process audio when new recording is available
|
| 227 |
if audio_bytes and not st.session_state.processing:
|
| 228 |
+
# Create a hash of the audio to detect new recordings
|
| 229 |
+
import hashlib
|
| 230 |
+
audio_hash = hashlib.md5(audio_bytes).hexdigest()
|
| 231 |
|
| 232 |
+
# Only process if this is a new recording
|
| 233 |
+
if audio_hash != st.session_state.last_audio_hash:
|
| 234 |
+
st.session_state.processing = True
|
| 235 |
+
st.session_state.last_audio_hash = audio_hash
|
| 236 |
+
|
| 237 |
+
user_text, ai_response, speech_audio = process_audio(audio_bytes)
|
| 238 |
+
|
| 239 |
+
if user_text and ai_response:
|
| 240 |
+
# Add to conversation history
|
| 241 |
+
st.session_state.conversation_history.append({
|
| 242 |
+
"user": user_text,
|
| 243 |
+
"ai": ai_response,
|
| 244 |
+
"speech": speech_audio
|
| 245 |
+
})
|
| 246 |
+
|
| 247 |
+
# Reset processing flag before rerun
|
| 248 |
+
st.session_state.processing = False
|
| 249 |
|
| 250 |
# Force a rerun to update the conversation display
|
| 251 |
+
if user_text and ai_response:
|
| 252 |
+
st.rerun()
|
|
|
|
| 253 |
|
| 254 |
with col2:
|
| 255 |
st.subheader("💬 Conversation")
|