🎙️ Voz y on-device: hablar, escuchar y ejecutarse localmente
Enviar un audio a Jarvis y escuchar su respuesta con voz parece magia, pero es solo una cadena de piezas simples: el audio se convierte en texto, el texto en una respuesta y la respuesta en audio. En este módulo armas ese pipeline en tu mente, entiendes por qué la voz es solo la "puerta" (y no el cerebro) y descubres cómo ejecutar el motor de IA dentro de casa, en tu propia computadora.
🎚️ Voz e interfaz, no cerebro
Antes de escribir código, una frase que organiza todo el módulo: "la voz es interfaz; el orquestador es el cerebro; hablar es una salida opcional que se decide en el momento". La voz no piensa. Solo lleva lo que dices hacia adentro y trae la respuesta hacia afuera. Quien piensa —quien decide qué responder, qué herramienta usar y qué recordar— es el mismo orquestador de texto que ya conoces de las otras trilhas.
Esto cambia por completo cómo piensas el proyecto. La voz no es "una IA diferente": es una caparazón alrededor del Jarvis que ya tienes. Primero construyes el cerebro (texto) y solo después conectas el oído y la boca. Si la voz falla, el asistente de texto sigue funcionando.
¿Eres nuevo aquí? Uno orquestador y es el "director de orquesta" de Jarvis: el fragmento de código que recibe tu mensaje, conversa con el modelo de IA, llama a herramientas (agenda, búsqueda, correo electrónico) y arma la respuesta. La interfaz y es solo el canal por el que esto entra y sale: puede ser texto en Telegram, voz o ambas cosas. El cerebro siempre es el mismo; solo cambia la puerta.
🧩 Tres capas, roles separados
- •Entrada de voz (oído): convierte el audio que enviaste en texto. Opcional.
- •Orquestador (cerebro): lee el texto, piensa, actúa, decide la respuesta. Siempre presente.
- •Salida de voz (boca): convierte la respuesta en audio. Opcional, se decide en cada mensaje.
📊 Por qué importa «opcional»
No siempre quieres oír hablar a Jarvis. Una lista de compras funciona mejor en texto (puedes leerla de un vistazo); un "recordatorio mientras conduzco" funciona mejor por voz. Como la voz es opcional y se decide en el momento, el mismo asistente sirve para ambas situaciones sin que tengas que cambiar de app.
Conceptos clave
La puerta por la que entra y sale la conversación (texto o voz).
El cerebro que piensa, actúa y decide la respuesta.
Hablar se elige en cada mensaje, no está siempre activado.
La voz complementa al asistente de texto; no lo reemplaza.
👂 Escuchar: del audio al texto (STT)
Cuando mantienes presionado el micrófono en Telegram y envías un audio, la app entrega un archivo en un formato llamado .ogg (con compresión Opus) —ideal para enviar por la red, pero que los transcriptores no siempre aceptan directamente. El proceso de "escuchar" tiene tres pasos: recibir el audio → convertir el formato → transcribir a texto. Solo después de tener listo ese texto entra el cerebro.
El camino completo: entra el audio por la izquierda, el el cerebro piensa en medio, y la la voz sale por la derecha. Fíjate en que el LLM del centro es el mismo que respondería por texto: la voz solo agrega los extremos.
El motor de transcripción más usado se llama Whisper (de OpenAI). Tú envías el audio convertido y te devuelve el texto, eligiendo el idioma (en nuestro caso, pt de portugués). Una trampa que hace caer a mucha gente: la clave de API de Whisper es la clave de OpenAI (OPENAI_API_KEY), que es DIFERENTE de la clave de Anthropic (ANTHROPIC_API_KEY) que se usa para el cerebro. Son dos empresas, dos claves, dos registros.
⚠️ El error clásico de intercambiar las claves
Si pones la clave de Anthropic donde Whisper espera la de OpenAI (o viceversa), la transcripción falla con un error de «autenticación no válida» y parece que todo se rompió, cuando solo es la clave equivocada en el campo equivocado. Ten esto presente: escuchar/hablar por OpenAI = OPENAI_API_KEY; pensar por Anthropic = ANTHROPIC_API_KEY. (Whisper también funciona localmente y gratis, sin ninguna clave; consulta el tema 5.)
Conceptos clave
«Speech-to-Text»: transformar voz en texto.
El formato de audio que entrega Telegram.
La herramienta que convierte el audio de un formato a otro.
El modelo que transcribe el audio a texto.
🗣️ Hablar: del texto al audio (TTS)
El camino de vuelta es el reflejo de "escuchar". El cerebro produce la respuesta en texto; un modelo de voz lee ese texto en voz alta y genera un archivo de audio que Telegram reproduce para ti. Esto se llama TTS — "Text-to-Speech", texto a voz. Tú todavía eliges qué voz usar: grave, aguda, cálida, neutra.
Aquí tienes dos grandes familias de opciones, y la elección repite el tema de todo el curso (nube x local). Una voz de nube (por ejemplo, el modelo tts-1 de OpenAI, con voces con nombre como "nova") suena muy natural y no exige hardware, pero cuesta por uso y envía el texto afuera. Una voz local funciona en tu computadora, es gratis y privada, pero suele sonar un poco más robótica y consume muchos recursos de la máquina.
✓ Voz en la nube (p. ej.: tts-1 / "nova")
- ✓Suena muy natural, casi humana.
- ✓No requiere nada de tu hardware.
- ✓Varias voces listas para elegir.
- ✗Se paga por uso y el texto sale de tu máquina.
✓ Voz local (se ejecuta en tu PC)
- ✓Gratis después de instalarla, para siempre.
- ✓Privada: el texto nunca sale de casa.
- ✓Funciona sin conexión a Internet.
- ✗Voz un poco más robótica y que exige más a la máquina.
💡 Consejo práctico
Empieza con la voz en la nube solo para ver el resultado funcionando de principio a fin; es más fácil de conectar. Cuando todo el pipeline esté en marcha, cambia la voz por la versión local si la privacidad o el costo son importantes. Recuerda: cambiar la voz no modifica el cerebro; solo cambia la pieza de salida.
Conceptos clave
«Text-to-Speech»: transformar texto en voz.
El timbre elegido, p. ej., "nova" en el tts-1.
Natural y sin hardware, pero de pago y no privado.
Gratis, privada y sin conexión; suena más robótica.
🚦 Decisión según la respuesta: el Policy Engine
Si la voz es opcional y el cerebro puede ser barato o caro, alguien tiene que decidir con cada mensaje: ¿respondo con texto o con voz? ¿Uso el modelo económico o el premium? ¿Lo derivo a una persona? Este "portero de decisiones" tiene un nombre en el ecosistema: Policy Engine (motor de políticas). Analiza cada pedido y elige el camino más barato que aún lo resuelve bien.
O Policy Engine revisa cada solicitud y decide tres cosas: por dónde responder (texto o voz), con qué modelo (barato o premium) y si necesitas un humano. Resultado: la respuesta correcta, al costo adecuado.
La lógica es puro sentido común económico. «¿Qué hora es?» no necesita el modelo más caro del mundo ni una voz producida: texto breve, modelo barato y listo. En cambio, «ayúdame a reescribir este correo difícil para mi jefe» merece el cerebro premium. Decidir en cada respuesta, y no de una vez para siempre, es lo que mantiene bajo el costo sin perder calidad donde importa.
Conceptos clave
El “portero” que decide el camino de cada mensaje.
Elegir caso por caso, no una configuración fija.
Modelo sencillo para lo trivial, potente para lo difícil.
Los casos delicados se derivan a una persona de verdad.
🏠 On-device de verdad: el cerebro local con Ollama
Hasta aquí el cerebro vivía en la nube. Pero puedes poner el motor de IA dentro de casa, en tu propia computadora. La herramienta estándar para eso se llama Ollama: instalas, descargas un modelo abierto y responde — gratis, privado y sin conexión. El término para esto es en el dispositivo: la inteligencia funciona en el dispositivo, no en un servidor distante.
📊 Qué modelo cabe en tu hardware (regla de la RAM)
Los modelos se miden en "B" (miles de millones de parámetros: el «tamaño del cerebro»). Más grande = más inteligente, pero exige más recursos. La regla práctica usa tu RAM (la memoria de trabajo de la computadora):
- •~3B (p. ej.: llama3.2): funciona cómodamente con 8 GB de RAM.
- •~8B: pide 16 GB de RAM para que no se trabe.
- •Sin tarjeta gráfica (solo CPU): funciona, pero es lento — 30 a 60 segundos por respuesta. Una GPU (tarjeta gráfica) o la nube aceleran mucho.
La belleza del diseño del curso es que cambiar el cerebro de la nube al entorno local no implica reescribir Jarvis. Modificas un archivo de configuración llamado .env (donde están las «claves y ajustes» del proyecto) y apunta el proveedor a Ollama. El resto del sistema —canales, memoria, voz— ni se da cuenta. Esto es el hot-swap: cambiar el motor sin desarmar el auto.
Objetivo: convertir un audio de Telegram a texto con Whisper y, en paralelo, conectar el cerebro local (Ollama) cambiando una línea del .env. No sale nada de tu máquina.
// 1) instala el motor local y descarga un modelo que quepa en tu RAM
curl -fsSL https://ollama.com/install.sh | sh
ollama pull <modelo-que-cabe-na-sua-RAM> # ex.: llama3.2 (8GB) ou llama3.1:8b (16GB)
ollama serve # deixa o motor local ouvindo (porta 11434)
// 2) el audio llegó como .ogg/Opus -> conviértelo a .wav 16kHz con el ffmpeg
ffmpeg -i <seu-audio>.ogg -ar 16000 -ac 1 voz.wav
# transcreva para texto (Whisper local, gratis, idioma pt) — sem chave nenhuma:
whisper voz.wav --language pt --model small --output_format txt
// 3) apunta el cerebro de Jarvis a Ollama en el archivo .env (hot-swap)
LLM_PROVIDER=ollama
LLM_MODEL=<o-mesmo-modelo-que-voce-baixou>
OLLAMA_HOST=http://localhost:11434
# (se um dia quiser voltar pra nuvem, troque so estas linhas — o resto fica igual)
Cómo verificar:
- • Apareció un archivo
voz.txt¿con la transcripción correcta de lo que dijiste? La escucha (STT) funciona. - • Ejecuta
ollama run <seu-modelo> "diga oi"— si responde en la terminal, el cerebro local está funcionando. - • Reinicia Jarvis: en la primera respuesta, NO debe salir NINGÚN tráfico a internet (compruébalo sin red, en modo avión): es señal de que el cerebro se volvió realmente local.
Conceptos clave
La IA funciona en tu dispositivo, no en un servidor.
La herramienta que ejecuta modelos abiertos localmente.
3B@8GB, 8B@16GB; la CPU es lenta, la GPU acelera.
Cambiar de nube a local tocando solo la configuración.
📞 Tiempo real (avanzado): del mensaje de voz a la llamada
Todo lo que vimos hasta aquí es voz asíncrona: envías un audio, esperas y recibes otro audio. Es como intercambiar mensajes de voz por WhatsApp. El siguiente sueño es la voz en tiempo real — una llamada telefónica de verdad con Jarvis, donde hablas y responde casi al instante, e incluso puedes interrumpirlo. Esa es la cima de la montaña, y conviene ajustar las expectativas: todavía es difícil.
Solo texto
El punto de partida: Jarvis lee y escribe. Sólido, económico y siempre presente.
Voz asíncrona
Mensajes de voz (el pipeline Whisper + TTS de este módulo). Envías audio, recibes audio.
Conexión en tiempo real
Conversación fluida por teléfono, a través de servicios como Twilio o LiveKit, con una meta de latencia por debajo de 1,5 segundo.
⚠️ Por qué el tiempo real es difícil: latencia
Latencia y es el tiempo que pasa entre que terminas de hablar y Jarvis empieza a responder. En una llamada, más de ~1,5 segundo de silencio ya parece una falla, se siente raro. Pero ese tiempo tiene que incluir TODO el pipeline: escuchar + pensar + hablar. Por eso, el tiempo real es parte de la hoja de ruta, no tu primer proyecto. Empieza con la voz asíncrona, que tolera los retrasos y ya ofrece el 90% del encanto.
🧭 El camino honesto
Sube la escalera un peldaño a la vez: primero un texto sólido, después voz asíncrona, y solo considera el tiempo real cuando lo demás esté bien resuelto. No Módulo 5-3 vas a armar tu Jarvis de bolsillo de principio a fin — bot, cerebro, memoria, skill y voz — usando exactamente las piezas de este módulo.
Autoevaluación (opcional): en el flujo de voz, ¿quién REALMENTE piensa y decide la respuesta?
🎯 Resumen del módulo
Siguiente módulo:
5-3 — Montando tu Jarvis de bolsillo (proyecto guiado de principio a fin)