alt.freeweights.speech / moss-tts-local-transformer-4.55b-voice-acting-v2-sft
From: laion <huggingface.co/laion>Newsgroups: alt.freeweights.speechSubject:

moss-tts-local-transformer-4.55b-voice-acting-v2-sft

Date: 2026-11-14Commit: 50c3c00Signed: 2DC28CC7B26A283B ✓

Text to speech model with 4.1B parameters. Safetensors weights, 8.28 GB in all. Published by laion under CC-BY-4.0.

4.1B params8.28GBmoss-tts-local-transformer-4.55b-voice-acting-v2-sftsafetensorspermissive
FactsParams4.1BSize8.28 GBFormatssafetensorsTasktext to speechLicenseCC-BY-4.0From sourcepermissive
$ fw get laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft
# manifest sha256 2c7bfa7bc326… · 8.28 GB · 19 files
$ fw verify ./moss-tts-local-transformer-4.55b-voice-acting-v2-sft laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft
From sourceHosted (signed)laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sftLast check: 2026-11-14 21:34 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Fine-tune of moss-tts-local-transformer-4.55b-voice-acting-v2.

Works with

Overview

Size
8.28 GB
Weights
8.26 GB (safetensors)
Parameters
4.1B
Formats
safetensors
Task
text to speech
License
CC-BY-4.0 (permissive)
Files
19, each with a sha256
Publisher
laion
Added
2026-11-14
Section
alt.freeweights.speech
Lineage

Original release from the publisher.

Base model: laion/moss-tts-local-transformer-4.55b-voice-acting-v2

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-14 21:34 UTCpassed

Model card

From the publisher at commit 50c3c00. Shown as plain text with links; images open at the publisher.

MOSS Voice-Acting 4.55B — SFT#

A full fine-tune of laion/moss-tts-local-transformer-4.55b-voice-acting-v2 on 3,147,802 annotated utterances — half synthetic voice profiles, half real speech in English and German — for three epochs.

By Christoph Schuhmann and LAION.

Held-out validation loss fell at every one of the twelve evaluations, on both constituent datasets independently: 4.7076 → 4.6314.


What changed relative to the base model#

This is not an adapter. All 4.13 B parameters were trained.

samples seen9,443,406 sample-passes (3,147,802 × 3 epochs)
peak learning rate7e-6, cosine, warmup over the first half of epoch 1, decayed to 10 %
optimizerAdamW, β (0.9, 0.95), ε 1e-8, weight decay 0.1, grad-norm clip 1.0
precisionfp32 master weights, bf16 compute
global batch4,096 samples
steps2,232
hardware64 nodes × 4 GH200 = 256 GPUs, 1 h 53 min
losschannel-wise cross-entropy, 1 : 32 weighting of the stop channel against the 12 audio codebooks

Learning rate, and why 7e-6. The reference trainer for this model family defaults to 1e-5, but that default is for a small fine-tune at an effective batch of ~32. Here an already-specialised checkpoint is fully fine-tuned over 9.4 M sample-passes at a global batch of 4,096. A long full-fine-tune schedule on a good checkpoint argues for a lower rate; a large batch (less gradient noise) argues for a higher one. 7e-6 is 0.7× the reference default.


Validation#

Held out by blake2b(uid) % 1000 == 0 — deterministic, disjoint from training, and covering both datasets. Loss is reported per dataset so a regression on one cannot hide behind a gain on the other.

stepval lossvoice profilesreal speech
1864.70764.47864.8668
5584.66214.43424.8206
9304.64724.41994.8053
13024.63704.40904.7956
16744.63284.40474.7915
22324.63144.40304.7902

Monotone throughout, no divergence between the two datasets, no sign of overfitting at three epochs. Voice profiles sit ~0.39 nats below real speech, which is expected — synthetic single-voice material is more predictable than recordings made in the wild.

Listen before you trust the number: the validation sample grid pairs the base model, this fine-tune and the ground truth on the same held-out prompts.


Prompt format#

The model expects the MOSS <user_inst> block. The exact prompt surface it was trained on matters — the training mix deliberately varied it, and departing from these conventions will cost you quality.

<user_inst>
- Reference(s):
{<|audio|>  |  Speaker: <name>  |  None}
- Instruction:
{caption}
- Tokens:
{target frame count, 12.5 fps}
- Quality:
None
- Sound Event:
None
- Ambient Sound:
None
- Language:
{English | German}
- Text:
{[7.3 seconds duration] }{transcript}
</user_inst>

What the training mix contained, and in what proportion:

elementtraining distribution
Reference slotreference audio 50 % / Speaker: <name> 50 % for voice profiles; reference-or-None for real speech
Instructionfour surfaces: one of 16 rendered caption templates (30 %), GENERAL: …\nSCRIPT:\n… (45 %), GENERAL: only (15 %), SCRIPT: only (10 %)
Duration tag[7.3 seconds duration] prefixed to the text on 50 % of samples
Inline burst cuesparenthesised cues such as (laughs) present, but stripped entirely from both text and caption on 10 % of samples

