Configurazione dell’ambiente
Prima di iniziare, visita la pagina del modello su Hugging Face per nvidia/personaplex-7b-v1 e accetta le condizioni d’uso del modello.
PersonaPlex è un modello con accesso controllato, quindi ti servirà un token API di Hugging Face. Genera il token dal tuo account Hugging Face e tienilo a portata di mano: lo aggiungeremo alle variabili d’ambiente più avanti per consentire l’accesso al modello.

Poi vai su RunPod e avvia un nuovo pod con GPU A40. Seleziona l’ultima immagine PyTorch, quindi fai clic su Edit per personalizzare l’ambiente.

Aumenta la dimensione del disco del container a 50 GB, poiché il modello è di circa 20 GB e saranno scaricate anche dipendenze aggiuntive. Nella sezione delle porte HTTP esposte, aggiungi la porta 8998. Nelle variabili d’ambiente, aggiungi HF_TOKEN e incolla il tuo token API di Hugging Face.

Quando tutto è configurato, salva gli override e distribuisci il pod.

Dopo l’avvio del pod, vedrai un link all’istanza JupyterLab. Aprilo, quindi avvia un terminale. Puoi accedere alla macchina via SSH o dal terminale web, ma usare il terminale di Jupyter è l’opzione più semplice.

Nel terminale, installa la libreria di sviluppo del codec audio Opus, necessaria per l’elaborazione audio:
sudo apt update
sudo apt install libopus-dev

Installare PersonaPlex dal sorgente
Il codice di PersonaPlex è open source da NVIDIA e disponibile su GitHub (NVIDIA/personaplex: PersonaPlex code), il che rende facile esplorarlo, personalizzarlo ed eseguirlo in locale.
L’installazione dal sorgente ti dà controllo completo sulla configurazione e garantisce la compatibilità con gli ultimi aggiornamenti nel repository.

Per iniziare, clona il repository PersonaPlex:
git clone https://github.com/NVIDIA/personaplex.git
cd personaplex

Poi installa Moshi, il modello vocale full‑duplex alla base di PersonaPlex.
Moshi è responsabile dell’ascolto e della sintesi in tempo reale, consentendo a PersonaPlex di gestire interruzioni, pause e tempi conversazionali naturali senza affidarsi alla pipeline tradizionale ASR → LLM → TTS.
Installandolo dal sorgente garantisci che tutte le componenti audio, di streaming e conversazionali siano configurate correttamente per l’esecuzione locale.
pip install moshi/.
Una volta installato Moshi, il tuo ambiente è pronto per avviare il server PersonaPlex e iniziare a interagire con il modello in tempo reale.
Avviare il server WebUI di PersonaPlex
Con ambiente e dipendenze al loro posto, puoi ora avviare il server WebUI di PersonaPlex. Nel terminale, esegui il seguente comando per lanciare il server Moshi che alimenta PersonaPlex:
python -m moshi.server --host 0.0.0.0 --port 8998
La prima volta che esegui questo comando, il server scaricherà automaticamente il modello PersonaPlex e gli altri file richiesti. Questo passaggio può richiedere alcuni minuti, a seconda della velocità di rete, dato che il modello è piuttosto grande.

Una volta completato il download, il server inizierà ad ascoltare sulla porta 8998.

Per accedere alla WebUI, torna alla dashboard di RunPod.
Nella sezione Connect, trova la porta esposta 8998 e fai clic sul link fornito. Si aprirà la WebUI di PersonaPlex nel browser, dove potrai iniziare a interagire con il modello tramite conversazioni vocali in tempo reale.

Testare PersonaPlex tramite WebUI
La WebUI di PersonaPlex include diversi prompt di esempio per aiutarti a iniziare, e puoi anche creare il tuo prompt personalizzato per definire il ruolo e il comportamento dell’assistente.
Puoi selezionare una voce prima di connetterti, che determinerà come suona la persona durante la conversazione.
Per questo tutorial, è meglio iniziare con le impostazioni predefinite per farsi un’idea del sistema.

Dopo aver fatto clic sul pulsante Connect, verrai portato alla sessione interattiva. Qui puoi parlare direttamente con il modello, ascoltare le sue risposte in tempo reale e vedere una trascrizione live della conversazione mentre avviene.
L’esperienza è fluida, con tempistiche naturali e la possibilità di interrompere o rispondere rapidamente.
Nei miei test, l’interazione è risultata sorprendentemente naturale e coinvolgente.
Ho notato qualche esitazione occasionale, probabilmente dovuta al browser o al carico del sistema più che al modello in sé. A parte questo, la conversazione è sembrata molto vicina a parlare con una persona reale.

