MODULO 5-2

๐ŸŽ™๏ธ Voz e on-device: falar, ouvir e rodar local

Mandar um audio para o Jarvis e ouvir ele responder com voz parece magica โ€” mas e so uma corrente de pecas simples: o audio vira texto, o texto vira resposta, a resposta vira audio. Neste modulo voce monta esse pipeline na cabeca, entende por que a voz e so a "porta" (e nao o cerebro), e descobre como rodar o motor de IA dentro de casa, no seu proprio computador.

6
Topicos
~35
Minutos
Intermediario
Nivel
Pratico
Tipo
1

๐ŸŽš๏ธ Voz e interface, nao cerebro

Antes de qualquer codigo, uma frase que organiza o modulo inteiro: "voz e interface; o orquestrador e o cerebro; falar e uma saida opcional decidida na hora". A voz nao pensa. Ela so leva sua fala para dentro e traz a resposta para fora. Quem pensa โ€” quem decide o que responder, qual ferramenta usar, o que lembrar โ€” e o mesmo orquestrador de texto que voce ja conhece das outras trilhas.

Isso muda completamente como voce pensa o projeto. Voz nao e "uma IA diferente": e uma casquinha em volta do Jarvis que voce ja tem. Voce constroi o cerebro primeiro (texto), e so depois pluga ouvido e boca. Se a voz quebrar, o assistente de texto continua de pe.

Novo aqui? Um orquestrador e o "maestro" do Jarvis: o pedaco de codigo que recebe sua mensagem, conversa com o modelo de IA, chama ferramentas (agenda, busca, e-mail) e monta a resposta. A interface e so o canal por onde isso entra e sai โ€” pode ser texto no Telegram, voz, ou os dois. O cerebro e sempre o mesmo; muda so a porta.

๐Ÿงฉ Tres camadas, papeis separados

  • โ€ขEntrada de voz (ouvido): transforma o audio que voce mandou em texto. Opcional.
  • โ€ขOrquestrador (cerebro): le o texto, pensa, age, decide a resposta. Sempre presente.
  • โ€ขSaida de voz (boca): transforma a resposta em audio. Opcional, decidida a cada mensagem.

๐Ÿ“Š Por que "opcional" importa

Voce nem sempre quer ouvir o Jarvis falar. Uma lista de compras e melhor em texto (da pra ler de relance); um "lembrete enquanto dirijo" e melhor em voz. Como a boca e opcional e decidida na hora, o mesmo assistente serve as duas situacoes sem voce trocar de app.

Conceitos-chave

Interface

A porta por onde a conversa entra e sai (texto ou voz).

Orquestrador

O cerebro que pensa, age e decide a resposta.

Saida opcional

Falar e escolhido a cada mensagem, nao sempre ligado.

Casquinha de voz

A voz envolve o assistente de texto; nao o substitui.

2

๐Ÿ‘‚ Ouvir: do audio ao texto (STT)

Quando voce segura o microfone no Telegram e manda um audio, o app entrega um arquivo num formato chamado .ogg (com compressao Opus) โ€” otimo para mandar pela rede, mas que os transcritores nem sempre engolem direto. O caminho do "ouvir" tem tres passos: receber o audio โ†’ converter o formato โ†’ transcrever para texto. So depois desse texto pronto e que o cerebro entra.

O pipeline de voz, fim a fim ๐ŸŽค audio .ogg / Opus ffmpeg โ†’ .wav 16kHz Whisper STT (pt) orquestrador LLM + tools "o cerebro" TTS texto โ†’ voz ๐Ÿ”Š resposta audio โ€” OUVIR (STT) โ€” โ€” FALAR (TTS) โ€”

O caminho completo: audio entra pela esquerda, o cerebro pensa no meio, e a voz sai pela direita. Repare que o LLM no centro e o mesmo que responderia em texto โ€” voz so adiciona as pontas.

O motor de transcricao mais usado se chama Whisper (da OpenAI). Voce manda o audio convertido e ele devolve o texto, escolhendo o idioma (no nosso caso, pt de portugues). Uma pegadinha que derruba muita gente: a chave de API do Whisper e a chave da OpenAI (OPENAI_API_KEY), que e DIFERENTE da chave da Anthropic (ANTHROPIC_API_KEY) usada para o cerebro. Sao duas empresas, duas chaves, dois cadastros.

โš ๏ธ O erro classico das chaves trocadas

Se voce colocar a chave da Anthropic onde o Whisper espera a da OpenAI (ou vice-versa), a transcricao falha com um erro de "autenticacao invalida" e parece que tudo quebrou โ€” quando e so a chave errada na caixa errada. Guarde mentalmente: ouvir/falar pela OpenAI = OPENAI_API_KEY; pensar pela Anthropic = ANTHROPIC_API_KEY. (E o Whisper tambem roda local e gratis, sem chave nenhuma โ€” veja o topico 5.)

