Pular para o conteúdo principal

Tutorial NVIDIA PersonaPlex: rode um assistente de voz local, natural e em tempo real

E se conversas de voz com IA em tempo real soassem naturais, com interrupções e realmente humanas? Aprenda a rodar o NVIDIA PersonaPlex localmente e experimente uma IA conversacional full-duplex de verdade.
Atualizado 12 de mai. de 2026  · 8 min lido

Se você já usou o modo de voz do ChatGPT, sabe como é impressionante. Conversar com uma IA que escuta, entende e responde quase como uma pessoa de verdade pode soar surpreendentemente natural. A experiência é conversacional, inteligente e ágil. Ainda assim, existe um gap: pequenos atrasos, limitação para lidar com interrupções e aquela sensação de que você ainda está falando com um sistema — não com alguém.

Agora imagine algo melhor. É exatamente aí que o PersonaPlex entra.

Pense em um assistente de voz em tempo real que responde na hora, permite que você interrompa naturalmente, se adapta no meio da frase e chega muito mais perto de uma conversa humana. Sem latência perceptível. Sem pausas constrangedoras. Sem depender da nuvem. Só um diálogo local, em tempo real, fluido e vivo.

PersonaPlex é um sistema local de interação por voz em tempo real desenvolvido pela NVIDIA. Ele foi criado para levar a IA por voz além do pipeline básico de speech-to-text e text-to-speech. Em vez disso, ele viabiliza conversas em streaming, de baixa latência, em que o assistente fala, escuta e se adapta continuamente — como alguém faria em uma conversa cara a cara.

Neste tutorial, vou te guiar passo a passo pelo PersonaPlex. Vamos começar entendendo o que é o PersonaPlex e por que ele parece fundamentalmente diferente de assistentes de voz típicos. Depois, vamos configurar o ambiente local, instalar o PersonaPlex a partir do código-fonte e iniciar o servidor da WebUI. Em seguida, vamos interagir com o sistema pela interface web e, por fim, testar conversas de voz em tempo real usando um script em Python.

Recomendo conferir o curso Spoken Language Processing in Python para aprender alguns dos fundamentos por trás do PersonaPlex. 

O que é o PersonaPlex?

PersonaPlex é um novo sistema de IA conversacional que deixa as interações por voz realmente naturais, sem abrir mão de personalizar totalmente a voz e a persona. 

Em vez de soar como um assistente típico, com pausas e turnos rígidos, ele permite conversas suaves e em tempo real, em que interrupções, timing e tom soam humanos.

No núcleo, o PersonaPlex usa uma arquitetura full-duplex — ou seja, ele consegue ouvir e falar ao mesmo tempo. 

Em vez de encadear modelos separados para reconhecimento de fala, compreensão e síntese, ele se baseia em um único modelo unificado que se atualiza continuamente enquanto o usuário fala. 

Prompts de voz definem como o assistente soa, enquanto prompts de texto definem quem ele é e como deve se comportar. Essa combinação permite que o PersonaPlex mantenha uma persona consistente enquanto responde de forma instantânea e natural.

PersonaPlex Architecture

Arquitetura do PersonaPlex | Fonte: NVIDIA PersonaPlex

O PersonaPlex é avaliado com o FullDuplexBench e um benchmark estendido de atendimento ao cliente chamado ServiceDuplexBench. 

Ele supera outros sistemas open source e comerciais em dinâmica conversacional, baixa latência, tratamento de interrupções e aderência a tarefas, tanto em cenários de assistente quanto de atendimento.

PersonaPlex Benchmark results for Conversation Dynamics (Higher is better)

Dinâmica de conversa (quanto maior, melhor) | Fonte: NVIDIA PersonaPlex

No vídeo de demonstração abaixo, dá para ver claramente a pessoa tendo uma conversa fluida com o modelo, trocando brincadeiras e piadas em tempo real.

Configurando o ambiente 

Antes de começar, visite a página do modelo na Hugging Face para nvidia/personaplex-7b-v1 e aceite as condições de uso do modelo. 

O PersonaPlex é um modelo com acesso controlado, então você vai precisar de um token de API da Hugging Face. Gere o token na sua conta e deixe-o à mão, pois vamos adicioná-lo às variáveis de ambiente depois para permitir o acesso ao modelo.

PersonaPlex agreement on the Hugging face: nvidia/personaplex-7b-v1

Em seguida, acesse o RunPod e inicie um novo pod com GPU A40. Selecione a imagem mais recente do PyTorch e clique em Edit para personalizar o ambiente. 

Configuring Runpod A40 machine

Aumente o tamanho do disco do contêiner para 50 GB, já que o modelo tem cerca de 20 GB e dependências adicionais também serão baixadas. Na seção de portas HTTP expostas, adicione a porta 8998. Em variáveis de ambiente, adicione HF_TOKEN e cole seu token da Hugging Face.

