GAS17 commited on
Commit
1f673e5
1 Parent(s): a3c05d2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -4
app.py CHANGED
@@ -2,6 +2,7 @@ import gradio as gr
2
  import requests
3
  import os
4
  from dotenv import load_dotenv
 
5
 
6
  # Cargar variables de entorno desde el archivo .env
7
  load_dotenv()
@@ -11,7 +12,30 @@ CHUNK_SIZE = 1024 # Tamaño de los chunks para leer/escribir a la vez
11
  XI_API_KEY = os.getenv("XI_API_KEY") # Tu clave API para autenticación
12
  VOICE_ID = os.getenv("VOICE_ID") # ID del modelo de voz a utilizar
13
 
14
- def text_to_speech(text):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  # URL para la solicitud de la API de Text-to-Speech
16
  tts_url = f"https://api.elevenlabs.io/v1/text-to-speech/{VOICE_ID}/stream"
17
 
@@ -44,6 +68,8 @@ def text_to_speech(text):
44
  # Leer la respuesta en chunks y escribir en el archivo
45
  for chunk in response.iter_content(chunk_size=CHUNK_SIZE):
46
  f.write(chunk)
 
 
47
  return output_path
48
  else:
49
  return f"Error: {response.text}"
@@ -51,10 +77,10 @@ def text_to_speech(text):
51
  # Crear una interfaz de Gradio para la entrada de texto y la generación de audio
52
  iface = gr.Interface(
53
  fn=text_to_speech,
54
- inputs="text",
55
  outputs="audio",
56
- title="",
57
- description="Texto a generar."
58
  )
59
 
60
  # Ejecutar la interfaz
 
2
  import requests
3
  import os
4
  from dotenv import load_dotenv
5
+ from datetime import datetime, timedelta
6
 
7
  # Cargar variables de entorno desde el archivo .env
8
  load_dotenv()
 
12
  XI_API_KEY = os.getenv("XI_API_KEY") # Tu clave API para autenticación
13
  VOICE_ID = os.getenv("VOICE_ID") # ID del modelo de voz a utilizar
14
 
15
+ # Diccionario para almacenar la información de los usuarios
16
+ user_data = {}
17
+
18
+ # Configuración de límites
19
+ MESSAGE_LIMIT = 2
20
+ TIME_LIMIT = timedelta(hours=2)
21
+
22
+ def text_to_speech(text, user_id):
23
+ current_time = datetime.now()
24
+
25
+ if user_id not in user_data:
26
+ user_data[user_id] = {'messages': [], 'last_reset': current_time}
27
+
28
+ user_info = user_data[user_id]
29
+
30
+ # Resetear el contador si ha pasado el tiempo límite
31
+ if current_time - user_info['last_reset'] > TIME_LIMIT:
32
+ user_info['messages'] = []
33
+ user_info['last_reset'] = current_time
34
+
35
+ # Verificar si el usuario ha alcanzado el límite de mensajes
36
+ if len(user_info['messages']) >= MESSAGE_LIMIT:
37
+ return f"Error: Límite de mensajes alcanzado. Intenta nuevamente en 2 horas."
38
+
39
  # URL para la solicitud de la API de Text-to-Speech
40
  tts_url = f"https://api.elevenlabs.io/v1/text-to-speech/{VOICE_ID}/stream"
41
 
 
68
  # Leer la respuesta en chunks y escribir en el archivo
69
  for chunk in response.iter_content(chunk_size=CHUNK_SIZE):
70
  f.write(chunk)
71
+ # Registrar el nuevo mensaje
72
+ user_info['messages'].append({'message': text, 'time': current_time})
73
  return output_path
74
  else:
75
  return f"Error: {response.text}"
 
77
  # Crear una interfaz de Gradio para la entrada de texto y la generación de audio
78
  iface = gr.Interface(
79
  fn=text_to_speech,
80
+ inputs=["text", "text"], # Añadir un segundo campo de texto para el user_id
81
  outputs="audio",
82
+ title="Generador de Texto a Voz",
83
+ description="Ingrese el texto para convertir a voz y su ID de usuario."
84
  )
85
 
86
  # Ejecutar la interfaz