
Giving voice back to stroke survivors
On World Stroke Day, the ElevenLabs Impact Program is partnering with Stroke Onward to help survivors reclaim their voices.
Vibe Draw combina la voz IA de ElevenLabs con FLUX Kontext para la creación de imágenes impulsada por voz.
Las interfaces de voz están cambiando cómo nos comunicamos con la IA. ¿Y si crear una imagen fuera tan fácil como describirla en voz alta?
Esa es la idea que me llevó a crear Vibe Draw como un proyecto de fin de semana. Es una herramienta creativa centrada en la voz que combina la voz IA de ElevenLabs con FLUX Kontext de Black Forest Labs para convertir prompts hablados en imágenes.
FLUX Kontext representa una nueva clase de modelo de imagen. A diferencia de los sistemas tradicionales de texto a imagen, Kontext maneja tanto la generación como la edición. Puede crear nuevas imágenes a partir de prompts, modificar las existentes e incluso fusionar múltiples imágenes de referencia en una sola salida.
Mientras que modelos como GPT-4o y Gemini 2 Flash ofrecen capacidades multimodales, FLUX Kontext está diseñado específicamente para la manipulación visual de alta calidad. En las pruebas, pude cambiar letras individuales en texto estilizado o reposicionar un objeto, solo describiendo el cambio.
Entonces pensé: “¿Por qué no hacer esto con la voz?” ¿Y qué mejor base que la potente tecnología de voz de ElevenLabs?
.webp&w=3840&q=95)
Construir un sistema de imágenes impulsado por voz requirió resolver cinco problemas clave:
Vibe Draw funciona completamente del lado del cliente e integra los siguientes componentes:
Este enfoque mantiene el prototipo ligero, pero las implementaciones en producción deberían gestionar las solicitudes del lado del servidor por seguridad.
Vibe Draw utiliza la API de texto a voz de ElevenLabs, ajustada para una respuesta conversacional:
| 1 | const voiceSettings = { |
| 2 | model_id: "eleven_turbo_v2", |
| 3 | voice_settings: { |
| 4 | stability: 0.5, |
| 5 | similarity_boost: 0.75 |
| 6 | } |
| 7 | }; |
| 8 |
Para crear variedad, las respuestas de voz se seleccionan aleatoriamente de plantillas predefinidas:
| 1 | const responses = { |
| 2 | generating: [ |
| 3 | "Ooh, I love that idea! Let me bring it to life...", |
| 4 | "That sounds awesome! Creating it now...", |
| 5 | "Great description! Working on it..." |
| 6 | ], |
| 7 | editing: [ |
| 8 | "Got it! Let me tweak that for you...", |
| 9 | "Sure thing! Making those changes...", |
| 10 | "No problem! Adjusting it now..." |
| 11 | ] |
| 12 | }; |
| 13 | |
| 14 | function getRandomResponse(type) { |
| 15 | const options = responses[type]; |
| 16 | return options[Math.floor(Math.random() * options.length)]; |
| 17 | } |
| 18 |
Las respuestas de voz superpuestas rompen la ilusión de conversación. Vibe Draw resuelve esto con un sistema de cola de audio:
| 1 | let audioQueue = []; |
| 2 | let isPlayingAudio = false; |
| 3 | |
| 4 | async function queueAudioResponse(text) { |
| 5 | audioQueue.push(text); |
| 6 | if (!isPlayingAudio) { |
| 7 | playNextAudio(); |
| 8 | } |
| 9 | } |
| 10 |
Cada mensaje se reproduce completamente antes de activar el siguiente.
El sistema utiliza detección de palabras clave y contexto para decidir si un prompt del usuario es una nueva solicitud de imagen o una edición:
| 1 | const editKeywords = [ ... ]; |
| 2 | const contextualEditPhrases = [ ... ]; |
| 3 | |
| 4 | if (currentImage && (hasEditKeyword || hasContextClue)) { |
| 5 | await handleEditRequest(text); |
| 6 | } else { |
| 7 | await handleGenerateRequest(text); |
| 8 | } |
| 9 |
Este enfoque asegura que las ediciones solo se apliquen cuando hay una imagen existente y el contexto lo deja claro.

Kontext admite dos modos: generación y edición.
| 1 | const response = await fetch('https://fal.run/fal-ai/flux-pro/kontext/text-to-image', { |
| 2 | ... |
| 3 | body: JSON.stringify({ |
| 4 | prompt: enhancedPrompt, |
| 5 | guidance_scale: 3.5, |
| 6 | num_images: 1, |
| 7 | safety_tolerance: "2", |
| 8 | output_format: "jpeg" |
| 9 | }) |
| 10 | }); |
| 11 |
| 1 | const response = await fetch('https://fal.run/fal-ai/flux-pro/kontext', { |
| 2 | ... |
| 3 | body: JSON.stringify({ |
| 4 | prompt: instruction, |
| 5 | image_url: currentImage, |
| 6 | guidance_scale: 3.5, |
| 7 | num_images: 1 |
| 8 | }) |
| 9 | }); |
| 10 |
Algunos prompts implican cambios que superan los límites de la API de edición. Cuando se detecta, el sistema ofrece una alternativa:
| 1 | if (hasSignificantChange) { |
| 2 | try { |
| 3 | const enhanced = instruction + ", maintain composition but apply requested changes"; |
| 4 | await editImage(enhanced); |
| 5 | } catch { |
| 6 | queueAudioResponse("That's quite a transformation! Would you like me to create a fresh image instead?"); |
| 7 | } |
| 8 | } |
| 9 |
La retroalimentación de la interfaz ayuda a los usuarios a seguir el estado del sistema:
| 1 | function updateUI(state) { |
| 2 | switch(state) { |
| 3 | case 'listening': ... |
| 4 | case 'processing': ... |
| 5 | case 'generating': ... |
| 6 | case 'ready': ... |
| 7 | } |
| 8 | } |
| 9 |
La conversación natural requiere una sincronización natural:
| 1 | if (Math.random() > 0.7) { |
| 2 | setTimeout(() => { |
| 3 | queueAudioResponse("Want me to change anything about it?"); |
| 4 | }, 3000); |
| 5 | } |
| 6 |
Para preservar el contexto, se almacenan los datos de la sesión:
| 1 | const saveState = () => { ... }; |
| 2 | const restoreState = () => { ... }; |
| 3 |
Para asegurar la capacidad de respuesta:
Las interfaces conversacionales abren la puerta a nuevas capacidades:
Construir Vibe Draw reveló varios principios fundamentales para herramientas centradas en la voz:
Vibe Draw muestra lo que sucede cuando la voz IA conversacional se encuentra con la creatividad visual. La síntesis de voz natural de ElevenLabs y las APIs de imagen de FLUX Kontext se combinan para crear una nueva forma de crear: sin clics, sin deslizadores, solo voz.
Cuando crear es tan fácil como describir, eliminamos las barreras entre la imaginación y la ejecución.
El código fuente completo está disponible en GitHub. Para ejecutar tu propia versión:

On World Stroke Day, the ElevenLabs Impact Program is partnering with Stroke Onward to help survivors reclaim their voices.

Increasing client engagement with voice-first assistants
Desarrollado por ElevenLabs Agentes