Repository navigation
feat(voice-to-text): add Fast (Whistle) engine and live dictation - #409
Merged
Merged
Conversation
Promote to production: 3D viewer framing fix
- New default "Fast · 7 languages" model: Cactus Whistle (Apache-2.0), a 17 MB on-device speech model in a single-threaded WASM engine. Replaces the two English-only Whisper models; Whisper Multilingual / Better stay for Indonesian and every other language - Picking a language Fast doesn't cover switches to Whisper automatically; Indonesian pages default to Bahasa + Whisper; Polish added - Long files are split into 30 s windows at the quietest point; word timestamps become subtitle cues for TXT/SRT/VTT export - Live dictation: mic -> AudioWorklet -> worker, ~1 s steps with back-pressure; committed words + pending tail, recording kept for replay - needle.js vendored as an ES module (scripts/vendor-needle.mjs); needle.wasm and whistle.cact fetched via the /hf proxy pinned to exact commits, SHA-256 verified and kept in Cache Storage - Unit tests for the pure lib and the engine wrapper (fake module); E2E with a dev-only ?e2e stub engine and a synthetic microphone; EN/ID SEO updated
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
goodwebtools | 7d34a38 | Oct 09 2026, 12:38 PM |
5 of 6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Adds a second speech engine to Voice to Text — Cactus Whistle (Apache-2.0), a 17 MB on-device model — plus live dictation.
needle.jsvendored as an ES module (scripts/vendor-needle.mjs, Apache-2.0 LICENSE included).needle.wasmandwhistle.cactload through the existing/hf/proxy, pinned to exact Hugging Face commits, SHA-256 verified, and kept in Cache Storage. No R2 upload or Worker change.Measured (headless Chromium, 11 s English clip): Whistle 0.4 s load / 1.5 s transcribe vs Whisper base 12.7 s / 4.7 s; download ~18 MB vs ~232 MB. Real-model check on the dev server: exact transcript for file and live modes.
Checklist
npm test -- --runpasses (243 files / 2420 tests)npm run buildsucceedsnpm run lintis clean (0 errors)voice-to-text); new E2Ee2e/tools/voice-to-text.spec.ts(dev-only?e2estub engine + synthetic mic)