PTENES
MÓDULO 5-2

🎙️ 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.

6
Temas
~35
Minutos
Intermedio
Nivel
Práctico
Tipo
1

🎚️ 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

Interfaz

La puerta por la que entra y sale la conversación (texto o voz).

Orquestador

El cerebro que piensa, actúa y decide la respuesta.

Salida opcional

Hablar se elige en cada mensaje, no está siempre activado.

Capita de voz

La voz complementa al asistente de texto; no lo reemplaza.

2

👂 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 flujo de voz, de principio a fin 🎤 audio .ogg / Opus ffmpeg → .wav 16kHz Whisper STT (pt) orquestador LLM + tools "el cerebro" TTS texto → voz 🔊 respuesta audio — ESCUCHAR (STT) — — HABLAR (TTS) —

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

STT

«Speech-to-Text»: transformar voz en texto.

.ogg / Opus

El formato de audio que entrega Telegram.

ffmpeg

La herramienta que convierte el audio de un formato a otro.

Whisper

El modelo que transcribe el audio a texto.

3

🗣️ 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

TTS

«Text-to-Speech»: transformar texto en voz.

Voz (preset)

El timbre elegido, p. ej., "nova" en el tts-1.

TTS en la nube

Natural y sin hardware, pero de pago y no privado.

TTS local

Gratis, privada y sin conexión; suena más robótica.

4

🚦 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.

El motor que decide cada respuesta pedido (texto o voz) Policy Engine «¿es sencillo? ¿es urgente?» canal: texto vs. voz lista = texto · «en el auto» = voz modelo: barato vs. premium trivial = barato · difícil = premium escala a una persona caso sensible = persona real respuesta correcta al costo adecuado

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

Policy Engine

El “portero” que decide el camino de cada mensaje.

Decisión por respuesta

Elegir caso por caso, no una configuración fija.

Económico vs. premium

Modelo sencillo para lo trivial, potente para lo difícil.

Escalar a una persona

Los casos delicados se derivan a una persona de verdad.

5

🏠 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.

COPY-RUN · escuchar un audio + ejecutar el cerebro local terminal + .env

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

En el dispositivo

La IA funciona en tu dispositivo, no en un servidor.

Ollama

La herramienta que ejecuta modelos abiertos localmente.

Regla de la RAM

3B@8GB, 8B@16GB; la CPU es lenta, la GPU acelera.

Hot-swap (.env)

Cambiar de nube a local tocando solo la configuración.

6

📞 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.

v1

Solo texto

El punto de partida: Jarvis lee y escribe. Sólido, económico y siempre presente.

v2

Voz asíncrona

Mensajes de voz (el pipeline Whisper + TTS de este módulo). Envías audio, recibes audio.

v3

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

✓
Voz e interfaz, no cerebro — el orquestador de texto piensa; la voz solo añade oído y boca, y la boca es opcional.
✓
Escuchar (STT) y hablar (TTS) — audio .ogg → ffmpeg → Whisper → texto; y texto → TTS → audio. Cuidado: clave de OpenAI ≠ Anthropic.
✓
Decisión por respuesta — el Policy Engine elige texto/voz, modelo económico/premium y cuándo escalar a una persona.
✓
En el dispositivo y en tiempo real — Ollama ejecuta el cerebro local (regla de la RAM, hot-swap en .env); la conexión en tiempo real está en la hoja de ruta, calibra la latencia.

Siguiente módulo:

5-3 — Montando tu Jarvis de bolsillo (proyecto guiado de principio a fin)