personaplex README

The project's README from github.com/NVIDIA/personaplex. As one markdown file: README.md.

PersonaPlex: Voice and Role Control for Full Duplex Conversational Speech Models

Weights Paper Demo Discord

PersonaPlex is a real-time, full-duplex speech-to-speech conversational model that enables persona control through text-based role prompts and audio-based voice conditioning. Trained on a combination of synthetic and real conversations, it produces natural, low-latency spoken interactions with a consistent persona. PersonaPlex is based on the Moshi architecture and weights.

PersonaPlex Model Architecture
PersonaPlex Architecture

Usage

Prerequisites

Install the Opus audio codec development library:

# Ubuntu/Debian
sudo apt install libopus-dev

# Fedora/RHEL
sudo dnf install opus-devel

Installation

Download this repository and install with:

pip install moshi/.

Extra step for Blackwell based GPUs as suggested in (See https://github.com/NVIDIA/personaplex/issues/2):

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130

Accept Model License

Log in to your Huggingface account and accept the PersonaPlex model license here.
Then set up your Huggingface authentication:

export HF_TOKEN=<YOUR_HUGGINGFACE_TOKEN>

Launch Server

Launch server for live interaction (temporary SSL certs for https):

SSL_DIR=$(mktemp -d); python -m moshi.server --ssl "$SSL_DIR"

CPU Offload: If your GPU has insufficient memory, use the --cpu-offload flag to offload model layers to CPU. This requires the accelerate package (pip install accelerate):

SSL_DIR=$(mktemp -d); python -m moshi.server --ssl "$SSL_DIR" --cpu-offload

Access the Web UI from a browser at localhost:8998 if running locally, otherwise look for the access link printed by the script:

Access the Web UI directly at https://11.54.401.33:8998

Offline Evaluation

For offline evaluation use the offline script that streams in an input wav file and produces an output wav file from the captured output stream. The output file will be the same duration as the input file.

Add --cpu-offload to any command below if your GPU has insufficient memory (requires accelerate package). Or install cpu-only PyTorch for offline evaluation on pure CPU.

Assistant example:

HF_TOKEN=<TOKEN> \
python -m moshi.offline \
  --voice-prompt "NATF2.pt" \
  --input-wav "assets/test/input_assistant.wav" \
  --seed 42424242 \
  --output-wav "output.wav" \
  --output-text "output.json"

Service example:

HF_TOKEN=<TOKEN> \
python -m moshi.offline \
  --voice-prompt "NATM1.pt" \
  --text-prompt "$(cat assets/test/prompt_service.txt)" \
  --input-wav "assets/test/input_service.wav" \
  --seed 42424242 \
  --output-wav "output.wav" \
  --output-text "output.json"

Voices

PersonaPlex supports a wide range of voices; we pre-package embeddings for voices that sound more natural and conversational (NAT) and others that are more varied (VAR). The fixed set of voices are labeled:

Natural(female): NATF0, NATF1, NATF2, NATF3
Natural(male):   NATM0, NATM1, NATM2, NATM3
Variety(female): VARF0, VARF1, VARF2, VARF3, VARF4
Variety(male):   VARM0, VARM1, VARM2, VARM3, VARM4

Prompting Guide

The model is trained on synthetic conversations for a fixed assistant role and varying customer service roles.

Assistant Role

The assistant role has the prompt:

You are a wise and friendly teacher. Answer questions or provide advice in a clear and engaging way.

Use this prompt for the QA assistant focused "User Interruption" evaluation category in FullDuplexBench.

Customer Service Roles

The customer service roles support a variety of prompts. Here are some examples for prompting style reference:

You work for CitySan Services which is a waste management and your name is Ayelen Lucero. Information: Verify customer name Omar Torres. Current schedule: every other week. Upcoming pickup: April 12th. Compost bin service available for $8/month add-on.
You work for Jerusalem Shakshuka which is a restaurant and your name is Owen Foster. Information: There are two shakshuka options: Classic (poached eggs, $9.50) and Spicy (scrambled eggs with jalapenos, $10.25). Sides include warm pita ($2.50) and Israeli salad ($3). No combo offers. Available for drive-through until 9 PM.
You work for AeroRentals Pro which is a drone rental company and your name is Tomaz Novak. Information: AeroRentals Pro has the following availability: PhoenixDrone X ($65/4 hours, $110/8 hours), and the premium SpectraDrone 9 ($95/4 hours, $160/8 hours). Deposit required: $150 for standard models, $300 for premium.

Casual Conversations

The model is also trained on real conversations from the Fisher English Corpus with LLM-labeled prompts for open-ended conversations. Here are some example prompts for casual conversations:

You enjoy having a good conversation.
You enjoy having a good conversation. Have a casual discussion about eating at home versus dining out.
You enjoy having a good conversation. Have an empathetic discussion about the meaning of family amid uncertainty.
You enjoy having a good conversation. Have a reflective conversation about career changes and feeling of home. You have lived in California for 21 years and consider San Francisco your home. You work as a teacher and have traveled a lot. You dislike meetings.
You enjoy having a good conversation. Have a casual conversation about favorite foods and cooking experiences. You are David Green, a former baker now living in Boston. You enjoy cooking diverse international dishes and appreciate many ethnic restaurants.

Use the prompt You enjoy having a good conversation. for the "Pause Handling", "Backchannel" and "Smooth Turn Taking" evaluation categories of FullDuplexBench.

Generalization

Personaplex finetunes Moshi and benefits from the generalization capabilities of the underlying Helium LLM. Thanks to the broad training corpus of the backbone, we find that the model will respond plausibly to out-of-distribution prompts and lead to unexpected or fun conversations. We encourage experimentation with different prompts to test the model's emergent ability to handle scenarios outside its training distribution. As an inspiration we feature the following astronaut prompt in the WebUI:

You enjoy having a good conversation. Have a technical discussion about fixing a reactor core on a spaceship to Mars. You are an astronaut on a Mars mission. Your name is Alex. You are already dealing with a reactor core meltdown on a Mars mission. Several ship systems are failing, and continued instability will lead to catastrophic failure. You explain what is happening and you urgently ask for help thinking through how to stabilize the reactor.

License

The present code is provided under the MIT license. The weights for the models are released under the NVIDIA Open Model license.

Citation

If you use PersonaPlex in your research, please cite our paper:

@misc{roy2026personaplexvoicerolecontrol,
      title={PersonaPlex: Voice and Role Control for Full Duplex Conversational Speech Models}, 
      author={Rajarshi Roy and Jonathan Raiman and Sang-gil Lee and Teodor-Dumitru Ene and Robert Kirby and Sungwon Kim and Jaehyeon Kim and Bryan Catanzaro},
      year={2026},
      eprint={2602.06053},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2602.06053}, 
}

