Fish Audio S2 Pro MLX

MLX builds of Fish Audio S2 Pro, made by Moonbox for Apple Silicon Macs. Each precision is a folder; keep a folder's files together. Only the parts listed below are converted: the rest of the pipeline comes from the original repository unless the section below says otherwise.

Files

The last column is how far each build is from the original PyTorch model on the same inputs (see the section below for what was measured).

Precision File Size sha256 Checked against the original
bf16 bf16/chat_template.jinja 4.1 kB 87a2728cb8dc WER 0.0 % / CER 0.0 %, speaker sim 0.956 / 0.952, DNSMOS 3.24 / 2.92 (original 0.0 % / 0.0 %, 0.952 / 0.949, 3.21 / 2.76)
bf16 bf16/codec.safetensors 2.78 GB fde06aa1f23b WER 0.0 % / CER 0.0 %, speaker sim 0.956 / 0.952, DNSMOS 3.24 / 2.92 (original 0.0 % / 0.0 %, 0.952 / 0.949, 3.21 / 2.76)
bf16 bf16/config.json 2.1 kB 870046f617ca WER 0.0 % / CER 0.0 %, speaker sim 0.956 / 0.952, DNSMOS 3.24 / 2.92 (original 0.0 % / 0.0 %, 0.952 / 0.949, 3.21 / 2.76)
bf16 bf16/model-00001-of-00002.safetensors 5.35 GB 13c1b614ac67 WER 0.0 % / CER 0.0 %, speaker sim 0.956 / 0.952, DNSMOS 3.24 / 2.92 (original 0.0 % / 0.0 %, 0.952 / 0.949, 3.21 / 2.76)
bf16 bf16/model-00002-of-00002.safetensors 3.78 GB a75a5d2e91dd WER 0.0 % / CER 0.0 %, speaker sim 0.956 / 0.952, DNSMOS 3.24 / 2.92 (original 0.0 % / 0.0 %, 0.952 / 0.949, 3.21 / 2.76)
bf16 bf16/model.safetensors.index.json 30.4 kB 65dc730b4e46 WER 0.0 % / CER 0.0 %, speaker sim 0.956 / 0.952, DNSMOS 3.24 / 2.92 (original 0.0 % / 0.0 %, 0.952 / 0.949, 3.21 / 2.76)
bf16 bf16/special_tokens_map.json 0.1 MB c2ff18fde6e4 WER 0.0 % / CER 0.0 %, speaker sim 0.956 / 0.952, DNSMOS 3.24 / 2.92 (original 0.0 % / 0.0 %, 0.952 / 0.949, 3.21 / 2.76)
bf16 bf16/tokenizer.json 12.2 MB f24e08099d45 WER 0.0 % / CER 0.0 %, speaker sim 0.956 / 0.952, DNSMOS 3.24 / 2.92 (original 0.0 % / 0.0 %, 0.952 / 0.949, 3.21 / 2.76)
bf16 bf16/tokenizer_config.json 0.9 MB b8d149343ae4 WER 0.0 % / CER 0.0 %, speaker sim 0.956 / 0.952, DNSMOS 3.24 / 2.92 (original 0.0 % / 0.0 %, 0.952 / 0.949, 3.21 / 2.76)
fp16 fp16/chat_template.jinja 4.1 kB 87a2728cb8dc WER 0.0 % / CER 0.0 %, speaker sim 0.964 / 0.951, DNSMOS 3.21 / 2.86
fp16 fp16/codec.safetensors 2.78 GB fde06aa1f23b WER 0.0 % / CER 0.0 %, speaker sim 0.964 / 0.951, DNSMOS 3.21 / 2.86
fp16 fp16/config.json 2.1 kB 870046f617ca WER 0.0 % / CER 0.0 %, speaker sim 0.964 / 0.951, DNSMOS 3.21 / 2.86
fp16 fp16/model-00001-of-00002.safetensors 5.35 GB d70c8e348abd WER 0.0 % / CER 0.0 %, speaker sim 0.964 / 0.951, DNSMOS 3.21 / 2.86
fp16 fp16/model-00002-of-00002.safetensors 3.78 GB 94b99c94994c WER 0.0 % / CER 0.0 %, speaker sim 0.964 / 0.951, DNSMOS 3.21 / 2.86
fp16 fp16/model.safetensors.index.json 30.4 kB 65dc730b4e46 WER 0.0 % / CER 0.0 %, speaker sim 0.964 / 0.951, DNSMOS 3.21 / 2.86
fp16 fp16/special_tokens_map.json 0.1 MB c2ff18fde6e4 WER 0.0 % / CER 0.0 %, speaker sim 0.964 / 0.951, DNSMOS 3.21 / 2.86
fp16 fp16/tokenizer.json 12.2 MB f24e08099d45 WER 0.0 % / CER 0.0 %, speaker sim 0.964 / 0.951, DNSMOS 3.21 / 2.86
fp16 fp16/tokenizer_config.json 0.9 MB b8d149343ae4 WER 0.0 % / CER 0.0 %, speaker sim 0.964 / 0.951, DNSMOS 3.21 / 2.86
8bit 8bit/chat_template.jinja 4.1 kB 87a2728cb8dc WER 0.0 % / CER 0.0 %, speaker sim 0.953 / 0.953, DNSMOS 3.22 / 2.83
8bit 8bit/codec.safetensors 2.78 GB fde06aa1f23b WER 0.0 % / CER 0.0 %, speaker sim 0.953 / 0.953, DNSMOS 3.22 / 2.83
8bit 8bit/config.json 2.3 kB 363895eff17c WER 0.0 % / CER 0.0 %, speaker sim 0.953 / 0.953, DNSMOS 3.22 / 2.83
8bit 8bit/model-00001-of-00002.safetensors 5.35 GB 7d96671b6003 WER 0.0 % / CER 0.0 %, speaker sim 0.953 / 0.953, DNSMOS 3.22 / 2.83
8bit 8bit/model-00002-of-00002.safetensors 372.3 MB 876e059805ce WER 0.0 % / CER 0.0 %, speaker sim 0.953 / 0.953, DNSMOS 3.22 / 2.83
8bit 8bit/model.safetensors.index.json 61.0 kB 7815620c53eb WER 0.0 % / CER 0.0 %, speaker sim 0.953 / 0.953, DNSMOS 3.22 / 2.83
8bit 8bit/special_tokens_map.json 0.1 MB c2ff18fde6e4 WER 0.0 % / CER 0.0 %, speaker sim 0.953 / 0.953, DNSMOS 3.22 / 2.83
8bit 8bit/tokenizer.json 12.2 MB f24e08099d45 WER 0.0 % / CER 0.0 %, speaker sim 0.953 / 0.953, DNSMOS 3.22 / 2.83
8bit 8bit/tokenizer_config.json 0.9 MB b8d149343ae4 WER 0.0 % / CER 0.0 %, speaker sim 0.953 / 0.953, DNSMOS 3.22 / 2.83
6bit 6bit/chat_template.jinja 4.1 kB 87a2728cb8dc WER 0.0 % / CER 0.0 %, speaker sim 0.966 / 0.945, DNSMOS 3.24 / 2.80
6bit 6bit/codec.safetensors 2.78 GB fde06aa1f23b WER 0.0 % / CER 0.0 %, speaker sim 0.966 / 0.945, DNSMOS 3.24 / 2.80
6bit 6bit/config.json 2.3 kB e26146aa01b3 WER 0.0 % / CER 0.0 %, speaker sim 0.966 / 0.945, DNSMOS 3.24 / 2.80
6bit 6bit/model.safetensors 4.81 GB 1c8b473cc7a9 WER 0.0 % / CER 0.0 %, speaker sim 0.966 / 0.945, DNSMOS 3.24 / 2.80
6bit 6bit/model.safetensors.index.json 50.2 kB dc9f4a81f88b WER 0.0 % / CER 0.0 %, speaker sim 0.966 / 0.945, DNSMOS 3.24 / 2.80
6bit 6bit/special_tokens_map.json 0.1 MB c2ff18fde6e4 WER 0.0 % / CER 0.0 %, speaker sim 0.966 / 0.945, DNSMOS 3.24 / 2.80
6bit 6bit/tokenizer.json 12.2 MB f24e08099d45 WER 0.0 % / CER 0.0 %, speaker sim 0.966 / 0.945, DNSMOS 3.24 / 2.80
6bit 6bit/tokenizer_config.json 0.9 MB b8d149343ae4 WER 0.0 % / CER 0.0 %, speaker sim 0.966 / 0.945, DNSMOS 3.24 / 2.80
4bit 4bit/chat_template.jinja 4.1 kB 87a2728cb8dc WER 0.0 % / CER 0.0 %, speaker sim 0.963 / 0.944, DNSMOS 3.22 / 3.01
4bit 4bit/codec.safetensors 2.78 GB fde06aa1f23b WER 0.0 % / CER 0.0 %, speaker sim 0.963 / 0.944, DNSMOS 3.22 / 3.01
4bit 4bit/config.json 2.3 kB 04a6afe6a550 WER 0.0 % / CER 0.0 %, speaker sim 0.963 / 0.944, DNSMOS 3.22 / 3.01
4bit 4bit/model.safetensors 3.90 GB f57eb1c13b76 WER 0.0 % / CER 0.0 %, speaker sim 0.963 / 0.944, DNSMOS 3.22 / 3.01
4bit 4bit/model.safetensors.index.json 50.2 kB 5c1dd949a15f WER 0.0 % / CER 0.0 %, speaker sim 0.963 / 0.944, DNSMOS 3.22 / 3.01
4bit 4bit/special_tokens_map.json 0.1 MB c2ff18fde6e4 WER 0.0 % / CER 0.0 %, speaker sim 0.963 / 0.944, DNSMOS 3.22 / 3.01
4bit 4bit/tokenizer.json 12.2 MB f24e08099d45 WER 0.0 % / CER 0.0 %, speaker sim 0.963 / 0.944, DNSMOS 3.22 / 3.01
4bit 4bit/tokenizer_config.json 0.9 MB b8d149343ae4 WER 0.0 % / CER 0.0 %, speaker sim 0.963 / 0.944, DNSMOS 3.22 / 3.01

