Josedcape commited on
Commit
33c338e
verified
1 Parent(s): 2752c20

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -26
app.py CHANGED
@@ -4,10 +4,10 @@ import groq
4
  from google.cloud import texttospeech_v1 as texttospeech
5
  import streamlit as st
6
  from dotenv import load_dotenv
7
- import speech_recognition as sr
8
  from datetime import datetime, timedelta
9
  from streamlit_autorefresh import st_autorefresh
10
  import requests
 
11
 
12
  # Configurar la p谩gina de Streamlit
13
  st.set_page_config(page_title="Galatea Asistente - OMARDENT", layout="wide")
@@ -24,7 +24,6 @@ st.markdown(
24
  unsafe_allow_html=True
25
  )
26
 
27
- # Agregar el logo
28
  # URL del sonido de notificaci贸n
29
  url_sonido = "http://sonidosmp3gratis.com/sounds/000217388_prev.mp3"
30
 
@@ -42,8 +41,8 @@ def descargar_sonido(url, nombre_archivo):
42
  st.error(f"Error al descargar el sonido: {e}")
43
 
44
  # Descargar el sonido de notificaci贸n (solo si no est谩 descargado)
45
- if not os.path.exists("notificacion.mp3"):
46
- descargar_sonido(url_sonido, "notificacion.mp3")
47
 
48
  # Cargar las claves API desde el archivo .env
49
  load_dotenv()
@@ -98,6 +97,17 @@ def obtener_respuesta_groq(pregunta, contexto="", modelo="llama3-8b-8192", tempe
98
  with open(audio_file_path, 'wb') as audio_file:
99
  audio_file.write(response_audio.audio_content)
100
 
 
 
 
 
 
 
 
 
 
 
 
101
  # Devolver la respuesta y la ruta del archivo de audio
102
  return respuesta, audio_file_path
103
 
@@ -127,22 +137,6 @@ def mostrar_galatea_asistente():
127
  # Selector de intervalo de tiempo
128
  intervalo = st.selectbox("Selecciona el intervalo de tiempo (minutos)", [1, 2, 5, 10, 15, 30, 60])
129
 
130
- # Grabar y transcribir audio
131
- if st.button("Grabar y Transcribir Audio"):
132
- recognizer = sr.Recognizer()
133
- with sr.Microphone() as source:
134
- st.info("Grabando...")
135
- audio = recognizer.listen(source, timeout=5)
136
- st.info("Grabaci贸n completa")
137
-
138
- try:
139
- text = recognizer.recognize_google(audio, language="es-ES")
140
- pregunta_usuario = text # Usar la transcripci贸n como la pregunta
141
- except sr.UnknownValueError:
142
- st.error("No se pudo entender el audio")
143
- except sr.RequestError:
144
- st.error("Error al solicitar el servicio de reconocimiento de voz")
145
-
146
  # Programar la pregunta para ser respondida despu茅s del intervalo de tiempo seleccionado
147
  if st.button("Programar Respuesta"):
148
  if pregunta_usuario:
@@ -193,12 +187,6 @@ if 'respuesta_programada' in st.session_state and st.session_state['respuesta_pr
193
  st.session_state['mensajes_chat'].append({"role": "assistant", "content": respuesta})
194
  st.session_state['respuesta_programada']['audio_file_path'] = audio_file_path
195
 
196
- # Reproducir el audio si ya fue generado
197
- if st.session_state['respuesta_programada']['audio_file_path']:
198
- audio_file_path = st.session_state['respuesta_programada']['audio_file_path']
199
- with open(audio_file_path, "rb") as audio_file:
200
- st.audio(audio_file.read(), format="audio/mp3")
201
-
202
  # Funci贸n principal
203
  def main():
204
  mostrar_galatea_asistente()
 
4
  from google.cloud import texttospeech_v1 as texttospeech
5
  import streamlit as st
6
  from dotenv import load_dotenv
 
7
  from datetime import datetime, timedelta
8
  from streamlit_autorefresh import st_autorefresh
9
  import requests
10
+ import base64
11
 
12
  # Configurar la p谩gina de Streamlit
13
  st.set_page_config(page_title="Galatea Asistente - OMARDENT", layout="wide")
 
24
  unsafe_allow_html=True
25
  )
26
 
 
27
  # URL del sonido de notificaci贸n
28
  url_sonido = "http://sonidosmp3gratis.com/sounds/000217388_prev.mp3"
29
 
 
41
  st.error(f"Error al descargar el sonido: {e}")
42
 
43
  # Descargar el sonido de notificaci贸n (solo si no est谩 descargado)
44
+ if not os.path.exists("http://sonidosmp3gratis.com/sounds/000217388_prev.mp3"):
45
+ descargar_sonido(url_sonido, "http://sonidosmp3gratis.com/sounds/000217388_prev.mp3")
46
 
47
  # Cargar las claves API desde el archivo .env
48
  load_dotenv()
 
97
  with open(audio_file_path, 'wb') as audio_file:
98
  audio_file.write(response_audio.audio_content)
99
 
100
+ # Convertir el archivo de audio a base64 para reproducir con autoplay
101
+ audio_base64 = base64.b64encode(response_audio.audio_content).decode()
102
+
103
+ # Reproducir el audio con autoplay usando HTML
104
+ audio_html = f"""
105
+ <audio autoplay>
106
+ <source src="data:audio/mp3;base64,{audio_base64}" type="audio/mp3">
107
+ </audio>
108
+ """
109
+ st.markdown(audio_html, unsafe_allow_html=True)
110
+
111
  # Devolver la respuesta y la ruta del archivo de audio
112
  return respuesta, audio_file_path
113
 
 
137
  # Selector de intervalo de tiempo
138
  intervalo = st.selectbox("Selecciona el intervalo de tiempo (minutos)", [1, 2, 5, 10, 15, 30, 60])
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  # Programar la pregunta para ser respondida despu茅s del intervalo de tiempo seleccionado
141
  if st.button("Programar Respuesta"):
142
  if pregunta_usuario:
 
187
  st.session_state['mensajes_chat'].append({"role": "assistant", "content": respuesta})
188
  st.session_state['respuesta_programada']['audio_file_path'] = audio_file_path
189
 
 
 
 
 
 
 
190
  # Funci贸n principal
191
  def main():
192
  mostrar_galatea_asistente()