Skip to content

Commit 22767f7

Browse files
authored
Merge pull request #23 from appautomaton/agent/dots-tts-0.5.0-closeout
Close out the dots.tts 0.5.0 release
2 parents e806890 + eaf4e8d commit 22767f7

4 files changed

Lines changed: 57 additions & 6 deletions

File tree

‎docs/huggingface-release.md‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,3 +203,34 @@ After the README-only correction, the same four isolated-cache cases passed
203203
against revision `5dde9ded6c577a84a71b5ee9dafebfa53188d6d6` in `262.11 s`.
204204
Peak MLX allocation was `6,521,655,508` bytes and macOS process peak RSS was
205205
`6,423,871,488` bytes.
206+
207+
## mlx-speech 0.5.0 and dots.tts Card Refresh — 2026-08-03
208+
209+
Tag `v0.5.0` points to merge commit
210+
`e80689094721d0c8d995139b7ac2f1defd5e2a16`. GitHub Actions run
211+
[`30828268581`](https://github.com/appautomaton/mlx-speech/actions/runs/30828268581)
212+
passed version consistency, the macOS unit suite, wheel-content inspection,
213+
and trusted publishing to PyPI. No manual package upload was used.
214+
215+
PyPI published these immutable 0.5.0 files:
216+
217+
- `mlx_speech-0.5.0-py3-none-any.whl` at
218+
`2026-08-03T15:38:40.392338Z`, SHA-256
219+
`e8b6df537177c0e7d917f0adbd8b9338b949a9b9b365fdebcefa77e118ffe22a`
220+
- `mlx_speech-0.5.0.tar.gz` at `2026-08-03T15:38:41.783955Z`, SHA-256
221+
`635dc243e4db52d50ba97b6b83ef9709e0f9e4f35a1202cb3d2eeda5c39ad4b3`
222+
223+
The public wheel was downloaded, matched its PyPI digest, passed the repository
224+
wheel-content verifier, and installed into a clean virtual environment. That
225+
installed package loaded the default `dots-tts-soar` alias from
226+
`soar/mlx-int8` and streamed two finite, non-silent waveform chunks totaling
227+
7,680 mono samples at 48 kHz.
228+
229+
After PyPI was live, the `--card-only` release path uploaded only the
230+
authoritative root `README.md`. It advanced the Hugging Face repository to
231+
revision `ca6740366ab7316c26ddbb640e756c4ec414778f`; no model artifact was
232+
selected or re-uploaded. The published README exactly matched the repository
233+
source at SHA-256
234+
`bcdec6f61dc843bd1b5a95be181dbe26f8a3ee76f4beb40df4059bd11c7add31`
235+
and documents `mlx-speech>=0.5.0`, speaker-only cloning, and bounded waveform
236+
streaming.

‎site/index.html‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1" />
66
<title>mlx-speech · pure-MLX speech for Apple Silicon</title>
77
<meta name="description" content="Local text-to-speech, voice cloning, dialogue, sound effects, and ASR on Apple Silicon, running pure MLX. No cloud, no PyTorch." />
8-
<meta name="keywords" content="mlx, mlx-speech, apple silicon, text to speech, TTS, ASR, voice cloning, on-device, pure mlx, no pytorch, fish audio, vibevoice, openmoss, step-audio, dramabox, qwen3 asr" />
8+
<meta name="keywords" content="mlx, mlx-speech, apple silicon, text to speech, TTS, ASR, voice cloning, on-device, pure mlx, no pytorch, dots.tts, fish audio, vibevoice, openmoss, step-audio, dramabox, qwen3 asr" />
99
<meta name="author" content="App Automaton" />
1010
<link rel="canonical" href="https://appautomaton.github.io/mlx-speech/" />
1111
<meta name="theme-color" content="#0d0d0f" media="(prefers-color-scheme: dark)" />
@@ -272,7 +272,7 @@ <h1>Speech, rendered on the <span class="accent">metal.</span></h1>
272272
</div>
273273
<div class="eq" id="eq" aria-hidden="true"></div>
274274
<div class="specs">
275-
<div class="spec"><div class="v">11</div><div class="l">Speech models</div></div>
275+
<div class="spec"><div class="v">13</div><div class="l">Speech models</div></div>
276276
<div class="spec"><div class="v">2</div><div class="l">Tasks · TTS &amp; ASR</div></div>
277277
<div class="spec"><div class="v">48<span class="u">kHz</span></div><div class="l">Stereo output</div></div>
278278
<div class="spec"><div class="v">0</div><div class="l">PyTorch at runtime</div></div>
@@ -303,11 +303,11 @@ <h2>The laptop is the whole runtime.</h2>
303303
<div class="wrap">
304304
<div class="shead reveal">
305305
<span class="eyebrow"><b>02</b> The catalog</span>
306-
<h2>Eleven models. One loader.</h2>
306+
<h2>Thirteen models. One loader.</h2>
307307
<p>Synthesis, cloning, dialogue, editing, sound effects, and recognition. Each module links to its behavior guide and its converted weights on Hugging Face.</p>
308308
</div>
309309

310-
<div class="rack-label reveal"><span class="n">Text-to-speech</span><span class="ln"></span><span class="c">08 modules</span></div>
310+
<div class="rack-label reveal"><span class="n">Text-to-speech</span><span class="ln"></span><span class="c">10 modules</span></div>
311311
<div class="rack" id="tts"></div>
312312

313313
<div class="rack-label reveal"><span class="n">Speech-to-text</span><span class="ln"></span><span class="c">03 modules</span></div>
@@ -444,13 +444,15 @@ <h2>Install. Load. Generate.</h2>
444444
for(var i=0;i<H.length;i++){var s=document.createElement('span');s.style.setProperty('--h',H[i]);s.style.setProperty('--d',(-(i%9)*0.13)+'s');eq.appendChild(s)}}
445445

