Nodes/ComfyUI_PersonaPlexMF/PersonaPlex Conversation Server
ComfyUI Node

PersonaPlex Conversation Server

The live-chat server node

By squarewulf·Created 7 months ago·Updated 5 months ago· 11
PersonaPlex Conversation Server
  • settings
  • voice_clone_audio
  • server_url
moshi_modelmodel.safetensors
mimi_modeltokenizer-e351c8d8-checkpoint125.safetensors
tokenizertokenizer_spm_32k_3.model
port8998
devicecuda
cpu_offloadfalse
open_browsertrue
auto_download_modelstrue
auto_download_voicestrue

This is the node the whole pack exists for. Where the other PersonaPlex nodes process an audio file and hand you another audio file, PersonaPlex Conversation Server starts a real full-duplex voice conversation: it spins up a WebSocket server with a bundled web UI, opens your browser, and you talk to a 7-billion-parameter speech model the way you'd talk to a person - it can interrupt you, you can interrupt it, and it keeps its persona the whole time.

No API, no key, no cloud. This is NVIDIA's PersonaPlex (a real-time speech-to-speech model built on Kyutai's Moshi architecture) running entirely on your machine. The trade for that is steep, though: you need roughly 20GB+ of VRAM in practice and about 18GB of downloads before you hear your first word. The README says 24GB recommended, 12GB minimum if you flip cpu_offload on (slowly).

How it works

When you run it, the node fires up a subprocess running PersonaPlex's own server, pointed at the bundled web client in the repo. Your microphone streams through the browser, gets encoded into audio tokens, and the model generates its reply - listening and speaking concurrently, which is the "full duplex" trick. The node is smart about the ugly parts: open_browser (default on) waits for the server's "ready" signal before popping the tab, and if models are missing it can pull them automatically.

A couple of details worth knowing before you queue it:

  • auto_download_models and auto_download_voices default to true. On first run it will silently go grab the Moshi LM (~14GB), the Mimi codec, the tokenizer, and the voice presets from Hugging Face into ComfyUI/models/personaplex/. That's a big first-run surprise if you didn't read the README first.
  • voice_clone_audio (optional) is the zero-shot cloning input: drop a 3–10 second clip of clear speech in and a "Custom Voice" option appears in the web UI. It's written to CUSTOM.wav and used from there.
  • settings (optional) wires in the PersonaPlex Settings node, which is how you change the persona prompt, sampling, host, HTTPS, or the gradio tunnel from one place.
  • The dropdowns for moshi_model, mimi_model, and tokenizer scan your models/personaplex/ folder and default to the stock Hugging Face filenames, so usually you leave them alone.

The one output, server_url (a STRING), is mostly for convenience: wire it into the PersonaPlex Server URL node to control when the browser opens, or just let open_browser do its thing and ignore it.

Installing it

This pack has more moving parts than the average node - don't expect Manager to handle it all. The install is:

cd ComfyUI/custom_nodes
git clone https://github.com/squarewulf/ComfyUI_PersonaPlexMF.git
cd ComfyUI_PersonaPlexMF
pip install -r requirements.txt
pip install -e personaplex_src/moshi

ComfyUI Manager can clone the repo for you, but the bundled-moshi step is manual either way. On Windows portable ComfyUI, substitute .\python_embeded\python.exe -m pip install for pip. Then make sure the model files land in ComfyUI/models/personaplex/ (or let the node auto-download them).

Where people get burned

The README's troubleshooting section is not decorative:

  • WebSocket connects then immediately drops, or audio is gibberish. The sphn library must be >=0.1.4,<0.2 - 0.2+ broke its API and kills audio streaming. pip install "sphn>=0.1.4,<0.2".
  • unrecognized arguments: --voice-prompt-dir means some other moshi package is shadowing the bundled one. Re-run pip install -e personaplex_src/moshi.
  • Wait for the server to be ready before talking. The browser now waits for "Server is ready!", but if you connect before that you'll see instant disconnects.
  • Port already in use - change port (default 8998), or stop the old instance first. There's a Stop Server node in the pack for exactly this.
  • Real-world reports of garbled output ("high-pitched beeps, occasional syllable") do show up in r/comfyui threads using these nodes - it's usually a wrong dependency version (see above), not a broken model.

Also: set expectations on quality. The community consensus on PersonaPlex is that it's impressively fast and responsive, but the voices all sound a bit like a phone speaker and the model is not the sharpest conversationalist. It's a genuinely cool demo and a great base for experiments - it is not your replacement for a fine-tuned chat model.

Categoryaudio/PersonaPlex

Inputs (11)

NameTypeDefaultDescription
moshi_modelCOMBOmodel.safetensors1 options: model.safetensors
mimi_modelCOMBOtokenizer-e351c8d8-checkpoint125.safetensors1 options: tokenizer-e351c8d8-checkpoint125.safetensors
tokenizerCOMBOtokenizer_spm_32k_3.model1 options: tokenizer_spm_32k_3.model
portINT89981024–65535
deviceCOMBOcuda2 options: cuda, cpu
cpu_offloadBOOLEANfalse
open_browserBOOLEANtrue
auto_download_modelsBOOLEANtrue
auto_download_voicesBOOLEANtrue
settingsoptPERSONAPLEX_SETTINGS
voice_clone_audiooptAUDIOOptional audio input for custom voice cloning. When connected, a 'Custom Voice' option will appear in the web UI.

Outputs (1)

NameTypeDescription
server_urlSTRING