MOSS-SoundEffect v2 generates sound effects from English or Chinese descriptions. It uses a Qwen3 text encoder, an audio diffusion transformer, and a continuous DAC decoder. It produces mono audio at 48 kHz. This is a separate architecture from MOSS-TTS and MOSS-SoundEffect v1.
audiocpp_cli --model MOSS-SoundEffect-v2-GGUF/moss-soundeffect-v2-q8_0.gguf \
--family moss_soundeffect --task gen --backend cuda \
--text "Steady rain pattering on a wooden roof, with distant thunder." \
--request-option duration_sec=10 --out rain.wav --logDownload a package from audio-cpp/audio.cpp-gguf.
The GGUF contains all three components, tokenizer files, configuration, and the v1 model contract. Python is needed only for checkpoint conversion, not inference. The upstream model supports offline generation; this family does not advertise streaming.
| Field | Value |
|---|---|
| Family | moss_soundeffect |
| Task | sfx (gen route) |
| Mode | offline |
| Prompt languages | English, Chinese |
| Output | 48 kHz mono audio |
| Packages | Q8_0, BF16 |
Pass these through --request-option name=value.
| Option | Default | Meaning |
|---|---|---|
duration_sec |
10 |
Output duration, 0.1–30 seconds, rounded to one decimal. |
num_steps |
100 |
Number of Euler denoising steps. |
guidance_scale |
4 |
Classifier-free guidance; 1 uses only the positive branch. |
sigma_shift |
5 |
Positive flow-schedule shift. |
seed |
0 |
Initial-noise seed. |
negative_prompt |
Empty | Negative sound description. |
append_duration_suffix |
true |
Append the trained duration instruction to the prompt. |
Denoising retains the trained 30-second latent window. CFG and Euler updates keep their latent state on the backend between steps. The DAC decoder processes only the requested output span in bounded tiles, including the convolution context required from the surrounding latent window. Shorter requests reduce decoder work, but do not shorten the DiT canvas. Text conditioning is limited to 512 tokens; its hidden-state graphs use cached token-length buckets and process only the required prefix plus bucket padding. Seed values are reproducible within the runtime; audio.cpp and PyTorch use different random number generators, so equal seeds do not imply identical starting noise.
| Option | Default | Meaning |
|---|---|---|
moss_soundeffect.attention |
auto |
DiT attention: auto, flash, or eager. Eager retains F32 attention arithmetic and uses more workspace. |
moss_soundeffect.weight_type |
native |
Storage override for text-encoder and DiT weights. The DAC decoder retains its packaged precision. |
Set session options with --session-option name=value. The large inference
graphs and projected text-conditioning caches belong to the session and are
reused across requests. Each request starts from fresh noise and conditioning.
On CUDA with native weight storage, BF16 DiT packages use the existing FP16 projection path for the FFN
intermediates; attention remains standard flash attention, and modulation and
residual arithmetic remain F32. The text encoder and DAC retain their packaged
precision. Explicit weight-storage overrides retain their requested type.
Prompts use Unicode width, quote, HTML, whitespace, and NFC normalization. Malformed UTF-8 is rejected; Python’s repair of legacy-encoding mojibake is not implemented.
Download the official checkpoint
at revision e35df4d82fbe87fcd5d14e5d100e349c0c3c076d, then run:
python tools/models/moss_soundeffect/convert_gguf.py \
--model-dir MOSS-SoundEffect-v2.0 \
--output-dir MOSS-SoundEffect-v2-GGUF --type q8_0Use --type bf16 for the BF16 package. Both published packages follow upstream
BF16 text encoding and projection autocast, with F32 timestep embedding,
modulation, normalization, guidance accumulation, and DAC decoding. Conversion folds DAC weight normalization
and keeps the decoder in F32, matching the upstream decoder's compute path.
Only the decoder portion of the DAC checkpoint is included.
- Upstream implementation
- Official model
- The upstream repository and checkpoint are distributed under Apache-2.0.