How to run

Fish Audio S2 Pro (4.4B dual-autoregressive TTS: voice cloning, 80+ languages, inline [tag] control of emotion and prosody) for mlx-audio. Built with Fish Audio. Each folder is a complete mlx-audio model: model-*.safetensors (slow and fast AR transformers), codec.safetensors (the DAC codec, float32, re-saved unchanged from the original codec.pth), the tokenizer and chat template. Tested with mlx-audio==0.6.5:

from mlx_audio.tts.utils import load_model
import mlx.core as mx, numpy as np, soundfile as sf, librosa

model = load_model("8bit")              # a downloaded folder
ref = mx.array(librosa.load("voice.wav", sr=model.sample_rate)[0])
res = list(model.generate(text="Hello from Moonbox.", ref_audio=ref, ref_text="Exact transcript of voice.wav."))
sf.write("out.wav", np.concatenate([np.array(r.audio) for r in res]), res[0].sample_rate)

8bit/, 6bit/ and 4bit/ quantize the transformer layers (MLX affine, group size 64); the codec is not quantized. License: Fish Audio Research License: research and non-commercial use only; commercial use needs a license from Fish Audio. See LICENSE.md and NOTICE.md (what was changed).

How they were checked. Voice cloning of 6 English and 4 Chinese sentences, two seeds each, with the original (fish-speech's own inference code, PyTorch bfloat16) and every MLX build, the original's sampling (temperature 0.7, top-p 0.7, top-k 30). Judged like the original: Whisper large-v3-turbo WER / CER, WavLM speaker similarity to the prompt, DNSMOS. Pass: error rate at most 2 points above the original's, similarity at most 0.03 below, DNSMOS at most 0.2 below.

Precision Size WER en / CER zh Speaker similarity en / zh DNSMOS en / zh Real-time factor, M5 24 GB
original (PyTorch bf16, MPS) - 0.0 % / 0.0 % 0.952 / 0.949 3.21 / 2.76 4.2
bf16/ 11.9 GB 0.0 % / 0.0 % 0.956 / 0.952 3.24 / 2.92 ~5
fp16/ 11.9 GB 0.0 % / 0.0 % 0.964 / 0.951 3.21 / 2.86 4.7
8bit/ 8.5 GB 0.0 % / 0.0 % 0.953 / 0.953 3.22 / 2.83 3.2
6bit/ 7.6 GB 0.0 % / 0.0 % 0.966 / 0.945 3.24 / 2.80 3.1
4bit/ 6.7 GB 0.0 % / 0.0 % 0.963 / 0.944 3.22 / 3.01 3.0

Real-time factor = generation time / audio length, one sentence at a time (slower than real time on a 24 GB M5).

How these were made

From Fish Audio S2 Pro at revision 1de9996b6b: the original weights loaded in MLX and stored as bf16 or fp16, or quantized with MLX's affine quantization (8bit, 6bit, 4bit, group size 64; layers MLX can't quantize, such as convolutions and norms, stay bf16). Every build was checked against the original before upload; the sha256 column above is what the files must hash to.

