Transcribe completed speech clips locally in browsers and Node.js with
@tiny-stt/whistle. The independent TypeScript SDK wraps Cactus Compute's official
Whistle-compatible JS/WASM runtime. It has no hosted inference, telemetry or audio
uploads, and supports clips of up to 30 seconds.
Read Getting started, then choose an environment. The guide covers package installation, asset preparation and testing a local checkout.
| Import | Purpose |
|---|---|
| @tiny-stt/whistle | Browser workers, pinned-model loading and self-hosted assets |
| @tiny-stt/whistle/node | Local-only Node worker threads |
| @tiny-stt/whistle/audio | File decoding, channel downmixing and 16 kHz resampling |
| @tiny-stt/whistle/microphone | Push-to-talk recording with manual stop, auto-stop and cancellation |
| @tiny-stt/react | Optional React 19 hooks for engine ownership and recording |
Each entry point includes its exported functions, options, result fields and error contracts, generated from the source comments that also ship in TypeScript declarations.
Whistle is the speech model; needle.js and needle.wasm are its shared engine.
The required model is whistle.cact, not the Needle text model. Runtime code ships
in the package, while the 16.9 MB model is acquired explicitly at build time or by
the configured browser loader. This SDK is not official Cactus software.