Quando ti senti a tuo agio, prova a sperimentare con prompt e voci diverse. PersonaPlex supporta un’ampia gamma di embedding vocali preconfezionati, incluse voci conversazionali più naturali e varianti più espressive:
- Naturale (femminile): NATF0, NATF1, NATF2, NATF3
- Naturale (maschile): NATM0, NATM1, NATM2, NATM3
- Varietà (femminile): VARF0, VARF1, VARF2, VARF3, VARF4
- Varietà (maschile): VARM0, VARM1, VARM2, VARM3, VARM4

Cambiare voci e prompt è un ottimo modo per esplorare come PersonaPlex mantenga personalità, tono e flusso conversazionale attraverso ruoli e stili di parlato diversi.
Eseguire PersonaPlex offline con Python
La WebUI è ottima per le conversazioni in tempo reale, ma puoi anche eseguire PersonaPlex offline da Python. È utile quando vuoi output ripetibili, testare velocemente prompt diversi o generare file audio da riutilizzare in demo ed esperimenti.
Il flusso offline è semplice: fornisci (1) un voice prompt, (2) un text prompt e (3) un file WAV di input. PersonaPlex genera poi una risposta audio di output e un file JSON con la trascrizione del modello.
Avvia un nuovo notebook in Jupyter e cambia directory nel repository clonato:
%cd personaplex
Esegui quanto segue in una nuova cella. Questo richiama il runner offline e scrive su disco sia l’audio generato sia la trascrizione:
%%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"
Cosa fa ogni flag:
--voice-promptseleziona l’embedding vocale (qui, una voce femminile naturale).--text-promptdefinisce il ruolo e il comportamento dell’assistente.--input-wavè l’audio registrato dell’utente a cui il modello risponderà.--seedrende l’output più riproducibile tra esecuzioni.--output-wavè la risposta parlata generata.--output-textsalva la trascrizione in formato JSON.
Al termine del comando, puoi riprodurre direttamente l’audio di risposta:
from IPython.display import Audio
Audio("out_teacher.wav")
Dovresti sentire una risposta chiara e naturale nella voce selezionata, coerente con la persona definita nel tuo text prompt.

La trascrizione JSON può talvolta contenere artefatti di tokenizzazione come spazi extra intorno alla punteggiatura o pezzi di parole separati. L’helper qui sotto carica il JSON e lo pulisce in testo leggibile.
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
Ora dovresti vedere una stringa di trascrizione leggibile che corrisponde all’audio generato. Se l’output contiene ancora divisioni strane (per esempio, “fl uff” o “afor k”), è normale in alcune esecuzioni e può essere ripulito ulteriormente con regole aggiuntive, ma il contenuto principale dovrebbe essere già comprensibile.
"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."
Considerazioni finali
Testare PersonaPlex mi ha davvero sorpreso. Fin dalla prima interazione, è sembrato meno un esperimento con un modello e più una vera conversazione. Poter interrompere in modo naturale, ottenere risposte istantanee e mantenere una personalità coerente per tutta la sessione lo fa sembrare molto avanti rispetto alla maggior parte dei sistemi vocali che ho provato. Eseguire tutto in locale ha reso l’esperienza ancora più impressionante, senza ritardi percepibili né perdita di controllo.
Ci sono ancora alcuni aspetti da migliorare. Ho notato esitazioni occasionali e, una volta che la conversazione prosegue, non sempre gestisce con fluidità il ritorno a un argomento precedente.
Inoltre, non comprende ancora pienamente accenti non inglesi, il che può portare a nomi pronunciati male o trascrizioni imperfette. Sembrano casi limite più che problemi fondamentali, e sono fiducioso che miglioreranno rapidamente.
Sono certo che in futuro questi problemi saranno risolti e avremo un’IA conversazionale ancora migliore, completamente locale e in tempo reale, che combini il ragionamento di GPT-5.2 con la qualità vocale di ElevenLabs.
FAQ su PersonaPlex
Di quale hardware ho bisogno per eseguire PersonaPlex in locale?
NVIDIA consiglia una GPU con almeno 24 GB di VRAM (come A10G, A40 o RTX 3090/4090) per eseguire il modello 7B in modo fluido e con bassa latenza. Serve anche un ambiente Linux con supporto CUDA. Sebbene sia possibile scaricare alcuni layer sulla CPU, ciò degraderà in modo significativo le prestazioni in tempo reale che rendono il modello speciale.
PersonaPlex può parlare lingue diverse dall’inglese?
Attualmente, la release v1 è solo in inglese. L’architettura supporta più lingue e NVIDIA ha indicato che il supporto per altre lingue (come lo spagnolo) è in roadmap per futuri aggiornamenti, ma per ora è ottimizzata per conversazioni in inglese.
Posso usarlo per applicazioni commerciali?
Sì. I pesi del modello sono rilasciati sotto la NVIDIA Open Model License, che in genere consente l’uso commerciale. Tuttavia, dovresti rivedere lo specifico accordo di licenza sulla scheda del modello su Hugging Face per assicurarti che il tuo caso d’uso (ad es., hosting di un servizio a pagamento) sia conforme ai termini.
In cosa è diverso dall’usare faster-whisper e un LLM veloce?
I sistemi tradizionali sono "half‑duplex"—aspettano che tu finisca di parlare, trascrivono l’audio, pensano e poi parlano. PersonaPlex è "full‑duplex", cioè elabora audio e genera token in modo continuo. Questo gli consente di ascoltare mentre parla, gestire le interruzioni in modo naturale e generare backchannel ("uh‑huh", "right") senza la latenza imbarazzante dei sistemi a turni.
Perché il modello a volte pronuncia male i nomi o divide le parole nella trascrizione?
Poiché PersonaPlex trasmette token audio in frame in tempo reale (24 kHz), i token di testo a volte vengono generati su frame separati. Questo può produrre artefatti come "fl uff" o "afor k" nella trascrizione grezza. Sono effetti collaterali normali della tokenizzazione in streaming e possono essere ripuliti con semplici script di post‑processing.
In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.