License

other (Fish Audio research license). These files are a derivative of the original model and carry its license: it is copied in this repository, and it governs your use of these files. The original model card follows unchanged.


Original model card

Fish Audio S2 Pro

Fish Audio S2 Pro overview β€” fine-grained control, multi-speaker multi-turn generation, low-latency streaming, and long-context inference.

Technical Report | GitHub | Playground

Fish Audio S2 Pro is a leading text-to-speech (TTS) model with fine-grained inline control of prosody and emotion. Trained on over 10M+ hours of audio data across 80+ languages, the system combines reinforcement learning alignment with a dual-autoregressive architecture. The release includes model weights, fine-tuning code, and an SGLang-based streaming inference engine.

Architecture

S2 Pro builds on a decoder-only transformer combined with an RVQ-based audio codec (10 codebooks, ~21 Hz frame rate) using a Dual-Autoregressive (Dual-AR) architecture:

  • Slow AR (4B parameters): Operates along the time axis and predicts the primary semantic codebook.
  • Fast AR (400M parameters): Generates the remaining 9 residual codebooks at each time step, reconstructing fine-grained acoustic detail.

This asymmetric design keeps inference efficient while preserving audio fidelity. Because the Dual-AR architecture is structurally isomorphic to standard autoregressive LLMs, it inherits all LLM-native serving optimizations from SGLang β€” including continuous batching, paged KV cache, CUDA graph replay, and RadixAttention-based prefix caching.

