Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -84,9 +84,17 @@ def text_to_speech(text):
|
|
| 84 |
audio_fp.seek(0)
|
| 85 |
return audio_fp
|
| 86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
def def_main():
|
| 88 |
st.write("Di la palabra XAMAN para empezar o DETENTE para procesar")
|
| 89 |
-
|
| 90 |
recording = st_mic_recorder(recording_container=st.empty(), auto_recording=True)
|
| 91 |
|
| 92 |
if recording:
|
|
@@ -95,13 +103,16 @@ def def_main():
|
|
| 95 |
audio_file = io.BytesIO(audio_data)
|
| 96 |
st.audio(audio_file, format="audio/wav")
|
| 97 |
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
|
|
|
|
|
|
|
|
|
| 105 |
|
| 106 |
if __name__ == "__main__":
|
| 107 |
-
def_main()
|
|
|
|
| 84 |
audio_fp.seek(0)
|
| 85 |
return audio_fp
|
| 86 |
|
| 87 |
+
def detect_voice_activity(audio_data):
|
| 88 |
+
audio = pydub.AudioSegment.from_file(io.BytesIO(audio_data))
|
| 89 |
+
audio = audio.set_channels(1) # Convertir a mono
|
| 90 |
+
signal_energy = np.sum(np.abs(audio.get_array_of_samples()))
|
| 91 |
+
threshold_energy = 5000 # Ajustar según sea necesario
|
| 92 |
+
is_voice_active = signal_energy > threshold_energy
|
| 93 |
+
|
| 94 |
+
return is_voice_active
|
| 95 |
+
|
| 96 |
def def_main():
|
| 97 |
st.write("Di la palabra XAMAN para empezar o DETENTE para procesar")
|
|
|
|
| 98 |
recording = st_mic_recorder(recording_container=st.empty(), auto_recording=True)
|
| 99 |
|
| 100 |
if recording:
|
|
|
|
| 103 |
audio_file = io.BytesIO(audio_data)
|
| 104 |
st.audio(audio_file, format="audio/wav")
|
| 105 |
|
| 106 |
+
is_voice_active = detect_voice_activity(audio_data)
|
| 107 |
+
|
| 108 |
+
if is_voice_active:
|
| 109 |
+
audio_text = recognize_speech(audio_file)
|
| 110 |
+
if audio_text:
|
| 111 |
+
output, audio_file = generate(audio_text, history=st.session_state.history)
|
| 112 |
+
if audio_file is not None:
|
| 113 |
+
st.markdown(
|
| 114 |
+
f"""<audio autoplay="autoplay" controls="controls" src="data:audio/mp3;base64,{base64.b64encode(audio_file.read()).decode()}" type="audio/mp3" id="audio_player"></audio>""",
|
| 115 |
+
unsafe_allow_html=True)
|
| 116 |
|
| 117 |
if __name__ == "__main__":
|
| 118 |
+
def_main()
|