Se hai mai usato ChatGPT in modalità voce, sai già quanto possa essere impressionante. Parlare con un’IA che ascolta, capisce e risponde quasi come una persona reale può risultare sorprendentemente naturale. Sembra conversazionale, intelligente e reattiva. Ma resta ancora un divario: piccoli ritardi, gestione limitata delle interruzioni e la sensazione di parlare a un sistema più che a una persona.
Ora immagina qualcosa di meglio. È qui che entra in gioco PersonaPlex.
Immagina un assistente vocale in tempo reale che risponde all’istante, ti lascia interrompere in modo naturale, si adatta a metà frase e somiglia molto di più a una vera conversazione umana. Niente latenza percepibile. Niente pause imbarazzanti. Niente dipendenza dal cloud. Solo un dialogo locale, fluido e in tempo reale che sembra vivo.
PersonaPlex è un sistema di interazione vocale locale e in tempo reale sviluppato da NVIDIA. È progettato per spingere l’IA vocale oltre le semplici pipeline speech-to-text e text-to-speech. Invece, abilita conversazioni in streaming a bassa latenza in cui l’assistente può parlare, ascoltare e adattarsi in modo continuo, proprio come farebbe una persona in una conversazione faccia a faccia.
In questo tutorial ti guiderò in PersonaPlex passo dopo passo. Partiremo da cos’è PersonaPlex e perché si percepisce fondamentalmente diverso dai tipici assistenti vocali. Poi imposteremo l’ambiente locale, installeremo PersonaPlex dal sorgente e avvieremo il server WebUI di PersonaPlex. Dopo, interagiremo con il sistema tramite l’interfaccia web e infine testeremo conversazioni vocali in tempo reale usando uno script Python.
Ti consiglio di dare un’occhiata al corso Spoken Language Processing in Python per conoscere alcuni dei fondamenti alla base di PersonaPlex.
Che cos’è PersonaPlex?
PersonaPlex è un nuovo sistema di IA conversazionale che rende le interazioni vocali davvero naturali consentendoti al contempo di personalizzare completamente voce e persona.
Invece di suonare come un tipico assistente con pause e turni rigidi, abilita conversazioni fluide e in tempo reale in cui interruzioni, tempi e tono risultano umani.
Al suo centro, PersonaPlex usa un’architettura full‑duplex, cioè può ascoltare e parlare allo stesso tempo.
Anziché concatenare modelli separati per riconoscimento vocale, comprensione del linguaggio e generazione vocale, si affida a un singolo modello unificato che si aggiorna continuamente mentre l’utente parla.
I prompt vocali definiscono come suona l’assistente, mentre i prompt testuali definiscono chi è e come dovrebbe comportarsi. Questa combinazione consente a PersonaPlex di mantenere una persona coerente rispondendo in modo istantaneo e naturale.
Architettura PersonaPlex | Fonte: NVIDIA PersonaPlex
PersonaPlex è valutato usando FullDuplexBench e un benchmark esteso per l’assistenza clienti chiamato ServiceDuplexBench.
Supera altri sistemi open-source e commerciali in dinamiche conversazionali, bassa latenza di risposta, gestione delle interruzioni e aderenza ai compiti sia negli scenari da assistente che di customer service.
Dinamiche conversazionali (più alto è meglio) | Fonte: NVIDIA PersonaPlex
Nel video demo qui sotto, puoi vedere chiaramente la persona che tiene una conversazione fluida con il modello, scambiandosi battute e scherzi in tempo reale.