446446
// ticker
447-
var T=[['fish-s2-pro','dual-AR · cloning'],['vibevoice','LLM + diffusion'],['longcat','flow-matching DiT'],['moss-local','multi-VQ'],['moss-ttsd','dialogue'],['moss-sound-effect','text → SFX'],['step-audio','clone + edit'],['dramabox','48kHz stereo'],['cohere-asr','multilingual'],['qwen3-asr-1.7b','EN · ZH'],['granite-speech','local checkpoint']];
447+
var T=[['dots.tts','SOAR · MeanFlow'],['fish-s2-pro','dual-AR · cloning'],['vibevoice','LLM + diffusion'],['longcat','flow-matching DiT'],['moss-local','multi-VQ'],['moss-ttsd','dialogue'],['moss-sound-effect','text → SFX'],['step-audio','clone + edit'],['dramabox','48kHz stereo'],['cohere-asr','multilingual'],['qwen3-asr-1.7b','EN · ZH'],['granite-speech','local checkpoint']];
448448
var tk=document.getElementById('ticker'),html='';
449449
function row(){var r='';T.forEach(function(m){r+='<span class="ticker-item">'+m[0]+' <span class="k">'+m[1]+'</span><span class="s">/</span></span>'});return r}
450450
tk.innerHTML=row()+row();
451451

452452
// models
453453
var TTS=[
454+
['dots.tts SOAR','int8 · base','dots-tts-soar','dots-tts.md','dots-tts-mlx','Continuous autoregressive TTS with a 10-step flow-matching solver and classifier-free guidance.'],
455+
['dots.tts MeanFlow','int8 · base','dots-tts-mf','dots-tts.md','dots-tts-mlx','Continuous autoregressive TTS with a four-step distilled acoustic solver.'],
454456
['Fish S2 Pro','int8','fish-s2-pro','fish-s2-pro.md','fishaudio-s2-pro-8bit-mlx','Dual-AR TTS with voice cloning and inline emotion tags like <code>[excited]</code>.'],
455457
['VibeVoice Large','int8','vibevoice','vibevoice.md','vibevoice-mlx','Hybrid LLM-plus-diffusion TTS with voice cloning and long-form delivery.'],
456458
['LongCat AudioDiT','int8','longcat','longcat-audiodit.md','longcat-audiodit-3.5b-8bit-mlx','Flow-matching diffusion TTS built on a 3.5B audio diffusion transformer.'],

‎tests/integration/test_dots_tts_hf.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313

1414
ROOT = Path(__file__).parents[2]
15-
REMOTE_REVISION = "5dde9ded6c577a84a71b5ee9dafebfa53188d6d6"
15+
REMOTE_REVISION = "ca6740366ab7316c26ddbb640e756c4ec414778f"
1616
REMOTE_CASES = (
1717
("dots-tts-soar-base", "soar/mlx-base", "batch"),
1818
("dots-tts-soar", "soar/mlx-int8", "stream"),

‎tests/unit/test_site_catalog.py‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from pathlib import Path
2+
3+
4+
ROOT = Path(__file__).parents[2]
5+
6+
7+
def test_site_catalog_includes_both_dots_tts_solvers() -> None:
8+
page = (ROOT / "site/index.html").read_text(encoding="utf-8")
9+
10+
assert "Thirteen models. One loader." in page
11+
assert "10 modules" in page
12+
assert "['dots.tts','SOAR · MeanFlow']" in page
13+
assert (
14+
"['dots.tts SOAR','int8 · base','dots-tts-soar','dots-tts.md','dots-tts-mlx'"
15+
) in page
16+
assert (
17+
"['dots.tts MeanFlow','int8 · base','dots-tts-mf','dots-tts.md','dots-tts-mlx'"
18+
) in page

0 commit comments

Comments
 (0)