GAS17 commited on
Commit
889bf3d
1 Parent(s): e1f1a03

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -19
app.py CHANGED
@@ -3,6 +3,7 @@ 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,29 +13,42 @@ CHUNK_SIZE = 1024 # Tamaño de los chunks para leer/escribir a la vez
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"
@@ -68,8 +82,8 @@ def text_to_speech(text, user_id):
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,10 +91,10 @@ def text_to_speech(text, user_id):
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="",
83
- description="texto"
84
  )
85
 
86
  # Ejecutar la interfaz
 
3
  import os
4
  from dotenv import load_dotenv
5
  from datetime import datetime, timedelta
6
+ from flask import Flask, jsonify
7
 
8
  # Cargar variables de entorno desde el archivo .env
9
  load_dotenv()
 
13
  XI_API_KEY = os.getenv("XI_API_KEY") # Tu clave API para autenticación
14
  VOICE_ID = os.getenv("VOICE_ID") # ID del modelo de voz a utilizar
15
 
16
+ # Diccionario para almacenar la información de uso
17
+ usage_data = {
18
+ 'message_count': 0,
19
+ 'last_reset': datetime.now()
20
+ }
21
 
22
  # Configuración de límites
23
+ MESSAGE_LIMIT = 3
24
  TIME_LIMIT = timedelta(hours=2)
25
 
26
+ # Crear la aplicación Flask
27
+ app = Flask(__name__)
28
 
29
+ @app.route('/reset_usage', methods=['POST'])
30
+ def reset_usage():
31
+ global usage_data
32
+ usage_data = {
33
+ 'message_count': 0,
34
+ 'last_reset': datetime.now()
35
+ }
36
+ return jsonify({"success": "Usage reset."}), 200
37
 
38
+ def text_to_speech(text):
39
+ global usage_data
40
+ current_time = datetime.now()
41
 
42
  # Resetear el contador si ha pasado el tiempo límite
43
+ if current_time - usage_data['last_reset'] > TIME_LIMIT:
44
+ usage_data = {
45
+ 'message_count': 0,
46
+ 'last_reset': current_time
47
+ }
48
 
49
+ # Verificar si se ha alcanzado el límite de mensajes
50
+ if usage_data['message_count'] >= MESSAGE_LIMIT:
51
+ return "Error: Límite de mensajes alcanzado. Intenta nuevamente en 2 horas."
52
 
53
  # URL para la solicitud de la API de Text-to-Speech
54
  tts_url = f"https://api.elevenlabs.io/v1/text-to-speech/{VOICE_ID}/stream"
 
82
  # Leer la respuesta en chunks y escribir en el archivo
83
  for chunk in response.iter_content(chunk_size=CHUNK_SIZE):
84
  f.write(chunk)
85
+ # Incrementar el contador de mensajes
86
+ usage_data['message_count'] += 1
87
  return output_path
88
  else:
89
  return f"Error: {response.text}"
 
91
  # Crear una interfaz de Gradio para la entrada de texto y la generación de audio
92
  iface = gr.Interface(
93
  fn=text_to_speech,
94
+ inputs="text",
95
  outputs="audio",
96
+ title="Generador de Texto a Voz",
97
+ description="Ingrese el texto para convertir a voz."
98
  )
99
 
100
  # Ejecutar la interfaz