Oswald-mini-V1
A small Haitian Creole (Kreyòl) speech-to-text model for phones and browsers: Cactus Compute's
Whistle fine-tuned on Kreyòl (LoRA on attention plus new
vocabulary rows, language code ht), shipped as a 29 MB 4-bit .cact for the cactus-needle engine (Python, Node,
the browser in WebAssembly, phones). It is the small sibling of the Oswald recognizers:
Oswald-ASR-0.6-V2 is a 0.6 B-parameter model (its Q8 build is 24× this download) and makes half the word errors.
This build hears Kreyòl only. The English, French and Spanish of the base model are gone (their WER went from 9–19 % to over 95 %).
Results
Scored on the 1,882 held-out clips of the Oswald V3 test selection (1,700 with human transcripts), the way the Oswald cards are scored: lowercase, no punctuation, digits spelled out, accents stripped. WER / CER in %.
| Kind of recording | clips | Oswald-mini-V1 | Oswald V3 (0.6 B, not published) | Oswald-ASR-0.6-V2 |
|---|---|---|---|---|
| All clips with human transcripts | 1,700 | 13.8 / 5.3 | 7.2 / 2.5 | 7.6 / 2.7 |
| Phone recordings (Datamio) | 825 | 12.8 / 4.7 | 3.2 / 1.0 | 4.9 / 1.6 |
| Bible, read | 150 | 8.7 / 2.7 | 4.7 / 1.7 | 4.4 / 1.6 |
| CMU sentences, read | 150 | 9.0 / 2.8 | 6.4 / 2.0 | 7.2 / 2.4 |
| Studio: numbers | 85 | 10.0 / 3.1 | 4.2 / 1.2 | 4.8 / 1.6 |
| Studio: health | 116 | 12.2 / 4.5 | 6.3 / 2.2 | 5.7 / 2.2 |
| Studio: finance | 63 | 6.6 / 1.4 | 4.7 / 1.0 | 4.5 / 1.0 |
| Studio: legal | 46 | 6.5 / 1.8 | 3.4 / 1.0 | 3.6 / 1.0 |
| Studio: social | 93 | 12.0 / 4.9 | 5.8 / 1.7 | 6.9 / 2.2 |
| Studio: history | 52 | 23.3 / 7.4 | 20.5 / 6.1 | 16.5 / 5.1 |
| Radio (machine transcripts: agreement, not accuracy) | 150 | 18.4 / 6.9 | 11.0 / 3.8 | 12.0 / 4.1 |
| YouTube | 120 | 32.9 / 15.7 | 28.2 / 11.8 | 24.8 / 10.9 |
Numbers heard whole (327 spans): 84 % against 94 % for Oswald V3. The untuned base model scores 99.6 % WER on these clips: it has no Kreyòl.
Speed: the whole set at RTF 0.0059 on an Apple M3 Pro CPU, one clip at a time (about 170× real time); a 9 s clip in about 60 ms in Python.
Use
pip install cactus-needle soundfile huggingface_hub
hf download jsbeaudry/Oswald-mini-V1 Oswald-mini-V1.cact --local-dir .
import needle, soundfile
pcm, rate = soundfile.read("klip.wav", dtype="float32") # mono, 16 kHz
ears = needle.Whistle(weights="Oswald-mini-V1.cact")
print(ears.transcribe(pcm, language="ht")["text"])
In the browser, with cactus-needle:
import { Whistle } from 'cactus-needle/browser';
const url = 'https://huggingface.co/jsbeaudry/Oswald-mini-V1/resolve/main/Oswald-mini-V1.cact';
const ears = new Whistle({ model: new Uint8Array(await (await fetch(url)).arrayBuffer()) });
const { text } = await ears.transcribe(pcm16k); // Float32Array at 16 kHz
cactus-needle 0.3.0's browser worker only accepts answers in its seven base languages; this model answers ht. Add
`ht` to the language list in dist/browser/worker.js (one line), or serve a patched copy through workerUrl.
The output is lowercase, without punctuation, with digits (125 goud). Clips up to 30 s.
How it was made
- Base:
Cactus-Compute/whistle; LoRA rank 64 (alpha 128) on attention, new vocabulary rows for Kreyòl, languageht. - Data: 133 h of Kreyòl, human speech only: paid phone recordings from Datamio contributors (25 h), radio (42 h),
Bible readings (36 h), CMU sentences (10 h), studio sets (health, social, legal, numbers, history, finance,
e-commerce; 13 h), YouTube (6 h).
data_hours.jsonhas the split. The test clips were held out. - Training: 5 epochs (4,495 steps), lr 1e-2 with warm-up and cosine decay,
needle whistle finetune; thenneedle whistle build --lora adapter.safetensorsmade the 4-bit.cact.adapter.safetensorsis included for anyone who wants to rebuild it. - Not tried: a mixed build that keeps English, French and Spanish reached the same Kreyòl WER (13.6 %) while keeping part of those languages; it is not published here.
License
Apache 2.0, as the base model.
Model tree for jsbeaudry/Oswald-mini-V1
Base model
Cactus-Compute/whistle