GAS17 commited on
Commit
2f9ec6c
1 Parent(s): ed5cc9e

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -0
app.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 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()
8
+
9
+ # Constantes para el script
10
+ 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
+
18
+ # Encabezados para la solicitud de la API, incluida la clave API para autenticación
19
+ headers = {
20
+ "Accept": "application/json",
21
+ "xi-api-key": XI_API_KEY
22
+ }
23
+
24
+ # Datos de carga útil para la solicitud de la API, incluidos los ajustes de texto y voz
25
+ data = {
26
+ "text": text,
27
+ "model_id": "eleven_multilingual_v2",
28
+ "voice_settings": {
29
+ "stability": 0.5,
30
+ "similarity_boost": 0.8,
31
+ "style": 0.0,
32
+ "use_speaker_boost": True
33
+ }
34
+ }
35
+
36
+ # Realizar la solicitud POST a la API de TTS con encabezados y datos, habilitando la respuesta en streaming
37
+ response = requests.post(tts_url, headers=headers, json=data, stream=True)
38
+
39
+ # Verificar si la solicitud fue exitosa
40
+ if response.ok:
41
+ # Crear un archivo temporal para guardar el audio
42
+ output_path = "output.mp3"
43
+ with open(output_path, "wb") as f:
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}"
50
+
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
61
+ if __name__ == "__main__":
62
+ iface.launch()