import gradio as gr import requests import os from dotenv import load_dotenv # Cargar variables de entorno desde el archivo .env load_dotenv() # Constantes para el script CHUNK_SIZE = 1024 # Tamaño de los chunks para leer/escribir a la vez XI_API_KEY = os.getenv("XI_API_KEY") # Tu clave API para autenticación VOICE_ID = os.getenv("VOICE_ID") # ID del modelo de voz a utilizar def text_to_speech(text): # URL para la solicitud de la API de Text-to-Speech tts_url = f"https://api.elevenlabs.io/v1/text-to-speech/{VOICE_ID}/stream" # Encabezados para la solicitud de la API, incluida la clave API para autenticación headers = { "Accept": "application/json", "xi-api-key": XI_API_KEY } # Datos de carga útil para la solicitud de la API, incluidos los ajustes de texto y voz data = { "text": text, "model_id": "eleven_multilingual_v2", "voice_settings": { "stability": 0.5, "similarity_boost": 0.8, "style": 0.0, "use_speaker_boost": True } } # Realizar la solicitud POST a la API de TTS con encabezados y datos, habilitando la respuesta en streaming response = requests.post(tts_url, headers=headers, json=data, stream=True) # Verificar si la solicitud fue exitosa if response.ok: # Crear un archivo temporal para guardar el audio output_path = "output.mp3" with open(output_path, "wb") as f: # Leer la respuesta en chunks y escribir en el archivo for chunk in response.iter_content(chunk_size=CHUNK_SIZE): f.write(chunk) return output_path else: return f"Error: {response.text}" # Crear una interfaz de Gradio para la entrada de texto y la generación de audio iface = gr.Interface( fn=text_to_speech, inputs="text", outputs="audio", title="", description="Texto a generar." ) # Ejecutar la interfaz if __name__ == "__main__": iface.launch()