Instructions to use laion/moss-va-sft3-quality-lora-adapters with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use laion/moss-va-sft3-quality-lora-adapters with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
Quality LoRA adapters for MOSS voice-acting SFT3 β genuineness, vocal-burst blend, aesthetics
Three rank-16 adapters, one per perceptual quality axis, each trained on the top 1 % of a
3,144,739-utterance annotated corpus along that one axis, balanced over age and gender. For
laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft3.
| adapter | what its clips are the top 1 % of | rows | steps |
|---|---|---|---|
genuineness_high |
genuineness β does the performance sound authentic rather than acted (0β6 scorer) | 12,000 | 15,000 |
blend_high |
vocal-burst blend β how naturally non-speech vocalisations are woven into the speech (0β10 scorer) | 12,000 | 15,000 |
esthetics_high |
ESTH, the VoiceNet aesthetic axis | 12,000 | 15,000 |
β οΈ Read before loading
Do not merge. They target
audio_lm_heads.0β¦11, andaudio_lm_heads.N.weightisaudio_embeddings.N.weightβ weight-tied. A merge writes the delta into the audio embedding table too; measured, both tensors moved by exactly6.103515625e-05. Load as PEFT adapters.Unevaluated. All three trained cleanly, no non-finite loss or gradient in 45,000 steps. No listening test, no automatic scoring, no A/B against the bare base has been run.
Usage
import torch
from transformers import AutoModel, AutoProcessor
from peft import PeftModel
BASE = "laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft3"
REPO = "laion/moss-va-sft3-quality-lora-adapters"
proc = AutoProcessor.from_pretrained(BASE, trust_remote_code=True)
model = AutoModel.from_pretrained(BASE, trust_remote_code=True,
dtype=torch.bfloat16, attn_implementation="sdpa").cuda()
model = PeftModel.from_pretrained(model, REPO, subfolder="adapters/genuineness_high",
adapter_name="genuineness")
model.eval()
Scale the effect by multiplying PEFT's stored scaling (alpha/r = 2.0); w = 0 is the bare
base, w = 1 the adapter as trained:
def set_lora_scale(model, w, adapter="genuineness"):
for m in model.modules():
if hasattr(m, "scaling") and adapter in getattr(m, "scaling", {}):
if not hasattr(m, "_base_scaling"):
m._base_scaling = dict(m.scaling)
m.scaling[adapter] = m._base_scaling[adapter] * w
Prompting
Trained with the v3 prompt library, PROMPT_FORMAT_HASH = 073aeb09dc923376. Prompt exactly as you
prompt the base model:
<user_inst>
- Reference(s):
{reference}
- Instruction:
{instruction}
- Tokens:
{tokens}
- Quality:
{quality}
- Sound Event:
{sound_event}
- Ambient Sound:
{ambient_sound}
- Language:
{language}
- Text:
{text}
</user_inst>
Instruction carries GENERAL: (one sentence describing voice and performance, ending with
genuineness x/6; vocal-burst blend x/10; <duration>s, <LANG>.) and SCRIPT: (the timed script β
[D seconds duration] per sentence, [G seconds pause] for gaps β₯ 0.20 s, (label, D seconds)
for a vocal burst, and (direction) without a number for delivery). Tokens is
round(seconds Γ 12.5); the tokenizer runs at 12.5 fps.
Selection
The corpus is 3,144,739 annotated utterances. For each axis, the top 1 % on that axis was cut, then balanced over age Γ gender from the row's own VoiceNet vector β age at the corpus tertiles, gender at the median β filling cells evenly and topping up from the largest.
genuineness_highβ gated on blend β₯ median. 23,279 candidates β 12,000 balanced.blend_highβ gated on genuineness β₯ median and on the clip actually carrying a detected burst: a blend score on a clip with no burst is a score for something that is not there. Balanced over age Γ gender Γ dominant burst class, becauselow mumbleandahemare 45 % and 31 % of all detections and would otherwise be the whole adapter. 12,588 β 12,000.esthetics_highβ no cross-gate, and that is a measurement, not an oversight: the top 1 % of ESTH intersected with "blend and genuineness both above median" is 364 rows out of 31,447. The aesthetic tail of this corpus is almost disjoint from the other two quality axes, so gating a quality target on two other quality axes would select their agreement rather than aesthetics. The target is its own gate. 31,453 β 12,000.
One observation from training: esthetics_high sat at a markedly lower loss than the other two
(3.80 against 5.04 at the same step) β the aesthetic tail is the easier distribution to model.
Training
| base | SFT3, frozen, bf16 |
| adapter | LoRA rank 16, alpha 32, dropout 0.05, bias none |
| target modules | q_proj k_proj v_proj o_proj gate_proj up_proj down_proj c_attn c_proj fc_in fc_out + audio_lm_heads.0β¦11 |
| optimiser | AdamW, lr 1e-4, betas (0.9, 0.95), wd 0, grad-clip 1.0, cosine with 10 % warmup |
| epochs | 5 Β· batch 4 Β· packed length β€ 1024 |
| loss | next-token cross-entropy on the assistant span only; audio channels weighted 32 / n_vq |
Related
| 40 emotion adapters | laion/moss-va-sft3-emotion-loras |
| 500 voice adapters | laion/moss-va-sft3-voice-loras |
| 71 vocal-burst adapters | laion/moss-va-sft3-vocal-burst-lora-adapters |
| 17 VoiceNet delivery tails | laion/moss-va-sft3-voicenet-lora-adapters |
| best preference adapter | laion/moss-va-sft3-dpo-lora-p2 |
| research log | LAION-AI/Voice-Acting-Pipeline-WIP |
Limitations
- Unevaluated, as above.
- The targets are model outputs. "The top 1 % of genuineness" means the top 1 % as that scorer ranks it, including its errors and speaker priors.
genuinenessis the one attribute with measurable speaker memorisation in this corpus: a probe on the model's activations scores +0.042 higher when speakers are allowed to leak across the split, against β0 for emotion and voice quality. Some of what this adapter learned may be speaker identity rather than authenticity.- Aesthetics is nearly orthogonal to the other two axes here, as the 364-row intersection
shows. Stacking
esthetics_highwithgenuineness_highhas not been tested.
Trained on JUPITER (JΓΌlich Supercomputing Centre, project reformo), GH200, August 2026.
Independent evaluation
These adapters shipped marked unevaluated. The section below is a first measurement, run against the checkpoint they were trained for. It is not a listening test and does not replace one.
Setup. Ten fixed English utterances of two to three sentences, rendered into
the SFT3 timed-script format, identical in every condition and in the same order.
Base is laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft3 with
laion/moss-va-sft3-dpo-lora-p2 at weight 1.0. One adapter is then added at one
weight; nothing else changes, and the sampling seed is fixed. The prompt carries
one reference recording of the voice emolia_c1699 from
TTS-AGI/moss-voice-profile-references.
Metrics. Word error rate is measured with nvidia/parakeet-tdt-0.6b-v3
against the intended line. Extra words counts words transcribed after the last
word that still matches the line β the direct measure of a take running on past
its script. Genuineness is laion/voiceclap-commercial-genuineness (0β6) and
blend is laion/voiceclap-commercial-vocalburst-blend (0β10). Speaker
similarity is ECAPA cosine against that same reference recording.
Baseline, no adapter beyond DPO-p2: word error 0.043, 0.3 extra words, genuineness 1.17, blend 3.35, speaker similarity 0.513.
What this does not tell you. Ten utterances at one seed: the trend across weights is meaningful, a single cell is not. All lines are English, declarative and calm β nothing here describes behaviour on shouting, on German, or on lines carrying vocal bursts. Only one speaker was used. The two scorer models are themselves models, and their absolute levels are not calibrated against human judgement here; differences between conditions are the signal.
Method, all ten prompts, every hyper-parameter and the raw per-take data including transcripts: https://github.com/LAION-AI/Humaneness-Voice-Demo-Server/blob/main/docs/EXPERIMENTS.md
Results
| condition | word error | extra words | takes w/ extra | genuineness 0β6 | blend 0β10 | speaker sim |
|---|---|---|---|---|---|---|
genuineness @0.25 |
0.050 | 0.1 | 10% | 1.57 | 3.26 | 0.555 |
genuineness @0.5 |
0.055 | 0.0 | 0% | 1.25 | 2.65 | 0.598 |
genuineness @0.75 |
0.079 | 1.0 | 30% | 1.51 | 2.83 | 0.529 |
genuineness @1.0 |
0.080 | 0.8 | 30% | 1.16 | 2.18 | 0.546 |
genuineness @1.25 |
0.176 | 1.6 | 30% | 1.63 | 2.27 | 0.523 |
genuineness @1.5 |
0.177 | 1.9 | 60% | 1.38 | 1.59 | 0.533 |
blend @0.25 |
0.053 | 0.2 | 20% | 1.92 | 4.25 | 0.512 |
blend @0.5 |
0.061 | 0.2 | 10% | 1.42 | 3.90 | 0.562 |
blend @0.75 |
0.046 | 0.4 | 30% | 1.23 | 2.93 | 0.535 |
blend @1.0 |
0.033 | 0.0 | 0% | 1.49 | 3.20 | 0.490 |
blend @1.25 |
0.013 | 0.0 | 0% | 1.46 | 3.64 | 0.499 |
blend @1.5 |
0.037 | 0.3 | 20% | 1.52 | 3.82 | 0.513 |
esthetics @0.25 |
0.074 | 0.6 | 20% | 1.64 | 3.74 | 0.535 |
esthetics @0.5 |
0.028 | 0.0 | 0% | 1.21 | 3.49 | 0.537 |
esthetics @0.75 |
0.034 | 0.1 | 10% | 1.04 | 3.51 | 0.509 |
esthetics @1.0 |
0.058 | 0.1 | 10% | 1.19 | 2.80 | 0.522 |
esthetics @1.25 |
0.000 | 0.0 | 0% | 0.79 | 3.14 | 0.546 |
esthetics @1.5 |
0.013 | 0.0 | 0% | 0.79 | 4.22 | 0.486 |
Genuineness. Raises its own measured score at low weight β 1.57 at 0.25 against a 1.17 baseline β and stops helping above that. Above 1.0 it breaks intelligibility: word error 0.176 at 1.25 and 0.177 at 1.5, with invented words in 60 % of takes at 1.5, while the blend score falls from 3.26 to 1.59. Useful range is roughly 0.25β0.5.
Blend. The safest of the three. Word error stays between 0.013 and 0.061 across the whole range with no upward trend, and the blend score rises above baseline. At 0.25 it also produced the highest genuineness score of the entire study (1.92).
Aesthetics. Cheap on intelligibility at every weight measured, but it costs genuineness monotonically: 1.64 at 0.25 down to 0.79 at 1.25 and 1.5. It and the genuineness adapter pull in opposite directions.
Adopted downstream. The demo these measurements come from now runs genuineness at 0.25, blend at 0.5 and aesthetics at 0.5, rather than all three at 1.0. On the same ten utterances that moved word error from 0.116 to 0.055.
- Downloads last month
- -