PersonaPlex Conversation Server
The live-chat server node
- settings
- voice_clone_audio
- server_url
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_modelsandauto_download_voicesdefault totrue. On first run it will silently go grab the Moshi LM (~14GB), the Mimi codec, the tokenizer, and the voice presets from Hugging Face intoComfyUI/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 toCUSTOM.wavand 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, andtokenizerscan yourmodels/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
sphnlibrary 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-dirmeans some othermoshipackage is shadowing the bundled one. Re-runpip 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.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| moshi_model | COMBO | model.safetensors | 1 options: model.safetensors |
| mimi_model | COMBO | tokenizer-e351c8d8-checkpoint125.safetensors | 1 options: tokenizer-e351c8d8-checkpoint125.safetensors |
| tokenizer | COMBO | tokenizer_spm_32k_3.model | 1 options: tokenizer_spm_32k_3.model |
| port | INT | 89981024–65535 | — |
| device | COMBO | cuda | 2 options: cuda, cpu |
| cpu_offload | BOOLEAN | false | — |
| open_browser | BOOLEAN | true | — |
| auto_download_models | BOOLEAN | true | — |
| auto_download_voices | BOOLEAN | true | — |
| settingsopt | PERSONAPLEX_SETTINGS | — | |
| voice_clone_audioopt | AUDIO | Optional audio input for custom voice cloning. When connected, a 'Custom Voice' option will appear in the web UI. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| server_url | STRING | — |