The duration tag is spoken duration — last word offset minus first word onset — not clip duration. Clip duration overstates it by ~1.05 s on voice profiles and ~0.40 s on real speech because of leading and trailing silence. If you tag with clip duration the model will pad.

Reference audio is passed as codec codes, [T, 12] int64, directly in audio_codes_list; no audio tokenizer is needed at inference for conditioning.

Usage#
import torch
from transformers import AutoProcessor, AutoModel

REPO = "laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft"
proc = AutoProcessor.from_pretrained(REPO, trust_remote_code=True,
                                     codec_path="OpenMOSS-Team/MOSS-Audio-Tokenizer-v2")
model = AutoModel.from_pretrained(REPO, trust_remote_code=True,
                                  dtype=torch.bfloat16, attn_implementation="sdpa").cuda().eval()

msg = proc.build_user_message(
    text="[4.2 seconds duration] I really did not see that coming.",
    instruction="GENERAL: A young adult feminine voice; delivery is bright and quick; "
                "affect is positive, animated.\nSCRIPT:\n\"I really did not see that coming.\"",
    tokens=53, language="English")
batch = proc([[msg]], mode="generation")
out = model.generate(input_ids=batch["input_ids"].cuda(),
                     attention_mask=batch["attention_mask"].cuda(),
                     max_new_frames=400, do_sample=True,
                     audio_temperature=1.0, audio_top_p=0.95, audio_top_k=50)
wav = proc.decode(out)[0].audio_codes_list[0]   # 48 kHz

tokens is the target length in codec frames at 12.5 fps — 4.2 s ≈ 53 frames.


Training data#

datasetrowsshare of each batch
laion/laion-voice-profiles-sft1,200,53150 %
laion/tts-realspeech-sft-en-de1,947,27250 %

Every micro-batch was exactly half of each dataset — the sampler alternates strictly between the two pools rather than mixing in expectation. Verified on 20 real batches: 0.5000 / 0.5000 on every one.

Because the two datasets are unequal in size and each batch is balanced, over three nominal epochs the voice-profile rows are seen ≈3.93 times and the real-speech rows ≈2.42 times.

The voice-profile source ships strictly one voice per file, so the corpus was globally shuffled before training; each shard ends up containing all 500 voices. Measured on real batches: 7.75 distinct voices per 8-sample batch, and no single voice ever exceeded 25 % of a batch.


Limitations#

  • Two languages only. English and German. Anything else is out of distribution.
  • Validation loss is not audio quality. It measures next-token likelihood on held-out codec tokens. No listening test, MOS study, or intelligibility benchmark has been run. Judge the sample grid with your own ears.
  • The reference audio must be the same voice you want. Speaker similarity was not re-measured after fine-tuning.
  • Three epochs on a balanced mix over-represents the synthetic half. If your use is real-recorded speech, that skew is worth knowing.
  • Inherits whatever biases exist in the underlying corpora — speaker demographics, recording conditions and emotion labelling are not uniformly distributed.
  • The 12 audio LM heads are weight-tied to the audio embeddings, as in the base model.

Intended use#

Research on expressive and controllable speech synthesis. Not validated for, and should not be used for, generating speech attributed to a real person without their consent, or for any application where a synthetic voice could be mistaken for a specific individual.


Licence and attribution#

Released under CC-BY-4.0 by Christoph Schuhmann and LAION.

The base model laion/moss-tts-local-transformer-4.55b-voice-acting-v2 is Apache-2.0, and that notice is preserved: this work is a derivative of it. The MOSS-TTS architecture and the MOSS-Audio-Tokenizer-v2 codec originate with the OpenMOSS team.