personaplex (NVIDIA/personaplex)

Searching Database…

这是什么?PersonaPlex 是 NVIDIA 推出的实时全双工语音到语音对话 AI 模型。你可以通过文本角色提示词来控制助手的人设,也可以用一段音频样本来设定它的声音,从而实现自然、低延迟的语音对话。
这是一个需要我在代码里加载的模型,还是自带现成的应用?它以服务器的形式提供,需要你在本地启动。启动后会提供一个网页界面,你可以在浏览器里与它对话。它基于 Moshi 架构和经过微调的 Helium 大语言模型主干,并不是一个独立的代码库。
我该怎么把它跑起来?先安装 Opus 音频编解码器开发库,下载并安装代码仓库,在 Hugging Face 上接受 PersonaPlex 模型许可协议并完成 Hugging Face 身份验证,然后启动服务器,在浏览器中打开 localhost:8998。
我需要 Hugging Face 账号和特定的 GPU 配置吗?需要。你需要 Hugging Face 账号来接受模型许可协议并完成身份验证,还需要 Opus 编解码库。基于 Blackwell 架构的 GPU 需要额外的安装步骤;显存较小的 GPU 可以使用 --cpu-offload 参数(需要安装 accelerate 包)。
如果我的 GPU 显存不够怎么办?你可以加上 --cpu-offload 参数,把模型层转移到 CPU 上运行,这需要安装 accelerate 包。离线评测也可以使用仅支持 CPU 的 PyTorch 版本,完全在 CPU 上运行。
这个项目面向哪些人?它面向那些研究全双工对话语音模型、人设与声音控制以及实时语音交互的研究人员和开发者。
开箱即用有哪些声音可以选?PersonaPlex 预置了一组固定的声音嵌入向量,分别标记为 NAT(自然,听起来像日常对话)和 VAR(更丰富多样)。因此无需录制自己的样本,就可以直接指定声音。
人设控制到底是怎么工作的?你给模型提供一段文本角色提示词(例如助手或客服人设),再配上一段音频声音样本。之后,模型会在整个实时语音对话过程中保持该人设和声音。
没有实时麦克风对话,也能测试吗?可以。项目提供了一个离线评测脚本,它会以流式方式读入一个 WAV 输入文件,并生成时长相同的 WAV 输出文件,适合用来对预先写好的提示词回复进行基准测试。
Moshi 是什么?它在这里有什么作用?Moshi 是 PersonaPlex 微调所基于的全双工语音底层架构和权重集。它还继承了 Helium 大语言模型主干的泛化能力,即使面对分布外的提示词,也能给出合理的回应。
Creator
NVIDIA
Size
1.3 MB
Stars
11.2K
Updated
CommitMar 02
Age
9mo
Commits · 90 Days