Setting up environment for Personal plex int he Runpod

Quando tudo estiver configurado, salve as alterações e faça o deploy do pod.

Deploy the pod

Depois que o pod iniciar, você verá um link para a instância do JupyterLab. Abra-o e inicie um terminal. Você pode acessar a máquina por SSH ou pelo terminal web, mas usar o terminal do Jupyter é a opção mais simples.

Jupter lab instance on the Runpod

No terminal, instale a biblioteca de desenvolvimento do codec de áudio Opus, necessária para o processamento de áudio:

sudo apt update
sudo apt install libopus-dev

Installing Opus audio codec in Runpod

Instalando o PersonaPlex a partir do código-fonte

O código do PersonaPlex foi aberto pela NVIDIA e está disponível no GitHub (NVIDIA/personaplex: PersonaPlex code), facilitando explorar, personalizar e rodar localmente. 

Instalar a partir do fonte te dá controle total sobre a configuração e garante compatibilidade com as atualizações mais recentes do repositório.

NVIDIA/personaplex GitHub Repository

Para começar, clone o repositório do PersonaPlex:

git clone https://github.com/NVIDIA/personaplex.git
cd personaplex

Git Cloning PersonaPlex repo

Depois, instale o Moshi, o modelo de fala full-duplex central em que o PersonaPlex é baseado. 

O Moshi é responsável por escutar e falar em tempo real, permitindo que o PersonaPlex lide com interrupções, pausas e timing natural de conversa sem depender do pipeline tradicional ASR → LLM → TTS.

Instalá-lo a partir do fonte garante que todos os componentes de áudio, streaming e conversa estejam corretamente configurados para execução local.

pip install moshi/.

Com o Moshi instalado, seu ambiente está pronto para iniciar o servidor do PersonaPlex e começar a interagir com o modelo em tempo real.

Iniciando o servidor WebUI do PersonaPlex

Com o ambiente e as dependências no lugar, você já pode iniciar o servidor WebUI do PersonaPlex. No terminal, execute o comando abaixo para lançar o servidor Moshi que impulsiona o PersonaPlex:

python -m moshi.server --host 0.0.0.0 --port 8998

Na primeira execução, o servidor baixará automaticamente o modelo do PersonaPlex e outros arquivos necessários. Esse passo pode levar alguns minutos, dependendo da sua conexão, já que o modelo é bem grande.

Downloading the PersonaPlex model files

Quando o download terminar, o servidor começará a escutar na porta 8998. 

Running the Moshi server

Para acessar a WebUI, volte ao seu painel do RunPod. 

Na seção Connect, encontre a porta 8998 exposta e clique no link. Isso abrirá a WebUI do PersonaPlex no seu navegador, onde você pode começar a interagir com o modelo em conversas de voz em tempo real.

Accessing the PersonalPlex WebUI

Testando o PersonaPlex pela WebUI

A WebUI do PersonaPlex já vem com alguns prompts de exemplo para você começar, e você também pode criar prompts personalizados para definir o papel e o comportamento do assistente. 

Você pode selecionar uma voz antes de conectar — isso define como a persona vai soar durante a conversa. 

Para este tutorial, o ideal é começar com as configurações padrão para sentir o sistema.

PersonaPlex WebUI

Depois de clicar em Connect, você será levado à sessão interativa. Aqui, dá para falar diretamente com o modelo, ouvir as respostas em tempo real e ver a transcrição ao vivo da conversa enquanto ela acontece. 

A experiência é fluida, com timing natural e possibilidade de interromper ou responder rapidamente.

Nos meus testes, a interação soou surpreendentemente natural e envolvente. 

Notei alguns engasgos ocasionais — provavelmente por carga do navegador ou do sistema, não do modelo em si. Fora isso, a conversa ficou muito próxima de falar com uma pessoa real.

Interacting with the PersonaPlex WebUI

Quando estiver confortável, experimente diferentes prompts e vozes. O PersonaPlex traz uma ampla variedade de embeddings de voz prontos, incluindo vozes mais naturais para conversa e variações mais expressivas:

  • Natural (feminina): NATF0, NATF1, NATF2, NATF3
  • Natural (masculina): NATM0, NATM1, NATM2, NATM3
  • Variedade (feminina): VARF0, VARF1, VARF2, VARF3, VARF4
  • Variedade (masculina): VARM0, VARM1, VARM2, VARM3, VARM4

PersonaPlex WebUI Voice modules

Trocar vozes e prompts é uma ótima forma de explorar como o PersonaPlex mantém personalidade, tom e fluidez da conversa em diferentes papéis e estilos de fala.

Rodando o PersonaPlex offline com Python

A WebUI é ótima para conversas em tempo real, mas você também pode rodar o PersonaPlex offline a partir do Python. Isso é útil quando você quer resultados reproduzíveis, testar diferentes prompts rapidamente ou gerar arquivos de áudio para reutilizar em demos e experimentos. 

