Instructions to use laion/moss-voicenet-dimension-loras with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use laion/moss-voicenet-dimension-loras with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
MOSS VoiceNet Dimension LoRAs
100 rank-32 LoRA adapters for laion/moss-tts-local-transformer-4.55b-voice-acting-v2. Each adapter pushes one of the
57 VoiceNet voice-performance dimensions in the high or low direction. Merge one into the base voice-acting
checkpoint to steer that single dimension of the generated voice (e.g. warmer timbre, deeper chest resonance, faster tempo,
more/less dramatic delivery).
This release: 57 __high + 43 __low = 100 adapters. 14 low-direction dimensions are still training and will be added: AGEV, ATCK, CHNK, EMPH, FOCS, R_MASK, SMTH, STRU, S_AUTH, S_CONV, S_NEWS, S_RANT, S_STRY, TEMP.
The VoiceNet dimensions
The 57 dimensions come from the VoiceNet-Ext taxonomy (Schumann et al., 2025 β arXiv:2505.20033), covering rhythm & timing, social dynamics, speaker identity, emotion & affect, physical production, spectral/timbral quality, temporal dynamics, recording conditions, resonance placement, and speaking style. Each dimension is scored on 7 ordinal levels (0β6).
| code | dimension | high | low |
|---|---|---|---|
AGEV |
Voice Age | β | β³ |
AROU |
Arousal | β | β |
ARSH |
Arousal Shift | β | β |
ATCK |
Attack | β | β³ |
BKGN |
Background Noise | β | β |
BRGT |
Brightness | β | β |
CHNK |
Chunking | β | β³ |
CLRT |
Articulation Clarity | β | β |
COGL |
Cognitive Load | β | β |
DARC |
Dynamic Arc | β | β |
DFLU |
Disfluency | β | β |
EMPH |
Emphasis | β | β³ |
ESTH |
Esthetics | β | β |
EXPL |
Content Appropriateness (3-point Scale) | β | β |
FOCS |
Focus | β | β³ |
FULL |
Fullness | β | β |
GEND |
Perceived Gender | β | β |
HARM |
Harmonicity | β | β |
METL |
Metallic Character | β | β |
RANG |
Pitch Range | β | β |
RCQL |
Recording Quality | β | β |
REGS |
Register | β | β |
RESP |
Respiration | β | β |
ROUG |
Roughness | β | β |
R_CHST |
Chest Resonance | β | β |
R_HEAD |
Head Resonance | β | β |
R_MASK |
Mask Resonance | β | β³ |
R_MIXD |
Mixed Resonance | β | β |
R_NASL |
Nasal Resonance | β | β |
R_ORAL |
Oral Resonance | β | β |
R_THRT |
Throat Resonance | β | β |
SMTH |
Smoothness | β | β³ |
STNC |
Stance | β | β |
STRU |
Structure | β | β³ |
S_ASMR |
ASMR Style | β | β |
S_AUTH |
Authoritative Style | β | β³ |
S_CART |
Cartoonish Style | β | β |
S_CASU |
Casual Style | β | β |
S_CONV |
Conversational Style | β | β³ |
S_DRAM |
Dramatic Style | β | β |
S_FORM |
Formal Style | β | β |
S_MONO |
Monologue Style | β | β |
S_NARR |
Narrator Style | β | β |
S_NEWS |
Newsreader Style | β | β³ |
S_PLAY |
Playful Style | β | β |
S_RANT |
Ranting/Angry Style | β | β³ |
S_STRY |
Storytelling Style | β | β³ |
S_TECH |
Teacher/Didactic Style | β | β |
S_WHIS |
Whisper-Talk Style | β | β |
TEMP |
Tempo | β | β³ |
TENS |
Tension | β | β |
VALN |
Valence | β | β |
VALS |
Valence Shift | β | β |
VFLX |
Velocity Flux | β | β |
VOLT |
Volatility | β | β |
VULN |
Vulnerability | β | β |
WARM |
Warmth | β | β |
Naming
vn_<CODE>__<high|low> β e.g. vn_WARM__high (warmer timbre), vn_R_CHST__high (more chest resonance), vn_TEMP__low (slower tempo).
How to use β merge into the v2 voice-acting checkpoint
These LoRAs are not standalone: they must be merged into the base model
laion/moss-tts-local-transformer-4.55b-voice-acting-v2.
import torch
from transformers import AutoModel
from peft import PeftModel
base = AutoModel.from_pretrained(
"laion/moss-tts-local-transformer-4.55b-voice-acting-v2",
trust_remote_code=True, torch_dtype=torch.bfloat16).to("cuda").eval()
# load one dimension LoRA (subfolder = the adapter name)
pm = PeftModel.from_pretrained(base, "laion/moss-voicenet-dimension-loras",
subfolder="vn_WARM__high", adapter_name="L").eval()
# choose the MERGE STRENGTH (dose). 50% already delivers most of the effect; 100% is stronger; higher over-drives.
STRENGTH = 0.5
for m in pm.modules():
sc = getattr(m, "scaling", None)
if isinstance(sc, dict) and "L" in sc:
sc["L"] = sc["L"] * STRENGTH
pm.base_model.set_adapter(["L"])
# ...then generate with the MOSS processor exactly as with the base voice-acting model...
Dose finding (from our sweep): averaged over all dimensions, 50% merge already reaches ~most of the full-strength shift; 100% pushes harder; beyond that the voice starts to over-drive. Tune per dimension.
Audio demos
- Full showcase β every LoRA at 0 / 50 / 100 % (with the best-found steering prompt per dimension): https://laion-ai.github.io/moss-voicenet-lora-evolution/
- High-vs-low contrast grid (same text, high vs low LoRA side by side): https://laion-ai.github.io/moss-voicenet-highlow-grid/
Provenance
Trained on VoiceNet-scored speech buckets with β€25% game-character data (to reduce caricature bias), rank 32, on the voice-acting v2 checkpoint. VoiceNet scoring uses the LAION VoiceNet dimension predictors.
- Downloads last month
- -