Pular para o conteúdo principal

Construindo um Chatbot Interativo por Voz com LLMs Locais, STT e TTS

Este projeto torna realidade o sonho de um assistente de IA totalmente interativo por voz — rodando inteiramente em hardware local, sem depender de serviços na nuvem.
Ao combinar Speech-to-Text (STT), Text-to-Speech (TTS) e Modelos de Linguagem de Grande Porte (LLMs) locais usando Ollama, o sistema permite conversas naturais, privadas e em tempo real entre humanos e máquinas.

Toda a configuração roda dentro de containers Docker e pode ser implantada em dispositivos NVIDIA Jetson, computadores de borda ou qualquer sistema baseado em Linux com aceleração por GPU.


Visão Geral do Projeto

O objetivo deste projeto é criar um chatbot controlado por voz capaz de:

  • Ouvir sua voz em tempo real.
  • Entender sua fala usando ASR (Reconhecimento Automático de Fala) local.
  • Gerar respostas inteligentes usando um LLM local.
  • Falar essas respostas de forma natural usando TTS (Text-to-Speech).

Todos os componentes são autônomos e rodam localmente, oferecendo controle total sobre seus dados — sem dependências de nuvem, sem latência e sem preocupações com privacidade.


Componentes do Sistema

1. Módulo Speech-to-Text (STT)

Transforma sua entrada falada em texto em tempo real.
Principais recursos:

  • Transcrição rápida e precisa usando NVIDIA Riva ASR.
  • Suporte a múltiplos idiomas.
  • Otimizado para dispositivos de borda.

2. Módulo Text-to-Speech (TTS)

Converte as respostas do chatbot em saída de voz com som natural.
Destaques:

  • Síntese de fala multilíngue, expressiva e realista.
  • Alimentado por NVIDIA Riva TTS.
  • Baixa latência — perfeito para conversas interativas.

3. LLM Local (Ollama)

No coração do chatbot está o Ollama, um mecanismo de inferência local para executar LLMs modernos com eficiência.
Recursos:

  • Operação offline (sem necessidade de internet).
  • Respostas em tempo real mesmo em dispositivos Jetson.
  • Retenção de contexto para um diálogo fluido e coerente.
  • Suporta vários modelos, incluindo Llama, Phi, Gemma, Mistral e outros.

4. Camada de Interação com o Usuário

Uma interface simples e intuitiva permite que os usuários:

  • Iniciem ou parem a interação por voz via botões ou comandos.
  • Vejam transcrições em tempo real e respostas do chatbot.
  • Desfrutem de uma comunicação suave e de baixa latência, de voz para voz.

Configurando o Ollama Localmente

Começaremos instalando o Jetson Containers para gerenciar e implantar facilmente nossos serviços dentro do Docker.

# Install Jetson Container tools
git clone https://github.com/dusty-nv/jetson-containers
bash jetson-containers/install.sh

Depois de instalar, faça o pull e execute o container do Ollama:

jetson-containers run --name ollama $(autotag ollama)
ollama run llama3.2:1b

💡 Dica: Comece com modelos menores (como llama3.2:1b) para testar sua configuração e, em seguida, faça o scale-up.

Modelos disponíveis em ollama.com/library:

ModeloParâmetrosTamanhoComando
Llama 3.23B2.0 GBollama run llama3.2
Llama 3.21B1.3 GBollama run llama3.2:1b
Llama 3.2 Vision11B7.9 GBollama run llama3.2-vision
Phi 3 Mini3.8B2.3 GBollama run phi3
Gemma 29B5.5 GBollama run gemma2
Mistral7B4.1 GBollama run mistral

Se você estiver usando um NVIDIA Jetson AGX, poderá executar confortavelmente modelos médios a grandes. Para Jetsons menores, mantenha-se em modelos leves (1B–3B).

Execute o Ollama diretamente no terminal ou por meio do script Python fornecido ollama_run.py.

python3 ollama_run.py

Exemplos:

Uso no terminal

Integração em Python


NVIDIA Riva: STT e TTS

Para habilitar a interação por voz real, usamos o NVIDIA Riva, um kit de ferramentas acelerado por GPU que fornece:

  • Reconhecimento Automático de Fala (ASR)
  • Text-to-Speech (TTS)
  • Tradução Automática Neural (NMT) (opcional)

Ele pode ser implantado em qualquer lugar — desde a nuvem até dispositivos embarcados como a série Jetson.

Etapa 1: Obtenha Sua Chave de API NGC

  1. Faça login no NVIDIA NGC.
  2. Crie uma chave de API e salve-a localmente — você vai precisar dela para acessar os recursos do Riva.

Etapa 2: Configurar o NGC no Jetson

cd ~ && mkdir ngc_setup && cd ngc_setup
wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/ngc-apps/ngc_cli/versions/3.36.0/files/ngccli_arm64.zip
unzip ngccli_arm64.zip
chmod u+x ngc-cli/ngc
echo "export PATH=\"$PATH:$(pwd)/ngc-cli\"" >> ~/.bash_profile && source ~/.bash_profile
ngc config set

Use sua chave de API quando solicitado.

Etapa 3: Instalar o Riva no Jetson

Certifique-se de estar executando o JetPack 6.0 (ou verifique a compatibilidade na Matriz de Suporte).

cd ~ && mkdir riva_setup && cd riva_setup
ngc registry resource download-version nvidia/riva/riva_quickstart_arm64:2.16.0
cd riva_quickstart_v2.13.1

No config.sh, desative serviços não utilizados para economizar recursos:

service_enabled_nlp=false
service_enabled_nmt=false

Em seguida, configure o Docker para usar o runtime NVIDIA editando /etc/docker/daemon.json:

{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}

Reinicie o Docker:

sudo systemctl restart docker

Por fim, inicialize e inicie o Riva:

sudo bash riva_init.sh
sudo bash riva_start.sh

Executando o Chatbot

Quando tudo estiver pronto, execute a aplicação principal:

git clone https://github.com/kouroshkarimi/local_chatbot_jetson.git
cd local_chatbot_jetson
python3 app.py --list-input-devices
python3 app.py --list-output-devices
python3 app.py --input-device <your_input_id> --output-device <your_output_id>

Agora você pode falar com o seu assistente, e ele vai ouvir, pensar e responder — tudo localmente, alimentado pelo seu Jetson.


Principais Vantagens

  • 🔒 100% privado – nenhum dado sai do seu dispositivo
  • ⚡ Resposta em tempo real – otimizado para baixa latência
  • 🌐 Multilíngue – suporta vários idiomas e sotaques
  • 🧩 Modular – cada componente pode ser substituído ou estendido
  • 🖥️ Amigável à borda – implantável em Jetson ou sistemas Linux padrão

Melhorias Futuras

  • Integração com módulos de visão para interação multimodal
  • Suporte a clonagem de voz personalizada em TTS
  • Persistência de memória entre sessões para um diálogo mais natural
  • Interface web ou móvel

🎉 Aproveite Suas Conversas!

Parabéns — você acabou de criar seu próprio assistente de IA com voz e foco em privacidade.
Agora relaxe, converse com o seu robô e divirta-se explorando o futuro da interação humano-IA. 🤖💬

“TENHA UMA BOA CONVERSA COM OS ROBÔS :)”


Referências

  1. RAG Local baseado em Jetson com LlamaIndex
  2. Local Voice Chatbot: Implantar Riva e Llama2 no reComputer
  3. ChatTTS
  4. Speech to Text (STT) and Text to Speech (TTS)
  5. Ollama

✨ Projeto de Contribuidor

Suporte Técnico & Discussão de Produtos

Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes formas de suporte e garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...