Conceitos-chave

STT

"Speech-to-Text": transformar fala em texto.

.ogg / Opus

O formato de audio que o Telegram entrega.

ffmpeg

A ferramenta que converte o audio de um formato para outro.

Whisper

O modelo que transcreve o audio em texto.

3

๐Ÿ—ฃ๏ธ Falar: do texto ao audio (TTS)

O caminho de volta e o espelho do "ouvir". O cerebro produz a resposta em texto; um modelo de voz le esse texto em voz alta e gera um arquivo de audio que o Telegram toca de volta para voce. Isso se chama TTS โ€” "Text-to-Speech", texto para fala. Voce ainda escolhe qual voz usar: grave, aguda, calorosa, neutra.

Aqui voce tem duas grandes familias de opcoes, e a escolha repete o tema do curso inteiro (nuvem x local). Uma voz de nuvem (por exemplo o modelo tts-1 da OpenAI, com vozes nomeadas como "nova") soa muito natural e nao exige hardware โ€” mas custa por uso e manda o texto para fora. Uma voz local roda no seu computador, e gratis e privada, mas costuma soar um pouco mais robotica e pesa na maquina.

โœ“ Voz na nuvem (ex.: tts-1 / "nova")

  • โœ“Soa muito natural, quase humana.
  • โœ“Nao exige nada do seu hardware.
  • โœ“Varias vozes prontas para escolher.
  • โœ—Custa por uso e o texto sai da sua maquina.

โœ“ Voz local (roda no seu PC)

  • โœ“Gratis depois de instalada, para sempre.
  • โœ“Privada: o texto nunca sai de casa.
  • โœ“Funciona offline, sem internet.
  • โœ—Voz um pouco mais robotica e pesa na maquina.

๐Ÿ’ก Dica pratica

Comece com a voz de nuvem so para sentir o resultado funcionando ponta a ponta โ€” e mais facil de plugar. Quando o pipeline inteiro estiver de pe, troque a boca pela versao local se privacidade ou custo pesarem. Lembre: trocar a voz nao mexe no cerebro; e so a peca da ponta.

Conceitos-chave

TTS

"Text-to-Speech": transformar texto em fala.

Voz (preset)

O timbre escolhido โ€” ex.: "nova" no tts-1.

TTS de nuvem

Natural e sem hardware, mas paga e nao privada.

TTS local

Gratis, privada e offline; soa mais robotica.

4

๐Ÿšฆ Decisao por resposta: o Policy Engine

Se a boca e opcional e o cerebro pode ser barato ou caro, alguem precisa decidir a cada mensagem: respondo em texto ou em voz? Uso o modelo barato ou o premium? Encaminho para um humano? Esse "porteiro de decisoes" tem um nome no ecossistema: Policy Engine (motor de politica). Ele olha cada pedido e escolhe o caminho mais barato que ainda resolve bem.

O motor que decide cada resposta pedido (texto ou voz) Policy Engine "e simples? e urgente?" canal: texto vs voz lista = texto ยท "no carro" = voz modelo: barato vs premium trivial = barato ยท dificil = premium escala para humano caso sensivel = pessoa de verdade resposta certa no custo certo

O Policy Engine olha cada pedido e decide tres coisas: por onde responder (texto ou voz), com qual modelo (barato ou premium) e se precisa de um humano. Resultado: a resposta certa, no custo certo.

A logica e puro bom senso economico. "Que horas sao?" nao precisa do modelo mais caro do mundo nem de uma voz produzida โ€” texto curto, modelo barato, fim. Ja "me ajude a reescrever este e-mail dificil para o meu chefe" merece o cerebro premium. Decidir por resposta, e nao uma vez para sempre, e o que mantem a conta baixa sem perder qualidade onde importa.

Conceitos-chave

Policy Engine

O "porteiro" que decide o caminho de cada mensagem.

Decisao por resposta

Escolher caso a caso, nao uma config fixa.

Barato vs premium

Modelo simples no trivial, potente no dificil.

Escalar p/ humano

Casos sensiveis vao para uma pessoa de verdade.

5

๐Ÿ  On-device de verdade: o cerebro local com Ollama

Ate aqui o cerebro morava na nuvem. Mas da para colocar o motor de IA dentro de casa, no seu proprio computador. A ferramenta-padrao para isso se chama Ollama: voce instala, baixa um modelo aberto, e ele responde โ€” gratis, privado e offline. O termo para isso e on-device: a inteligencia roda no aparelho, nao num servidor distante.

๐Ÿ“Š Que modelo cabe no seu hardware (regra da RAM)