O fluxo offline é simples: você fornece (1) um prompt de voz, (2) um prompt de texto e (3) um arquivo WAV de entrada. O PersonaPlex então gera um áudio de resposta e um arquivo JSON com a transcrição do modelo.

Comece um novo notebook no Jupyter e mude o diretório para o repositório clonado:

%cd personaplex

Execute o seguinte em uma nova célula. Isso chama o runner offline e grava tanto o áudio gerado quanto a transcrição em disco:

%%capture
!python -m moshi.offline \
  --voice-prompt "NATF2.pt" \
  --text-prompt "You are a wise and friendly teacher. Answer questions in a clear, engaging way." \
  --input-wav "assets/test/input_assistant.wav" \
  --seed 42424242 \
  --output-wav "out_teacher.wav" \
  --output-text "out_teacher.json"

O que cada flag faz:

  • --voice-prompt seleciona o embedding de voz (aqui, uma voz feminina natural).
  • --text-prompt define o papel e o comportamento do assistente.
  • --input-wav é o áudio gravado do usuário ao qual o modelo vai responder.
  • --seed deixa a saída mais reproduzível entre execuções.
  • --output-wav é a resposta falada gerada.
  • --output-text salva a transcrição em JSON.

Quando o comando terminar, você pode tocar o áudio da resposta diretamente:

from IPython.display import Audio

Audio("out_teacher.wav")

Você deve ouvir uma resposta clara e natural na voz selecionada, alinhada com a persona definida no seu prompt de texto.

Listening generated audio in the Jupyter notebook.

A transcrição em JSON às vezes pode conter artefatos de tokenização, como espaços extras em torno de pontuação ou pedaços de palavras separados. O helper abaixo carrega o JSON e limpa o texto para ficar legível.

import json
import re

with open("out_teacher.json") as f:
    data = json.load(f)

def detokenize(tokens):
    # 1) drop padding-like tokens
    drop = {"PAD", "EPAD", "<pad>", "</s>", "<s>"}
    toks = [t for t in tokens if t not in drop]

    # 2) join with spaces first
    s = " ".join(toks)

    # 3) fix spacing around punctuation
    s = re.sub(r"\s+([.,!?;:])", r"\1", s)

    # 4) fix common split contractions: "it ' s" -> "it's"
    s = s.replace(" ' s", "'s").replace(" n't", "n't").replace(" 're", "'re").replace(" 'm", "'m").replace(" 've", "'ve").replace(" 'd", "'d")

    # 5) fix stray spaces around apostrophes
    s = re.sub(r"\s+'\s+", "'", s)

    # 6) fix cases like "for k" -> "fork" and "fl uff" -> "fluff"
    # (general rule: merge single-letter fragments if they look like split wordpieces)
    s = re.sub(r"\b([A-Za-z])\s+([A-Za-z]{1,3})\b", r"\1\2", s)

    # 7) collapse multiple spaces
    s = re.sub(r"\s{2,}", " ", s).strip()

    return s

clean_text = detokenize(data)  # replace with your list variable
clean_text

Agora você deve ver uma string de transcrição legível, compatível com o áudio gerado. Se sua saída ainda contiver divisões estranhas (por exemplo, “fl uff” ou “afor k”), isso é normal em algumas execuções e pode ser limpo com regras adicionais — mas o conteúdo principal já deve estar compreensível.

"Hey, let me know if you have any questions. 
Hmm, first rinse the rice a couple of times until the water runs clear, that cuts down on starch, then use apot with a tight fitting lid, bring to a boil, 
give it a quick stir, then turn the heat down low and cover, let it s immer without lifting it, and when it'done fl uff it with afor k, that usually 
You could to ss the hot rice with a nice handful of chopped fresh herbs like basil or par sley, or you could sprinkle a little g rated cheese, 
a squeeze of lemon or lime, adr izzle of olive oil, some chopped fresh herbs, or even some to ast ed nuts, that adds color and flavor."

Considerações finais

Testar o PersonaPlex me surpreendeu de verdade. Desde a primeira interação, a sensação foi menos de estar “brincando com um modelo” e mais de ter uma conversa real. Poder interromper naturalmente, obter respostas instantâneas e manter uma personalidade consistente ao longo do bate-papo o coloca bem à frente da maioria dos sistemas de voz que já experimentei. Rodar tudo localmente torna a experiência ainda mais impressionante, sem atraso perceptível ou perda de controle.

Ainda há alguns pontos a melhorar. Notei engasgos ocasionais e, quando a conversa avança, nem sempre ele retoma um tópico anterior com tanta fluidez. 

