diff --git a/web/data/product.toml b/web/data/product.toml index f913a43..88a74f7 100644 --- a/web/data/product.toml +++ b/web/data/product.toml @@ -5,7 +5,9 @@ # Version/artifact figures were verified against the tagged v0.7.2 release. # Re-verify this file before publishing a website change. # -# Verified: 2026-08-16 against v0.7.2 and PRODUCT.md. +# Verified: 2026-08-17 against v0.7.2 (stable) and main @ 1b409b6 (nightly +# models, from Sources/VocaMac/Models/WhisperModel.swift and +# SherpaModelCatalog.swift). [stable] version = "0.7.2" @@ -109,6 +111,72 @@ ram = "10 GB" quality = "Best" note = "Highest accuracy. Wants a 16 GB Mac and patience." +# Additional engines and models shipped only in nightly builds from main +# (Sources/VocaMac/Models/WhisperModel.swift ModelSize + SherpaModelCatalog.swift), +# not in the v0.7.2 release above. size/note follow README.md's Models section. +[[nightlyModels]] +id = "parakeet-v3" +name = "Parakeet v3" +engine = "Parakeet" +size = "0.7 GB" +note = "Fastest engine. 25 European languages + Japanese, auto-detected." + +[[nightlyModels]] +id = "parakeet-v2" +name = "Parakeet v2" +engine = "Parakeet" +size = "1.2 GB" +note = "Fastest engine. English only, highest recall." + +[[nightlyModels]] +id = "parakeet-110m" +name = "Parakeet 110M" +engine = "Parakeet" +size = "0.2 GB" +note = "English only, smaller download and faster first load." + +[[nightlyModels]] +id = "apple-speech" +name = "Apple Speech" +engine = "Apple Speech" +size = "Managed by macOS" +note = "macOS 26+ system engine (SpeechAnalyzer). Roughly 30 locales." + +[[nightlyModels]] +id = "moonshine-v2-tiny" +name = "Moonshine v2 Tiny" +engine = "sherpa-onnx" +size = "60 MB" +note = "CPU-only. Very low-RAM Macs, English." + +[[nightlyModels]] +id = "moonshine-v2-base" +name = "Moonshine v2 Base" +engine = "sherpa-onnx" +size = "190 MB" +note = "CPU-only. Low-RAM Macs, English." + +[[nightlyModels]] +id = "sense-voice" +name = "SenseVoice" +engine = "sherpa-onnx" +size = "240 MB" +note = "CPU-only. Chinese, Japanese, Korean, Cantonese, English." + +[[nightlyModels]] +id = "gigaam-v3" +name = "GigaAM v3" +engine = "sherpa-onnx" +size = "270 MB" +note = "CPU-only. Russian, with punctuation." + +[[nightlyModels]] +id = "canary-180m-flash" +name = "Canary 180M Flash" +engine = "sherpa-onnx" +size = "320 MB" +note = "CPU-only. English, Spanish, German, French." + [links] repo = "https://github.com/VocaHQ/vocamac" issues = "https://github.com/VocaHQ/vocamac/issues" diff --git a/web/layouts/index.html b/web/layouts/index.html index 81e6c37..0171679 100644 --- a/web/layouts/index.html +++ b/web/layouts/index.html @@ -103,26 +103,50 @@

First download

Nightly is a separate lane

-

The current shipping release is {{ $p.stable.tag }} ({{ $p.stable.status }}). New engine work may appear in nightly builds before it reaches a tagged release; check the release notes before choosing that path.

+

The current shipping release is {{ $p.stable.tag }} ({{ $p.stable.status }}). Nightly builds from main add the engines and models in the second table before they reach a tagged release.

+
+
$ {{ $p.nightly.cask }}
+
+

Check the nightly release notes before installing.

-
- - - - - - - {{ range $p.models }} - - - - - - - {{ end }} - -
WhisperKit models available in {{ $p.stable.tag }}
ModelDownloadRAMCharacter
{{ .name }}{{ .size }}{{ .ram }}{{ .note }}
+
+
+ + + + + + + {{ range $p.models }} + + + + + + + {{ end }} + +
WhisperKit models available in {{ $p.stable.tag }}
ModelDownloadRAMCharacter
{{ .name }}{{ .size }}{{ .ram }}{{ .note }}
+
+
+ + + + + + + {{ range $p.nightlyModels }} + + + + + + + {{ end }} + +
Additional engines and models in nightly builds
ModelEngineDownloadNote
{{ .name }}{{ .engine }}{{ .size }}{{ .note }}
+
@@ -298,7 +322,7 @@

The useful bits before you install.

Which Macs can run VocaMac?

The current release supports {{ $p.requirements.os }} on {{ $p.requirements.arch }}. Intel Macs are not supported by the released arm64 build.

Why does VocaMac need permissions?

Microphone access captures speech. Accessibility and Input Monitoring let the menu-bar app hear its configured shortcut and insert the resulting text into the app where you are working. Secure fields and individual apps can still restrict insertion.

Which model should I choose?

Start with Small on an 8 GB Mac, then choose a compact Large or Distil variant when accuracy matters and your Mac has the headroom. Tiny and Base are useful when a smaller download or lower memory use matters more.

-
What is available beyond Whisper?

Additional engine work is currently shipped in nightly/source channels rather than the {{ $p.stable.tag }} release. Check the current release notes before installing a nightly build.

+
What is available beyond Whisper?

Nightly builds add three more engines: Parakeet (NVIDIA TDT models on the Apple Neural Engine, the fastest option), Apple Speech (the macOS 26+ system engine), and sherpa-onnx (CPU-only specialized models: Moonshine, SenseVoice, GigaAM v3, and Canary 180M Flash). These ship in nightly/source channels rather than the {{ $p.stable.tag }} release — see the nightly table above and check release notes before installing.

diff --git a/web/static/style.css b/web/static/style.css index c92eeed..2dbd6bf 100644 --- a/web/static/style.css +++ b/web/static/style.css @@ -722,6 +722,8 @@ a:hover > .btn-arrow-back { transform: translateX(-3px); } border-radius: var(--radius-md); } +.table-scroll + .table-scroll { margin-top: 1.25rem; } + .model-table { width: 100%; border-collapse: collapse; diff --git a/web/tests/site.test.mjs b/web/tests/site.test.mjs index 572ab1f..9834369 100644 --- a/web/tests/site.test.mjs +++ b/web/tests/site.test.mjs @@ -62,7 +62,10 @@ test("keeps the PRODUCT.md product boundary explicit", () => { assert.match(index, /WhisperKit/); assert.match(index, /model downloads/i); assert.match(index, /Beta/); - assert.match(index, /Additional engine work is currently shipped in nightly\/source channels/i); + assert.match(index, /Nightly builds add three more engines/i); + assert.match(index, /ship in nightly\/source channels/i); + assert.match(index, /Parakeet/); + assert.match(index, /sherpa-onnx/); assert.doesNotMatch(index, /Stable release/i); assert.doesNotMatch(index, /macOS 13/); assert.doesNotMatch(index, /Zero Network Calls/i);