Modelos sao medidos em "B" (bilhoes de parametros โ€” o "tamanho do cerebro"). Maior = mais esperto, mas pesa mais. A regra pratica usa a sua RAM (a memoria de trabalho do computador):

  • โ€ข~3B (ex.: llama3.2): roda confortavel com 8 GB de RAM.
  • โ€ข~8B: pede 16 GB de RAM para nao engasgar.
  • โ€ขSem placa de video (so CPU): funciona, mas e lento โ€” 30 a 60 segundos por resposta. Uma GPU (placa de video) ou a nuvem aceleram muito.

A beleza do desenho do curso e que trocar o cerebro de nuvem para local nao reescreve o Jarvis. Voce mexe num arquivo de configuracao chamado .env (onde ficam as "chaves e ajustes" do projeto) e aponta o provedor para o Ollama. O resto do sistema โ€” canais, memoria, voz โ€” nem percebe. Isso e o hot-swap: trocar o motor sem desmontar o carro.

COPY-RUN ยท ouvir um audio + rodar o cerebro local terminal + .env

Objetivo: converter um audio do Telegram para texto com o Whisper e, em paralelo, ligar o cerebro local (Ollama) trocando uma linha do .env. Nada sai da sua maquina.

// 1) instale o motor local e baixe um modelo que cabe na sua 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) o audio chegou como .ogg/Opus -> converta para .wav 16kHz com o 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) aponte o cerebro do Jarvis para o Ollama no arquivo .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)

Como verificar:

  • โ€ข Apareceu um arquivo voz.txt com a transcricao certa do que voce falou? O ouvir (STT) funciona.
  • โ€ข Rode ollama run <seu-modelo> "diga oi" โ€” se ele responder no terminal, o cerebro local esta de pe.
  • โ€ข Reinicie o Jarvis: na primeira resposta, NENHUM trafego deve sair para a internet (cheque sem rede, em modo aviao) โ€” sinal de que o cerebro virou local de verdade.

Conceitos-chave

On-device

A IA roda no seu aparelho, nao num servidor.

Ollama

A ferramenta que roda modelos abertos localmente.

Regra da RAM

3B@8GB, 8B@16GB; CPU e lento, GPU acelera.

Hot-swap (.env)

Trocar nuvem por local mexendo so na config.

6

๐Ÿ“ž Tempo real (avancado): da mensagem de voz a ligacao

Tudo que vimos ate aqui e voz assincrona: voce manda um audio, espera, recebe outro audio. E como trocar mensagens de voz no WhatsApp. O sonho seguinte e a voz em tempo real โ€” uma ligacao telefonica de verdade com o Jarvis, onde voce fala e ele responde quase na hora, podendo ate ser interrompido. Isso e o topo da montanha, e vale calibrar a expectativa: ainda e dificil.

v1

So texto

O ponto de partida: o Jarvis le e escreve. Robusto, barato, sempre presente.

v2

Voz assincrona

Mensagens de voz (o pipeline Whisper + TTS deste modulo). Voce manda audio, recebe audio.

v3

Ligacao em tempo real

Conversa fluida por telefone, via servicos como Twilio ou LiveKit, com meta de latencia abaixo de 1,5 segundo.

โš ๏ธ Por que tempo real e dificil: latencia

Latencia e o atraso entre voce terminar de falar e o Jarvis comecar a responder. Numa ligacao, mais de ~1,5 segundo de silencio ja parece quebrado, esquisito. So que esse tempo precisa caber TODO o pipeline: ouvir + pensar + falar. Por isso tempo real e roadmap, nao o seu primeiro projeto. Comece pela voz assincrona, que perdoa atrasos โ€” e ja entrega 90% do encanto.

๐Ÿงญ O caminho honesto

Suba a escada um degrau de cada vez: texto solido primeiro, depois voz assincrona, e so encare o tempo real quando o resto estiver redondo. No Modulo 5-3 voce vai montar seu Jarvis de bolso de ponta a ponta โ€” bot, cerebro, memoria, skill e voz โ€” usando exatamente as pecas deste modulo.

Auto-checagem (opcional): no pipeline de voz, quem REALMENTE pensa e decide a resposta?

๐ŸŽฏ Resumo do modulo

โœ“
Voz e interface, nao cerebro โ€” o orquestrador de texto pensa; voz so adiciona ouvido e boca, e a boca e opcional.
โœ“
Ouvir (STT) e falar (TTS) โ€” audio .ogg โ†’ ffmpeg โ†’ Whisper โ†’ texto; e texto โ†’ TTS โ†’ audio. Cuidado: chave da OpenAI โ‰  Anthropic.
โœ“
Decisao por resposta โ€” o Policy Engine escolhe texto/voz, modelo barato/premium e quando escalar para humano.
โœ“
On-device e tempo real โ€” Ollama roda o cerebro local (regra da RAM, hot-swap no .env); ligacao em tempo real e roadmap, calibre a latencia.

Proximo modulo:

5-3 โ€” Montando seu Jarvis de bolso (projeto guiado fim a fim)