Por que Rodar Tudo Localmente?

Assistentes de voz baseados em nuvem são práticos, mas trazem preocupações com privacidade, custos recorrentes e falta de controle. Rodar tudo no seu próprio hardware muda o jogo:

  • Privacidade: O áudio nunca sai da sua rede.
  • Zero custos de API: Sem taxas por minuto ou token.
  • Total flexibilidade: Troque qualquer componente (VAD, STT, LLM, TTS) quando um modelo melhor surgir.

Neste guia, você vai configurar um pipeline completo de fala para fala local para o robô Reachy Mini, usando a biblioteca open-source speech-to-speech da Hugging Face.

Reachy Mini robot with local speech-to-speech pipeline on laptop Algorithm Concept Visual

Passo a Passo

1. Sirva o LLM Localmente

Vamos usar o llama.cpp para rodar um modelo potente como o Gemma 4 E4B. Instale com brew install llama.cpp (macOS) ou winget install llama.cpp (Windows) e inicie o servidor:

llama-server -hf ggml-org/gemma-4-E4B-it-GGUF -np 2 -c 65536 -fa on --swa-full

Explicação dos flags:

  • -hf ... – baixa o modelo do Hugging Face Hub (primeira vez faz download).
  • -np 2 – duas slots paralelas para lidar com interrupções.
  • -c 65536 – janela de contexto de 64k para conversas longas.
  • -fa on – ativa flash attention para velocidade e menor uso de memória.
  • --swa-full – mantém cache de atenção de janela deslizante (processamento mais rápido).

2. Instale e Rode o Speech-to-Speech

Em outro terminal, instale a biblioteca:

uv pip install speech-to-speech

Depois, rode o pipeline em modo local (para testar no terminal):

speech-to-speech --responses_api_base_url "http://127.0.0.1:8080" --responses_api_api_key "" --mode local

Isso vai baixar o Parakeet-TDT 0.6B v3 (STT) e o Qwen3-TTS (TTS) na primeira execução.

3. Conecte o Reachy Mini

Quando o modo local funcionar, reinicie o servidor speech-to-speech sem --mode local para servir o robô. No app desktop do Reachy Mini, abra o app de conversa e selecione "edit connection" para escolher o backend local. Pronto! Agora é só conversar com seu robô, totalmente offline!

Developer configuring local LLM server for voice assistant Programming Illustration

Customização e Opções Avançadas

Escolhendo o Backend do LLM

Você pode trocar o LLM conforme sua necessidade. Veja algumas opções:

BackendComandoMelhor Para
llama.cppspeech-to-speech --llm_backend responses-api --model_name "ggml-org/gemma-4-E4B-it-GGUF"Inferência local rápida
vLLMvllm serve Qwen/Qwen3-4B-Instruct-2507 --enable-auto-tool-choice --tool-call-parser qwen3_coderAlto throughput
MLX (Apple Silicon)speech-to-speech --llm_backend mlx-lm --model_name "mlx-community/Qwen3-4B-Instruct-2507-bf16"Usuários de Mac
Transformersspeech-to-speech --llm_backend transformers --model_name "Qwen/Qwen3-4B-Instruct-2507"CUDA/CPU
Compatível com OpenAIspeech-to-speech --responses_api_base_url "https://api.openai.com/v1"Fallback para nuvem

Pontos de Atenção

  • Latência: O LLM é o gargalo. Desative o modo de raciocínio (--default-chat-template-kwargs '{"enable_thinking":false}') para conversas naturais.
  • Hardware: Para melhores resultados, use GPU com pelo menos 8GB de VRAM. Decodificação especulativa MTP (vLLM) pode reduzir a latência.
  • Rede: Para rodar o motor no laptop e o robô na mesma LAN, use 0.0.0.0 e o IP do laptop (ex: 192.168.x.x).

Próximos Passos

Local AI server stack with speech processing modules Dev Environment Setup

Conclusão

Você agora tem um loop de voz totalmente local: Silero VAD detecta a fala, Parakeet-TDT transcreve, o LLM escolhido gera a resposta e Qwen3-TTS fala de volta. Esse setup oferece privacidade completa, zero custos de API e infinitas possibilidades de customização. Dê um star nos repositórios e compartilhe seu pipeline na comunidade!

Fonte: Blog Hugging Face

Leitura Relacionada: CSS border-shape: O Game-Changer para Elementos com Bordas

Este conteúdo foi elaborado com o auxílio de ferramentas de IA, com base em fontes confiáveis, e revisado pela nossa equipe editorial antes da publicação. Não substitui o aconselhamento de um profissional especializado.