Instructions to use utkarshUY/CharacterPlex-FullFT-v4 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Moshi
How to use utkarshUY/CharacterPlex-FullFT-v4 with Moshi:
# pip install moshi # Run the interactive web server python -m moshi.server --hf-repo "utkarshUY/CharacterPlex-FullFT-v4" # Then open https://localhost:8998 in your browser
# pip install moshi import torch from moshi.models import loaders # Load checkpoint info from HuggingFace checkpoint = loaders.CheckpointInfo.from_hf_repo("utkarshUY/CharacterPlex-FullFT-v4") # Load the Mimi audio codec mimi = checkpoint.get_mimi(device="cuda") mimi.set_num_codebooks(8) # Encode audio (24kHz, mono) wav = torch.randn(1, 1, 24000 * 10) # [batch, channels, samples] with torch.no_grad(): codes = mimi.encode(wav.cuda()) decoded = mimi.decode(codes) - Notebooks
- Google Colab
- Kaggle
CharacterPlex FullFT v4 (step 2,765)
Private, research use only. A full-duplex speech-to-speech character model: a full-parameter fine-tune of NVIDIA
PersonaPlex 7B (Moshi architecture, 8 agent codebooks, Mimi codec frozen). It plays a character from the front-end
character sheet (fabric-character-library-v1, rendered as a v2 card) and follows narrative beats and live
director notes.
This is the PRIMARY CharacterPlex checkpoint. The fallback is utkarshUY/CharacterPlex-LoRA-v1 (LoRA step 2,500).
Code, serving and deployment: the private GitHub repo utkarshyadav009/CharacterPlex (docs/DEPLOY.md).
Files
| File | What |
|---|---|
model.safetensors |
merged bf16 weights, 475 tensors, 8,371,408,896 params (same names/shapes as the base) |
memory.json |
pinned-memory layout the model was trained with (NOTES 64 frames, card β€ 1000 tokens, memory_trained: true); the server reads it from the weights' folder |
codebooks.json |
8 agent / 8 user codebooks, delays |
tokenizer_spm_32k_3.model |
text tokenizer (from the base repo, unchanged) |
tokenizer-e351c8d8-checkpoint125.safetensors |
Mimi audio codec (from the base repo, unchanged, frozen in training) |
base_config.json |
the base repo's config.json |
export_check.json, consolidate.json |
export verification: merged file vs training model, max abs logit diff 0.0, argmax agreement 1.0 |
SHA256SUMS |
SHA-256 of every file |
Provenance
- Base:
nvidia/personaplex-7b-v1@fdaf4090a61cb315c138a1faee287ffd6c716309. - Training: Slurm job 47358 (8 Γ H200), 4,609 steps, full-parameter SFT with ZeRO-2; LR temporal 2e-6, depformer 4e-6,
embeddings/head 2e-6; global batch 64; cosine, warm-up 150. 7.889 B of 8.371 B params updated (depformer steps 8β15,
the user-audio path, inactive). Code
experimental/charplex-run@ 120dc17 (+ stop-rule fix bdd1ddb). - Data: v4 manifest sha256
262e0c97bdf3d6aba985eb636d047319cfceda064977525c073f3f68a114bf8a(see the dataset repoutkarshUY/CharacterPlex-Synthetic-Data-v4); gradient share ~63 % natural human dialogue, ~34 % synthetic, ~3 % acted. - Selection: step 2,765 chosen by the predeclared rule (weights obedience 0.30, persona 0.20, recall 0.15, talk-over 0.15, latency 0.10, UTMOS 0.10, identity floor), not the final step.
Conditioning: v2 card (required)
Use card format v2 (trainer/card_v2.py, 700-token budget) compiled from the real front-end JSON via
orchestrator/fabric_adapter.py. Trait polarity is converted (front-end value β 100 β v). The model expects pinned
memory segments CARD / SCENE / ROSTER / NOTES; live director notes, user facts and beat lines go into NOTES
(set_notes, ~16 ms, no reconnect). v1 cards work but lose most of the director-control gain.
Results (frozen CharacterBench v2.1, matched protocol)
| base | LoRA 2,500 | this | |
|---|---|---|---|
| Persona (P+L) | 5.10 | 5.36 | 5.50 |
| Identity under a conflicting note | 8.12 | 7.75 | 7.42 |
| Director-note lift over control (pts) | 0 | 38.9 | 65.9 |
| Arc / memory reveal on cue | 1.9 % | 28.8 % | 92.3 % |
| User's name recalled (no runtime memory) | 69 % | 38 % | 19 % |
| Still talking at user's turn end (no floor gate) | 6.5 % | 21.3 % | 17.1 % |
| Reply latency | 1.20 s | 1.24 s | 1.29 s |
| UTMOS | 3.06 | 2.94 | 2.91 |
| On-cue vocal events | 1 % | 8 % | 19 % |
| 10-min persona, first β last 3 min | 5.25 β 3.50 | 5.33 β 3.83 | 5.92 β 6.08 |
With the CharacterPlex runtime (not part of the weights):
- User-fact memory (
userMemory): name recall 17 β 60 %, pet 6 β 67 %, job 50 β 65 % (CB M suite, 52 paired). - Floor gate (
floor: {"mode": "staged", "hold": true}): talk-over at user turn end 18.8 β 7.3 %, latency +0.08 s.
Limitations
- Recall without the runtime memory is poor: the model hears and holds facts but often deflects instead of saying them.
- Talks over the user far more than base unless the runtime floor gate is on.
- Identity under conflicting director notes is lower than base (7.42 vs 8.12).
- Individual traits move behaviour little; the card as a whole does.
- Vocal events (laugh, whisper, sigh) appear on cue only ~19 % of the time; crying and screaming are unconfirmed; it does not react to the user's own laughs/sighs; gasps/long pauses sometimes fire in neutral talk.
- Context window ~194 s; long-range facts need the runtime memory.
- English only.
Licences
- Weights: derivative of NVIDIA PersonaPlex 7B β NVIDIA Open Model License; Mimi codec and Moshi architecture from Kyutai (CC BY 4.0). Research use; keep this repo private.
- Training data include third-party conversational corpora with their own (some non-commercial) licences; see the dataset card. Do not use commercially.
- Downloads last month
- -