Ele também ainda não entende totalmente sotaques não nativos de inglês, o que pode levar a nomes mal pronunciados ou transcrições imperfeitas. Isso parece mais caso de borda do que um problema estrutural — e tenho confiança de que vai evoluir rápido.

Tenho certeza de que, no futuro, esses pontos serão resolvidos e teremos uma IA conversacional ainda melhor, totalmente local e em tempo real, combinando o raciocínio do GPT-5.2 com a qualidade de voz do ElevenLabs.

Perguntas frequentes sobre o PersonaPlex

Que hardware eu preciso para rodar o PersonaPlex localmente?

A NVIDIA recomenda uma GPU com pelo menos 24 GB de VRAM (como A10G, A40 ou RTX 3090/4090) para rodar o modelo 7B com baixa latência e fluidez. Você também precisa de um ambiente Linux com suporte a CUDA. Embora seja possível descarregar camadas para a CPU, isso vai degradar significativamente o desempenho em tempo real que torna o modelo especial.

O PersonaPlex fala outros idiomas além de inglês?

Atualmente, a versão v1 é somente em inglês. A arquitetura suporta vários idiomas e a NVIDIA indicou que o suporte a outros idiomas (como espanhol) está no roadmap para futuras atualizações, mas por enquanto ele está otimizado para conversação em inglês.

Posso usar isso em aplicações comerciais?

Sim. Os pesos do modelo são lançados sob a NVIDIA Open Model License, que em geral permite uso comercial. No entanto, revise o acordo de licença específico no cartão do modelo na Hugging Face para garantir que seu caso de uso (por exemplo, hospedar um serviço pago) esteja em conformidade com os termos.

Qual é a diferença entre isso e usar faster-whisper com um LLM rápido?

Sistemas tradicionais são "half-duplex"—eles esperam você terminar de falar, transcrevem o áudio, processam e só depois falam. O PersonaPlex é "full-duplex", o que significa que processa áudio e gera tokens continuamente. Isso permite ouvir enquanto fala, lidar naturalmente com interrupções e gerar backchannels ("uh-huh", "certo") sem a latência incômoda de sistemas por turnos.

Por que o modelo às vezes pronuncia nomes errado ou divide palavras na transcrição?

Como o PersonaPlex transmite tokens de áudio em quadros em tempo real (24 kHz), os tokens de texto às vezes são gerados em quadros divididos. Isso pode resultar em artefatos como "fl uff" ou "afor k" na transcrição bruta. São efeitos normais da tokenização em streaming e podem ser limpos com scripts simples de pós-processamento.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Sou um cientista de dados certificado que gosta de criar aplicativos de aprendizado de máquina e escrever blogs sobre ciência de dados. No momento, estou me concentrando na criação e edição de conteúdo e no trabalho com modelos de linguagem de grande porte.

Tópicos

Principais cursos da DataCamp

Programa

Fundamentos de Hugging Face

12 h
Encontre os modelos, conjuntos de dados e aplicativos de IA de código aberto mais recentes, crie agentes de IA e ajuste LLMs com o Hugging Face. Junte-se hoje mesmo à maior comunidade de IA!
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

ChatGPT vs Google Bard: Um guia comparativo para chatbots de IA

Uma introdução amigável para iniciantes aos dois chatbots com tecnologia de IA sobre os quais todos estão falando.
Javier Canales Luna's photo

Javier Canales Luna

14 min

blog

Os 7 melhores geradores de vídeo com IA para 2026, com vídeos de exemplo

Conheça os melhores geradores de vídeo com IA disponíveis hoje, incluindo RunwayML, Synthesia, Colossyan, Pictory, DeepBrain AI, Invideo e os super esperados Sora e Veo da DeepMind.
Dr Ana Rojo-Echeburúa's photo

Dr Ana Rojo-Echeburúa

9 min

Tutorial

Tutorial da API de assistentes da OpenAI

Uma visão geral abrangente da API Assistants com nosso artigo, que oferece uma análise aprofundada de seus recursos, usos no setor, orientação de configuração e práticas recomendadas para maximizar seu potencial em vários aplicativos de negócios.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Como usar a API de conversão de texto em fala da OpenAI

A API TTS da OpenAI é um ponto de extremidade que permite que os usuários interajam com seu modelo de IA TTS que converte texto em linguagem falada com som natural.
Kurtis Pykes 's photo

Kurtis Pykes

Tutorial

Guia para iniciantes no uso da API do ChatGPT

Este guia o orienta sobre os conceitos básicos da API ChatGPT, demonstrando seu potencial no processamento de linguagem natural e na comunicação orientada por IA.
Moez Ali's photo

Moez Ali

Tutorial

Um guia para iniciantes na engenharia de prompts do ChatGPT

Descubra como fazer com que o ChatGPT forneça os resultados que você deseja, fornecendo a ele as entradas necessárias.
Matt Crabtree's photo

Matt Crabtree

Ver maisVer mais