🎙️ Asistente de Voz en Tiempo Real - Gemini Live
🚀 Nueva Experiencia
¡Hemos mejorado el asistente de voz usando Gemini Live API! Ahora puedes tener conversaciones naturales en tiempo real sin esperar a que termine de grabar.
🆕 ¿Qué Cambió?
Antes (Comando de Voz Tradicional)
- Presionas el botón
- Hablas
- Detienes la grabación
- Esperas la transcripción
- Esperas el procesamiento
- Recibes la respuesta
Ahora (Gemini Live - Conversación en Tiempo Real)
- Presionas el botón grande morado
- ¡Hablas y la IA te responde INMEDIATAMENTE!
- Es una conversación bidireccional fluida
- Puedes interrumpir y preguntar más cosas
- La IA te habla con voz natural
🎯 Tres Botones Flotantes
1️⃣ Botón GRANDE Morado 🆕 (Gemini Live)
- Icono: Chat bubble outline
- Tamaño: Grande (FloatingActionButton.large)
- Función: Conversación en tiempo real
- Experiencia: Bidireccional, fluida, con voz
- Ventajas:
- ✅ Conversación natural
- ✅ Respuestas instantáneas con audio
- ✅ Puedes interrumpir
- ✅ Multiples preguntas seguidas
- ✅ La IA habla contigo (voz Achernar)
Comandos disponibles:
- “Cambia el color a verde”
- “¿Qué tiempo hace hoy?”
- “Resume mi semana”
- “Elimina la última entrada”
2️⃣ Botón Azul (Crear Nota de Voz)
- Icono: Mic
- Función: Graba nota → crea entrada automática
- Ventaja: Perfecto para agregar entradas rápidas
3️⃣ Botón Extendido (Nueva Entrada Manual)
- Texto: “Nueva Entrada”
- Función: Formulario tradicional con texto e imágenes
🎨 Estados Visuales del Asistente Live
Estado Reposo
- Color: Morado profundo
- Texto: “Hablar”
- Icono: Chat bubble
Estado Conversando
- ✨ Efecto de pulso animado
- Color: Verde (conversación activa)
- Sombra morada difuminada
- Escala 1.0 → 1.2 (respira)
- Texto: “Detener”
- Icono: Stop circle
Estado Configurando
- Spinner blanco
- Semi-transparente
🗣️ Cómo Usar el Asistente Live
Inicio de Conversación
1. Toca el botón GRANDE morado
2. Verás el efecto de pulso verde
3. Escucha confirmación de audio (opcional)
4. Empieza a hablar naturalmente
Durante la Conversación
- Habla normalmente, como con una persona
- La IA te responderá con VOZ
- Puedes hacer preguntas de seguimiento
- No necesitas esperar turnos estrictos
Ejemplos de Conversación
Cambio de Color:
Usuario: "Hola, quiero cambiar el color de la app"
IA: "Claro, ¿de qué color te gustaría?"
Usuario: "Morado por favor"
IA: "Color cambiado a morado exitosamente"
[La app cambia de color en tiempo real]
Pregunta Cotidiana:
Usuario: "¿Qué tiempo hace hoy?"
IA: "Hoy hace un día soleado con temperaturas agradables.
Es un buen día para salir a caminar"
Resumen:
Usuario: "¿Puedes hacer un resumen de mi semana?"
IA: "Claro, buscando tus entradas..."
IA: "Esta semana has tenido 5 entradas. Tuviste un día muy
productivo el lunes con tu reunión exitosa. El miércoles
fue difícil pero superaste los desafíos. En general,
muestras gratitud y resiliencia"
Eliminación:
Usuario: "Elimina la última entrada"
IA: "¿Estás seguro de eliminar 'Reflexiones de la tarde'?"
Usuario: "Sí, elimínala"
IA: "Entrada eliminada exitosamente"
🎤 Configuración de Audio
Parámetros Optimizados
- Sample Rate: 24000 Hz (calidad telefónica HD)
- Channels: Mono (1 canal)
- Encoder: PCM 16 bits
- Echo Cancel: ✅ Activado
- Noise Suppress: ✅ Activado
iOS Específico
categoryOptions: defaultToSpeaker
- Audio sale por el speaker principal
Android Específico
audioSource: voiceCommunication
- Optimizado para llamadas
🔧 Arquitectura Técnica
Flujo de Datos
[Micrófono]
↓ Stream PCM 16-bit
[AudioRecorder]
↓ Uint8List chunks
[InlineDataPart wrapper]
↓ Media stream
[Gemini Live Session]
↓ Procesamiento en tiempo real
[LiveServerMessage]
↓ Audio response
[SoLoud Buffer Stream]
↓ Reproducción
[Speaker]
Componentes Clave
LiveGenerativeModel:
- Model:
gemini-1.5-flash
- Voice:
Achernar (español)
- Modality:
audio (responde con voz)
- Tools: 3 function declarations
LiveSession:
- Conexión persistente
- Bidireccional
- Baja latencia
- Manejo de interrupciones
Function Calls:
setAppColor - Cambiar color de la app
getDiarySummary - Obtener resumen de entradas
deleteEntry - Eliminar entrada (con confirmación)
📊 Comparación: Live vs Comando Tradicional
| Característica |
Gemini Live |
Comando Tradicional |
| Latencia |
<1 segundo |
3-5 segundos |
| Interacción |
Bidireccional |
Unidireccional |
| Audio respuesta |
Sí (voz natural) |
No (solo texto) |
| Interrupciones |
Sí |
No |
| Multiples preguntas |
Sí (fluido) |
No (una por vez) |
| Uso de red |
Streaming continuo |
Burst al final |
| Experiencia |
Conversación real |
Dictado por comandos |
🎯 Casos de Uso Ideales
Usa Gemini Live Para:
✅ Preguntas complejas con seguimiento
✅ Cambios que requieren confirmación
✅ Consultas que necesitas escuchar
✅ Conversaciones largas
✅ Cuando quieres una experiencia natural
Usa Comando de Voz Tradicional Para:
✅ Crear notas rápidas del diario
✅ Dictado largo sin interrupciones
✅ Cuando prefieres revisar el texto antes
✅ Ambientes con mala conexión
Tiempo de Respuesta (promedio)
- Inicio de sesión: ~2 segundos
- Primera respuesta: <1 segundo
- Respuestas subsecuentes: <500ms
- Latencia de audio: ~200ms
Uso de Recursos
- RAM: ~50MB adicional durante conversación
- Red: 20-30 KB/s streaming bidireccional
- CPU: Bajo (manejo de streams)
- Batería: Moderado (mic + speaker activos)
🔐 Privacidad y Seguridad
- ✅ Audio no se almacena en el dispositivo
- ✅ Streaming directo a Gemini API
- ✅ Sin grabaciones permanentes
- ✅ Sesión cerrada al detener
- ✅ Permisos de micrófono requeridos
🐛 Troubleshooting
“Error de audio”
Causa: Inicialización de SoLoud falló
Solución:
- Reinicia la app
- Verifica que no haya otra app usando audio
“Permiso de micrófono requerido”
Solución: Ve a Configuración > [App] > Micrófono > Activar
No escucho la respuesta de la IA
Soluciones:
- Sube el volumen del dispositivo
- Verifica que el altavoz funcione
- En iOS, confirma
defaultToSpeaker activo
La IA no me entiende
Soluciones:
- Habla más cerca del micrófono
- Reduce ruido de fondo
- Habla más despacio y claro
- Reformula la pregunta
Conversación se interrumpe
Causas posibles:
- Conexión de red inestable
- Batería muy baja
- Otra app tomó control del audio
🎓 Tips Pro
- Habla natural: No necesitas comandos exactos
- Interrumpe cuando quieras: La IA maneja interrupciones
- Pregunta de seguimiento: “Y qué más?” funciona
- Sé específico en colores: Di el nombre exacto
- Para resumenes, especifica el tiempo: “hoy”, “esta semana”
- Confirma eliminaciones verbalmente: La IA pedirá confirmación
📈 Próximas Mejoras
Desarrollado con ❤️ usando Gemini Live API