Fine-Grained Inline Control

S2 Pro enables localized control over speech generation by embedding natural-language instructions directly within the text using [tag] syntax. Rather than relying on a fixed set of predefined tags, S2 Pro accepts free-form textual descriptions β€” such as [whisper in small voice], [professional broadcast tone], or [pitch up] β€” allowing open-ended expression control at the word level.

Common tags (15,000+ unique tags supported):

[pause] [emphasis] [laughing] [inhale] [chuckle] [tsk] [singing] [excited] [laughing tone] [interrupting] [chuckling] [excited tone] [volume up] [echo] [angry] [low volume] [sigh] [low voice] [whisper] [screaming] [shouting] [loud] [surprised] [short pause] [exhale] [delight] [panting] [audience laughter] [with strong accent] [volume down] [clearing throat] [sad] [moaning] [shocked]

Supported Languages

S2 Pro supports 80+ languages.

Tier 1: Japanese (ja), English (en), Chinese (zh)

Tier 2: Korean (ko), Spanish (es), Portuguese (pt), Arabic (ar), Russian (ru), French (fr), German (de)

Other supported languages: sv, it, tr, no, nl, cy, eu, ca, da, gl, ta, hu, fi, pl, et, hi, la, ur, th, vi, jw, bn, yo, xsl, cs, sw, nn, he, ms, uk, id, kk, bg, lv, my, tl, sk, ne, fa, af, el, bo, hr, ro, sn, mi, yi, am, be, km, is, az, sd, br, sq, ps, mn, ht, ml, sr, sa, te, ka, bs, pa, lt, kn, si, hy, mr, as, gu, fo, and more.

Production Streaming Performance

On a single NVIDIA H200 GPU:

  • Real-Time Factor (RTF): 0.195
  • Time-to-first-audio: ~100 ms
  • Throughput: 3,000+ acoustic tokens/s while maintaining RTF below 0.5

Links

Technical Report

If you find our work useful, please consider citing our report:

@misc{liao2026fishaudios2technical,
      title={Fish Audio S2 Technical Report}, 
      author={Shijia Liao and Yuxuan Wang and Songting Liu and Yifan Cheng and Ruoyi Zhang and Tianyu Li and Shidong Li and Yisheng Zheng and Xingwei Liu and Qingzheng Wang and Zhizhuo Zhou and Jiahua Liu and Xin Chen and Dawei Han},
      year={2026},
      eprint={2603.08823},
      archivePrefix={arXiv},
      primaryClass={cs.SD},
      url={https://arxiv.org/abs/2603.08823},
}

License

This model is licensed under the Fish Audio Research License. Research and non-commercial use is permitted free of charge. Commercial use requires a separate license from Fish Audio β€” contact business@fish.audio.

Downloads last month

-

Downloads are not tracked for this model. How to track
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for moonbox-dev/s2-pro-MLX

Base model

fishaudio/s2-pro
Quantized
(15)
this model

Paper for moonbox-dev/s2-pro-MLX