@misc{schuhmann2026mossva_sft,
  title  = {MOSS Voice-Acting 4.55B --- SFT},
  author = {Schuhmann, Christoph and {LAION}},
  year   = {2026},
  url    = {https://huggingface.co/laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft},
  note   = {Full fine-tune on 3.15M annotated utterances; CC-BY-4.0}
}

Files

19 files · 8.28 GBWeights 8.26 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 19 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
README.md8.53 KB99b3d39a6e55225ef9e7292bbe12b6446215e6ae352467ce5c4b4220bbb20518
__init__.py254 Bfa22d925207c64e6701f9c5f97c3e14a9bad4db5c37060c6e5f1362c02bc8040
added_tokens.json790 B39bb49db6acfb8e7510b1640f575bdc183f511d85c94ce3ee967f2a6195c4a8a
chat_template.jinja4.17 KBa55ee1b1660128b7098723e0abcd92caa0788061051c62d51cbe87d9cf1974d8
config.json6.99 KBced0e41ba4ea840212721e3b25f1ca857c2939901be7564f1c9060c9a955790f
configuration_moss_tts.py7.16 KBab6debcb92032cb9dc91ae80aed77dbadd2e59848208baef2b062bd6def3f3be
generation_config.json95 B215f29f6b57440eb88eb67cf42a9899f4b9a3c1cc8553190a3cbb790ac34b4e2
gpt2_decoder.py30.9 KBf2e877104669f1e6c7cd34680f0da1a8a159e032123ee56b660b63929b6c8989
merges.txt1.67 MB8831e4f1a044471340f7c0a83d7bd71306a5b867e95fd870f74d0c5308a904d5
model.safetensors8.26 GBf4898a3dd0ed43c81cdbf56638f588bca0cc55f189944bf1fb5f772058194712
modeling_moss_tts.py26.4 KBb0a66211943ae580b087f3e71495fea2f455701a4f6c29b6d3562218f7668c5f
processing_moss_tts.py37.5 KB059637b92e7eb9a67df531fe9578e9554d456195828b223eb81f21117c58e8f8
processor_config.json209 Bfac7289af2a37d988d708d813c92960e5e91c59d348c17b72c6aa6b86859f2b7
qwen3_decoder.py25.5 KB100163bd7ecf31a59bafacc0b032ace9339edc992a3eb4cc80662502e04e46f0
special_tokens_map.json394 B02a153514db64e5378c53ef164c960409882649de6f4aac8f81f66218e7f8797
tokenizer.json11.4 MB06902d1fb775216338802205886a24bc715ccc606bd872a892e3d3c83ca1b9e2
tokenizer_config.json5.73 KBec2869dd4c9c7155b3460c291a6fb2b955e5068013ba7efbcaafd1c61e02abce
vocab.json2.78 MBca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
50c3c00679 pinned now manifest updated, same commit2026-11-14 21:34 UTC19 files · 8.28 GB
50c3c006792026-11-14 21:34 UTC19 files · 8.28 GB

Use it

$ fw get laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft
# manifest sha256 2c7bfa7bc326… · 8.28 GB · 19 files
$ fw verify ./moss-tts-local-transformer-4.55b-voice-acting-v2-sft laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft.json --dir ./moss-tts-local-transformer-4.55b-voice-acting-v2-sft $ python3 fw.py verify ./moss-tts-local-transformer-4.55b-voice-acting-v2-sft ./laion__moss-tts-local-transformer-4.55b-voice-acting-v2-sft.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft --revision 50c3c00679eaf24f34a4f937e075e1ea8739a6d9 --local-dir ./moss-tts-local-transformer-4.55b-voice-acting-v2-sft

License

Name
Creative Commons Attribution 4.0
Id
CC-BY-4.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-14
Text in
README.md
Text sha256
99b3d39a6e55225ef9e7292bbe12b6446215e6ae352467ce5c4b4220bbb20518
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: laion <huggingface.co/laion>Newsgroups: alt.freeweights.speechSubject: moss-tts-local-transformer-4.55b-voice-acting-v2-sftDate: 2026-11-14Commit: 50c3c00Signed: 2DC28CC7B26A283B ✓
Upstream
laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft
Pinned commit
50c3c00679eaf24f34a4f937e075e1ea8739a6d9
Manifest
moss-tts-local-transformer-4.55b-voice-acting-v2-sft.json · .minisig
Manifest sha256
2c7bfa7bc3268e6d8c6498f84ba507fdb74f9d4d6f3352507f1810658c1650cb
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-14 21:34 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft.json $ curl -O https://freeweights.allternit.com/manifests/laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft.json.minisig $ minisign -Vm moss-tts-local-transformer-4.55b-voice-acting-v2-sft.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

laion/moss-tts-local-transformer-4.55b-voice-acting-v2 · this model is a finetune of it

2 models in the catalog name this one as their parent.

Fine-tunes
1
Adapters
1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download laion/moss-tts-local-transformer-4.55b-voice-acting-v2-sft
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. moss-tts-local-transformer-4.55b-voice-acting-v2-sft.json. Provenance. Takedown history: none.

Variants

1 quantized or adapter build of moss-tts-local-transformer-4.55b-voice-acting-v2-sft. Each has its own license check and page.

From: MIT <huggingface.co/MIT>Subject: ast-finetuned-audioset-10-10-0.4593
From: onnx-community <huggingface.co/onnx-community>Subject: ast-finetuned-audioset-10-10-0.4593-ONNX
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Preview-0.6b
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Realistic-Air
From: facebook <huggingface.co/facebook>Subject: audiobox-aesthetics
From: mlx-community <huggingface.co/mlx-community>Subject: chatterbox-4bit