Creación de un generador de música con ElevenLabs (Next.js)
En esta lección, aprenderás a construir una aplicación web sencilla que genera música a partir de un prompt de texto utilizando la API de ElevenLabs. Crearemos un backend seguro para interactuar con la API y un frontend interactivo para que los usuarios puedan introducir sus prompts y reproducir la música generada. Esta habilidad es fundamental para integrar capacidades de generación de audio en tus propias aplicaciones, desde herramientas creativas hasta asistentes de contenido.
Antes de escribir cualquier código, invoca la habilidad /music para aprender los patrones correctos del SDK de ElevenLabs. Esto te proporcionará una base sólida sobre cómo interactuar con la API de manera eficiente y segura.
1. app/api/generate-music/route.ts
Este es el endpoint POST seguro que genera música a partir de un prompt de texto. Es crucial que nunca expongas ELEVENLABS_API_KEY al cliente, ya que esto comprometería la seguridad de tu cuenta de ElevenLabs. Toda la interacción con la API debe realizarse desde el lado del servidor para proteger tus credenciales.
- Lee
{ prompt }del cuerpo de la solicitud. Este será el texto que el usuario ha introducido y que se utilizará para generar la música. - Valida que el prompt sea una cadena no vacía. Esta validación es esencial para asegurar que la API reciba datos válidos y para proporcionar una buena experiencia de usuario.
- Usa
ElevenLabsClienty llama aclient.music.composeconmusicLengthMs: 10000. Aquí es donde se realiza la llamada real a la API de ElevenLabs para iniciar el proceso de generación de música. - Devuelve el stream MP3 generado de la respuesta del servidor con un tipo de contenido de audio. Esto permite que el navegador del cliente reproduzca directamente el archivo de audio.
- Devuelve errores JSON legibles para fallos de validación y de la API. Una buena gestión de errores es clave para depurar y para informar al usuario sobre cualquier problema.
Para este backend, necesitarás una clave de API de ElevenLabs. Asegúrate de configurarla como una variable de entorno en tu servidor y nunca la incluyas directamente en tu código fuente o la expongas al cliente.
2. app/page.tsx
Esta sección describe la página del "playground" de música, que es la interfaz de usuario simple donde los usuarios interactuarán con tu aplicación.
- Muestra un textarea para el prompt y un botón de envío. Este es el punto de entrada para que el usuario introduzca su texto.
- Llama a la ruta de la API desde el cliente y maneja los estados de carga, éxito y error. Es importante proporcionar retroalimentación visual al usuario mientras se procesa la solicitud y si ocurre algún problema.
- Convierte el blob de audio devuelto en una URL de objeto y renderiza un reproductor de audio HTML. Esto permite que el usuario escuche la música generada directamente en la página.
- Muestra un enlace de descarga para la pista generada una vez que esté lista. Esto da al usuario la opción de guardar la música en su dispositivo.
- Borra automáticamente el audio anterior al iniciar una nueva solicitud. Esto mejora la usabilidad y evita confusiones al generar múltiples pistas.
- Mantén la interfaz de usuario mínima y fácil de escanear. Un diseño limpio y sencillo ayuda a los usuarios a centrarse en la funcionalidad principal.
Para el frontend, puedes usar cualquier framework de JavaScript (React, Vue, Svelte) o simplemente JavaScript plano. La clave es manejar las solicitudes HTTP de forma asíncrona y actualizar el DOM dinámicamente.
Resumen
- Hemos aprendido a estructurar un backend seguro para interactuar con la API de ElevenLabs.
- Implementamos la validación de prompts y el manejo de errores en el servidor.
- Diseñamos un frontend interactivo para la entrada de prompts y la reproducción de audio.
- Aseguramos que las claves de API se manejen de forma segura en el lado del servidor.
- Proporcionamos una experiencia de usuario fluida con estados de carga y opciones de descarga.