Update app.py
Browse files
app.py
CHANGED
|
@@ -28,10 +28,16 @@ def process_audio(audio_bytes):
|
|
| 28 |
return {"raw": waveform.numpy().squeeze(), "sampling_rate": 16000}
|
| 29 |
|
| 30 |
# Voice input component
|
|
|
|
| 31 |
def voice_input(key, prompt_text, default_text=""):
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
col1, col2 = st.columns([4, 1])
|
| 33 |
with col1:
|
| 34 |
-
|
|
|
|
| 35 |
with col2:
|
| 36 |
audio_bytes = audio_recorder(
|
| 37 |
pause_threshold=0.8,
|
|
@@ -51,15 +57,15 @@ def voice_input(key, prompt_text, default_text=""):
|
|
| 51 |
whisper = load_model()
|
| 52 |
transcribed_text = whisper(audio_input)["text"]
|
| 53 |
|
| 54 |
-
# Update the
|
| 55 |
st.session_state[f"text_{key}"] = transcribed_text
|
| 56 |
st.rerun()
|
| 57 |
|
| 58 |
except Exception as e:
|
| 59 |
st.error(f"Error in voice input: {str(e)}")
|
| 60 |
|
| 61 |
-
|
| 62 |
-
|
| 63 |
# Enhanced Custom CSS with modern design
|
| 64 |
def inject_custom_css():
|
| 65 |
st.markdown("""
|
|
|
|
| 28 |
return {"raw": waveform.numpy().squeeze(), "sampling_rate": 16000}
|
| 29 |
|
| 30 |
# Voice input component
|
| 31 |
+
# Updated voice_input function
|
| 32 |
def voice_input(key, prompt_text, default_text=""):
|
| 33 |
+
# Initialize session state keys if they don't exist
|
| 34 |
+
if f"text_{key}" not in st.session_state:
|
| 35 |
+
st.session_state[f"text_{key}"] = default_text
|
| 36 |
+
|
| 37 |
col1, col2 = st.columns([4, 1])
|
| 38 |
with col1:
|
| 39 |
+
# Create the text input with the current session state value
|
| 40 |
+
text_value = st.text_input(prompt_text, value=st.session_state[f"text_{key}"], key=f"text_input_{key}")
|
| 41 |
with col2:
|
| 42 |
audio_bytes = audio_recorder(
|
| 43 |
pause_threshold=0.8,
|
|
|
|
| 57 |
whisper = load_model()
|
| 58 |
transcribed_text = whisper(audio_input)["text"]
|
| 59 |
|
| 60 |
+
# Update the session state value (this happens before widget creation)
|
| 61 |
st.session_state[f"text_{key}"] = transcribed_text
|
| 62 |
st.rerun()
|
| 63 |
|
| 64 |
except Exception as e:
|
| 65 |
st.error(f"Error in voice input: {str(e)}")
|
| 66 |
|
| 67 |
+
# Return the current text value (from either manual input or voice)
|
| 68 |
+
return st.session_state[f"text_{key}"]
|
| 69 |
# Enhanced Custom CSS with modern design
|
| 70 |
def inject_custom_css():
|
| 71 |
st.markdown("""
|