Josedcape commited on
Commit
66d2bc5
verified
1 Parent(s): aea1edc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -21
app.py CHANGED
@@ -1,11 +1,12 @@
1
  import os
2
  import time
3
- from google.cloud import texttospeech_v1 as texttospeech
4
  import streamlit as st
5
  from dotenv import load_dotenv
6
  import requests
7
  import base64
8
  from groq import Groq
 
 
9
 
10
  # Configuraci贸n inicial de Streamlit
11
  st.set_page_config(page_title="Galatea Asistente - OMARDENT", layout="wide")
@@ -13,11 +14,14 @@ st.set_page_config(page_title="Galatea Asistente - OMARDENT", layout="wide")
13
  # Cargar claves desde el archivo .env
14
  load_dotenv()
15
  groq_api_key = os.getenv("GROQ_API_KEY")
16
- os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "credentials/botidinamix-g.json"
17
 
18
- # Cliente Groq (sin pasar proxies)
19
  client = Groq(api_key=groq_api_key)
20
 
 
 
 
21
  # Descargar el sonido de notificaci贸n si no existe
22
  url_sonido = "http://sonidosmp3gratis.com/sounds/000217388_prev.mp3"
23
  if not os.path.exists("notificacion.mp3"):
@@ -44,25 +48,27 @@ def obtener_respuesta_groq(pregunta, modelo="llama3-8b-8192", temperatura=0.5):
44
  temperature=temperatura
45
  ).choices[0].message.content.strip()
46
 
47
- # Crear archivo de audio con la respuesta
48
- client_tts = texttospeech.TextToSpeechClient()
49
- input_text = texttospeech.SynthesisInput(text=respuesta)
50
- voice = texttospeech.VoiceSelectionParams(language_code="es-ES", ssml_gender=texttospeech.SsmlVoiceGender.FEMALE)
51
- audio_config = texttospeech.AudioConfig(audio_encoding=texttospeech.AudioEncoding.MP3)
52
- response_audio = client_tts.synthesize_speech(request={
53
- "input": input_text,
54
- "voice": voice,
55
- "audio_config": audio_config
56
- })
57
-
58
  # Guardar audio en un archivo temporal
59
- audio_file_path = f'tmp_respuesta_{int(time.time())}.mp3'
60
- with open(audio_file_path, 'wb') as audio_file:
61
- audio_file.write(response_audio.audio_content)
62
-
63
  # Convertir audio a base64
64
  with open(audio_file_path, "rb") as audio_file:
65
  audio_base64 = base64.b64encode(audio_file.read()).decode()
 
 
 
66
 
67
  return respuesta, audio_base64
68
  except Exception as e:
@@ -101,6 +107,3 @@ def main():
101
 
102
  if __name__ == "__main__":
103
  main()
104
-
105
-
106
-
 
1
  import os
2
  import time
 
3
  import streamlit as st
4
  from dotenv import load_dotenv
5
  import requests
6
  import base64
7
  from groq import Groq
8
+ from elevenlabs.client import ElevenLabs
9
+ import tempfile
10
 
11
  # Configuraci贸n inicial de Streamlit
12
  st.set_page_config(page_title="Galatea Asistente - OMARDENT", layout="wide")
 
14
  # Cargar claves desde el archivo .env
15
  load_dotenv()
16
  groq_api_key = os.getenv("GROQ_API_KEY")
17
+ elevenlabs_api_key = os.getenv("ELEVENLABS_API_KEY")
18
 
19
+ # Cliente Groq
20
  client = Groq(api_key=groq_api_key)
21
 
22
+ # Cliente ElevenLabs
23
+ eleven_client = ElevenLabs(api_key=elevenlabs_api_key)
24
+
25
  # Descargar el sonido de notificaci贸n si no existe
26
  url_sonido = "http://sonidosmp3gratis.com/sounds/000217388_prev.mp3"
27
  if not os.path.exists("notificacion.mp3"):
 
48
  temperature=temperatura
49
  ).choices[0].message.content.strip()
50
 
51
+ # Crear archivo de audio con ElevenLabs
52
+ # Utilizando una voz femenina multiling眉e - Nicole (ID: piTKgcLEGmPE4e6mEKli)
53
+ # Tambi茅n puedes usar otras voces como: Elli (ID: MF3mGyEYCl7XYWbV9V6O) o Bella (ID: EXAVITQu4vr4xnSDxMaL)
54
+ audio_stream = eleven_client.text_to_speech.convert(
55
+ text=respuesta,
56
+ voice_id="piTKgcLEGmPE4e6mEKli", # Nicole - voz femenina multiling眉e
57
+ model_id="eleven_multilingual_v2",
58
+ output_format="mp3"
59
+ )
60
+
 
61
  # Guardar audio en un archivo temporal
62
+ with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as temp_audio:
63
+ temp_audio.write(audio_stream)
64
+ audio_file_path = temp_audio.name
65
+
66
  # Convertir audio a base64
67
  with open(audio_file_path, "rb") as audio_file:
68
  audio_base64 = base64.b64encode(audio_file.read()).decode()
69
+
70
+ # Eliminar el archivo temporal
71
+ os.unlink(audio_file_path)
72
 
73
  return respuesta, audio_base64
74
  except Exception as e:
 
107
 
108
  if __name__ == "__main__":
109
  main()