Breeze TTS 2
audio_tokenizer/LICENSE · Apache-2.0 · Qwen/Qwen3-TTS-Tokenizer-12Hz
Apple M5 Pro · 48 GiB · TTFA / RTF / RSS
2026-10-30 · en · 8bit=3.20 s · bf16=3.20 s · seed=42 · CFG=4 · firstChunkFrames=3 · chunkFrames=25 · MLX cache=2 GiB · warm=3
| MLX | TTFA p50 | RTF | RSS (GiB) | 物理メモリ使用量のピーク (GiB) |
|---|---|---|---|---|
| 8bit | 178 ms | 0.535 | 3.92 | 7.23 |
| bf16 | 272 ms | 0.868 | 6.06 | 9.22 |
WAV=45 · distinct=11 · 8bit PCM SHA256=baseline · unit=1933 · skipped=42 · E2E=15 · Qwen3-ASR-0.6B-MLX-4bit
BF16 の RTF は短文で 0.868(基準:1.258)、9.20 秒の段落で 0.853(基準:1.280)になりました。初回 1 フレームでは最初の PCM が 138 ms で到着します。最終 11 種の波形は独立 ASR で正規化 WER/CER がすべてゼロです。8 ビットの既定チャンク出力は基準とバイト単位で一致します。BF16 の丸めにより同じシードでも音声が変わる場合があります。読み込み前に SPEECH_SWIFT_BREEZE_GEMV=0 を設定すると元の投影経路と比較できます。
再生開始を早めるには、初回 1 フレーム、以降 2 フレーム、MLX キャッシュ予算 1 GiB を使用します。9.04 秒の 8 ビット段落では CLI のプリバッファは推定 190 ms で準備でき、記録されたチャンク到着時刻では追加バッファは不要でした。描画コールバックと出力デバイスの遅延は含みません。
2026-10-30 · 8bit · 9.04 s · firstChunkFrames=1 · chunkFrames=2 · MLX cache=1 GiB · PCM=103 ms · buffer=190 ms · RTF=0.761 · peak=6.10 GiB
speech speak "The quick brown fox jumps over the lazy dog." --engine breeze \
--instruct "A clear, calm English narrator." --first-chunk-frames 1 \
--chunk-frames 2 --breeze-cache-limit-mib 1024 --stream -o fast-start.wavTTFA はモデル読み込みとスピーカー再生を含みません。結果はハードウェア、テキスト、設定に依存します。共有モデルポリシーは再利用可能な MLX キャッシュを 2 GiB と物理メモリの 4 分の 1 の小さい方に制限し、アプリのより小さい予算を尊重します。--breeze-cache-limit-mib はプロセス全体の上限を下げられ、0 は再利用キャッシュを無効にします。使用中のモデルテンソルは制限しません。
英語・中国語の音声合成。声のデザイン、参照音声のクローンと演出、ストリーミングに対応(MLX BF16/8-bit、24 kHz、研究・非商用ライセンス).
BreezeTTS · 24,000 Hz · 16 × 2,048 · 80 ms · MLX BF16 / 8-bit
使い方
speech speak "The quick brown fox jumps over the lazy dog." --engine breeze \
--instruct "A clear, calm English narrator." --stream -o design.wav
speech speak "The weather is beautiful today." --engine breeze \
--voice-sample reference.wav --breeze-reference-text "Exact transcript." \
--breeze-seed 42 -o clone.wav
speech speak "We need to discuss what happened." --engine breeze \
--voice-sample reference.wav --breeze-reference-text "Exact transcript." \
--instruct "Speak slowly, with a serious tone." --stream -o directed.wavSwift API
import BreezeTTS
let model = try await BreezeTTSModel.fromPretrained()
let samples = try await model.generate(
text: "The quick brown fox jumps over the lazy dog.",
instruction: "A clear, calm English narrator.")
try await model.generateStreaming(text: "Hello, world!", instruction: "A warm voice.") { chunk in
print(chunk.sampleRate, chunk.samples.count, chunk.isFinal)
}オプション
--breeze-model-id:aufklarer/Breeze-TTS-2-MLX-8bit--breeze-bundle-dir--breeze-cache-limit-mib: プロセス全体の再利用可能な MLX キャッシュ上限(MiB、省略可)。0 でキャッシュを無効にします。--breeze-reference-text--breeze-temperature:0.9--breeze-top-k:50--breeze-top-p:1--breeze-cfg-scale:4--breeze-max-frames:750--breeze-seed:42--first-chunk-frames:3--chunk-frames:25
ライセンス
Derived from Breeze TTS 2 by BreezeBlue and licensed for research and non-commercial use only.
BreezeBlue Research and Non-Commercial License · Breeze TTS 2 MLX 8-bit · Breeze TTS 2 MLX BF16
ソースと変換
speech-swift / BreezeTTS · export_breeze_mlx.py · WER / CER / RSS / TTFA / RTF