jeysshon commited on
Commit
9e93c24
·
verified ·
1 Parent(s): 68f8a40

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -24
app.py CHANGED
@@ -3,8 +3,7 @@ from PIL import Image
3
  import speech_recognition as sr
4
  import google.generativeai as genai
5
  from gtts import gTTS
6
- import io
7
- import time
8
 
9
  # Configuración de la página de Streamlit
10
  st.set_page_config(layout="wide")
@@ -21,13 +20,14 @@ def procesar_texto(texto):
21
  def procesar_imagen(imagen):
22
  genai.configure(api_key=api_key)
23
  modelo = genai.GenerativeModel('gemini-1.5-pro-latest')
24
- respuesta = modelo.generate_content(imagen.name) # Puedes ajustar esto si la API espera contenido de imagen real
25
  return respuesta.text
26
 
27
- def reconocer_voz_desde_archivo(archivo_audio):
28
  reconocedor = sr.Recognizer()
29
- with sr.AudioFile(archivo_audio) as fuente:
30
- audio = reconocedor.record(fuente)
 
31
  try:
32
  texto = reconocedor.recognize_google(audio)
33
  return texto
@@ -39,13 +39,11 @@ def reconocer_voz_desde_archivo(archivo_audio):
39
  def hablar_texto(texto):
40
  try:
41
  tts = gTTS(text=texto, lang='es')
42
- archivo_audio = io.BytesIO()
43
- tts.write_to_fp(archivo_audio)
44
- archivo_audio.seek(0)
45
- st.audio(archivo_audio, format="audio/mp3")
46
  except Exception as e:
47
  st.error(f"Error al generar audio: {e}")
48
- time.sleep(5) # Esperar 5 segundos antes de intentar nuevamente
49
 
50
  st.title("🤖 ChatBot")
51
 
@@ -59,7 +57,7 @@ with open("./style.css") as f:
59
  col1, col2 = st.columns([1, 3])
60
 
61
  with col1:
62
- tipo_entrada = st.selectbox("Selecciona el tipo de entrada", ["Haz una pregunta❓", "🖼️ Subir imagen", "🎤 Subir archivo de audio"])
63
 
64
  with col2:
65
  if tipo_entrada == "Haz una pregunta❓":
@@ -80,16 +78,15 @@ with col2:
80
  respuesta = procesar_imagen(entrada_imagen)
81
  espacio_contenido_generado.write(respuesta)
82
 
83
- elif tipo_entrada == "🎤 Subir archivo de audio":
84
- archivo_audio = st.file_uploader("Sube un archivo de audio", type=["wav", "mp3"])
85
- if archivo_audio:
86
- with st.spinner("Procesando audio..."):
87
- texto_de_voz = reconocer_voz_desde_archivo(archivo_audio)
88
- st.text_input("Texto reconocido", value=texto_de_voz)
89
  if texto_de_voz:
90
- with st.spinner("Generando respuesta..."):
91
- resultado = procesar_texto(texto_de_voz)
92
- espacio_contenido_generado.write(resultado)
93
- if st.button("🔊 Hablar", key="hablar_entrada_audio"):
94
- hablar_texto(resultado)
95
-
 
 
3
  import speech_recognition as sr
4
  import google.generativeai as genai
5
  from gtts import gTTS
6
+ import os
 
7
 
8
  # Configuración de la página de Streamlit
9
  st.set_page_config(layout="wide")
 
20
  def procesar_imagen(imagen):
21
  genai.configure(api_key=api_key)
22
  modelo = genai.GenerativeModel('gemini-1.5-pro-latest')
23
+ respuesta = modelo.generate_content(imagen.name)
24
  return respuesta.text
25
 
26
+ def reconocer_voz():
27
  reconocedor = sr.Recognizer()
28
+ with sr.Microphone() as fuente:
29
+ st.write("Escuchando...")
30
+ audio = reconocedor.listen(fuente)
31
  try:
32
  texto = reconocedor.recognize_google(audio)
33
  return texto
 
39
  def hablar_texto(texto):
40
  try:
41
  tts = gTTS(text=texto, lang='es')
42
+ archivo_audio = "respuesta.mp3"
43
+ tts.save(archivo_audio)
44
+ os.system(f"mpg321 {archivo_audio}") # Usa otro reproductor si es necesario
 
45
  except Exception as e:
46
  st.error(f"Error al generar audio: {e}")
 
47
 
48
  st.title("🤖 ChatBot")
49
 
 
57
  col1, col2 = st.columns([1, 3])
58
 
59
  with col1:
60
+ tipo_entrada = st.selectbox("Selecciona el tipo de entrada", ["Haz una pregunta❓", "🖼️ Subir imagen", "🎤 Usar micrófono"])
61
 
62
  with col2:
63
  if tipo_entrada == "Haz una pregunta❓":
 
78
  respuesta = procesar_imagen(entrada_imagen)
79
  espacio_contenido_generado.write(respuesta)
80
 
81
+ elif tipo_entrada == "🎤 Usar micrófono":
82
+ if st.button("Grabar"):
83
+ with st.spinner("Escuchando y procesando..."):
84
+ texto_de_voz = reconocer_voz()
 
 
85
  if texto_de_voz:
86
+ entrada_texto = st.text_input("Habla", value=texto_de_voz)
87
+ if entrada_texto:
88
+ with st.spinner("Generando respuesta..."):
89
+ resultado = procesar_texto(entrada_texto)
90
+ espacio_contenido_generado.write(resultado)
91
+ if st.button("🔊 Hablar", key="hablar_entrada_voz"):
92
+ hablar_texto(resultado)