Breeze TTS 2¶
Breeze TTS 2 is an English/Chinese text-to-speech model for voice design, voice cloning, and voice direction. The MLX implementation loads the publisher's original checkpoint, including its bundled Qwen3-TTS audio codec, and emits 24 kHz mono audio.
Model Variants¶
| Model | Format | Size | HuggingFace |
|---|---|---|---|
mlx-community/Breeze-TTS-2-mlx |
MLX bfloat16 | ~7.6 GB | Model Card |
mlx-community/Breeze-TTS-2-mlx-8bit |
MLX 8-bit | ~4.6 GB | Model Card |
mlx-community/Breeze-TTS-2-mlx-4bit |
MLX 4-bit | ~3.0 GB | Model Card |
BreezeBlue/Breeze-TTS-2 |
PyTorch (original) | ~7.7 GB | Model Card |
Install and load¶
The publisher's checkpoint ships PyTorch safetensors that MLX cannot load
directly, so the examples use the
mlx-community MLX conversion. The model is
registered under breeze, breeze-tts, and breeze_tts:
Voice design¶
Create a voice from a natural-language description without reference audio.
The upstream example flags --instruction and --cfg-scale are accepted;
the established MLX spellings --instruct and --cfg_scale are equivalent.
mlx_audio.tts.generate \
--model mlx-community/Breeze-TTS-2-mlx \
--text "(sigh) Welcome aboard. Your journey begins now." \
--instruction "A warm, thoughtful young woman with a clear voice and a calm, reflective delivery." \
--cfg-scale 4 \
--output_path outputs \
--file_prefix breeze_design
Voice clone¶
Clone one speaker from a clean reference clip and its exact transcript. The
reference aliases --ref-audio and --ref-text are equivalent to
--ref_audio and --ref_text.
mlx_audio.tts.generate \
--model mlx-community/Breeze-TTS-2-mlx \
--ref-audio reference_en.wav \
--ref-text "This is the exact transcript of the English reference audio." \
--text "(sigh) It is good to hear your voice again after all this time." \
--voice S0 \
--output_path outputs \
--file_prefix breeze_clone
Exactly one reference audio/transcript pair is supported per generation. The transcript should match the clip; incomplete pairs are rejected.
Voice direction¶
Combine a reference pair with an instruction to preserve speaker identity while directing tone, emotion, pace, or delivery:
mlx_audio.tts.generate \
--model mlx-community/Breeze-TTS-2-mlx \
--ref_audio reference.wav \
--ref_text "This is the exact transcript of the reference audio." \
--text "(clears throat) We need to discuss what happened last night." \
--instruct "Speak slowly with a restrained, serious tone." \
--cfg_scale 4 \
--voice S0 \
--output_path outputs \
--file_prefix breeze_direction
S0 is Breeze's default speaker tag; pass --voice S0 explicitly when you
want the generated prompt to show it.
Inline vocal events¶
Events remain inline in --text. Use parentheses for English, such as
(laugh), (cough), (clears throat), and (sigh). Use square brackets for
Chinese, such as [笑], [咳嗽], [清嗓子], and [叹气]:
mlx_audio.tts.generate \
--model mlx-community/Breeze-TTS-2-mlx \
--text "[笑] 欢迎来到今晚的故事时间,让我们一起开始吧。" \
--instruction "一位温柔自信的年轻女性,声音清晰,语气亲切,表达轻快而富有感染力。" \
--cfg-scale 4 \
--output_path outputs \
--file_prefix breeze_events
Streaming¶
Pass --stream to play incremental codec-decoded chunks. Add --save to
join them into a WAV file, and set --streaming_interval in seconds to choose
the chunk cadence:
mlx_audio.tts.generate \
--model mlx-community/Breeze-TTS-2-mlx \
--ref-audio reference.wav \
--ref-text "This is the exact transcript of the reference audio." \
--text "(sigh) This response is streamed as it is generated." \
--stream \
--streaming_interval 1.0 \
--save \
--output_path outputs \
--file_prefix breeze_stream
The Python API yields GenerationResult objects for the same flow:
from mlx_audio.tts import load
model = load("mlx-community/Breeze-TTS-2-mlx")
for result in model.generate(
text="(laugh) Hello from MLX-Audio.",
instruct="A bright, friendly voice.",
cfg_scale=4,
stream=True,
streaming_interval=1.0,
):
assert result.sample_rate == 24_000
assert result.audio.ndim == 1
License¶
The Breeze source code used as a reference is Apache-2.0, but the model weights, derivatives, and self-hosted output are governed by BreezeBlue's Research and Non-Commercial License. Review the original model card before use.
Commercial use requires written authorization from RESONIA, INC. Hosted BreezeBlue services are governed by their applicable service terms. For commercial licensing, contact contact@breeze.blue.
You are responsible for complying with applicable laws and obtaining all necessary rights and consents for inputs, reference audio, voices, and outputs. Unauthorized voice cloning, impersonation, fraud, and other unlawful or harmful uses are prohibited.