Instructions to use Hebrish/Sabich-asr4all-M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Hebrish/Sabich-asr4all-M with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="Hebrish/Sabich-asr4all-M", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Hebrish/Sabich-asr4all-M", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
You need to agree to share your Hugging Face information to access this model
This repository is publicly accessible, but you have to accept the conditions to access its files and content.
Access to this model is by request and is governed by the Hebrish terms of use (https://hebrish.app/terms) and by the FUTO Model Weights License 1.0 (LICENSE in this repository), whose Limitations apply to every use. Non-commercial use is free; commercial use needs a commercial licence from access-requests@hebrish.app.
Log in or Sign Up to review the conditions and access this model content.
Sabich-asr4all-M v1.0
Notice. This model is derived from Asr4All (
futo-org/asr4all-m, revision9b1506ca35ebfdc04be6b87868cc2f95eff10210) and is subject to the FUTO Model Weights License 1.0, included in this repository asLICENSE. The weights have been modified: the CTC acoustic trunk was fine-tuned on English-Hebrew code-switching speech (Hebrew words in romanized form) and English. The PCEC punctuation and casing head is unmodified. This model is not affiliated with or endorsed by the licensor.
Sabich on a tiny streaming base. Sabich is the kitchen-sink line of the Hebrish project: one
speaker's English dictation with everything in it. That covers Hebrew words written in canonical
romanization (teudat zehut, arnona, makolet), tech vocabulary, brand names, acronyms and everyday
email and message dictation. The main Sabich is
Parakeet TDT 0.6B v2, sized for phones. This variant applies the same training data to
futo-org/asr4all-m, a 55.6M-parameter streaming CTC model, for
wearables, small boards and low-end phones, on CPU.
The smaller Sabich-asr4all-S (28M) is about one point worse on most tests (two on LibriSpeech), at half the size.
Name. Each line has a food code name for what it is trained on. A variant on a different base
model keeps the line name and adds the base: Sabich-<Base>-<Size>.
Output
English, punctuated and cased by the stock PCEC head. Hebrew words are written in Latin script, never Hebrew script. Numbers come out as words ("four point one", not "4.1"): the model's vocabulary has no digits, so it was trained on spelled-out numbers.
Results
Held-out test split of the speaker's recordings (term-disjoint from training), dataset revision
cf84f7e4, streaming tier c256r32, PCEC on. WER is normalised (lower-cased, punctuation
stripped) unless marked raw; term recall is a word-boundary match on the romanized Hebrew term.
| Stock asr4all-m | This model | |
|---|---|---|
| English-Hebrew code-switching, WER (431 clips) | 19.5% | 9.1% |
| English-Hebrew code-switching, raw WER | 23.4% | 15.4% |
| Hebrew terms never seen in training, recall | 7.5% | 36.3% |
| Hebrew terms seen in training, recall | 65.6% | |
| Speaker's own English, WER (100 clips) | 12.2% | 7.3% |
| LibriSpeech test-clean (200 utterances), WER | 2.2% | 4.0% |
| Long-form (about 3-minute joined clips), WER | 19.4% | 9.0% |
The raw-vs-normalised gap is the stock PCEC head's casing and punctuation, which was not retrained. LibriSpeech gets worse than the stock model: the training mix had only 10% general English replay.
Use
import numpy as np, soundfile as sf, torch
from transformers import AutoModel # transformers 4.57
model = AutoModel.from_pretrained("Hebrish/Sabich-asr4all-M", trust_remote_code=True).eval()
audio, sr = sf.read("note.wav", dtype="float32") # 16 kHz mono
audio = np.concatenate([audio, np.zeros(16000, dtype=np.float32)]) # 1 s of silence: keeps the last word
print(model.transcribe(torch.from_numpy(audio), op=(256, 32))) # punctuated and cased (PCEC)
print(model.transcribe(torch.from_numpy(audio), op=(256, 32), punctuate=False)) # plain lowercase
op picks the streaming tier (commit, right context, in frames). (256, 32) is the most
accurate and the one scored above; the lower-latency tiers ((16, 4) … (512, 8), listed in
config.json) were all trained, so they all still work, but were not scored. The model card of
the base model explains the tiers, streaming use and the wake VAD; all of that applies unchanged.
ONNX
onnx/ is the base model's ONNX bundle with this model's weights: one graph per streaming tier,
per PCEC rung and the VAD, all reading one shared asr4all.onnx.data. Run it with the included
onnx/asr4all_onnx.py (pip install onnxruntime numpy soundfile):
python onnx/asr4all_onnx.py onnx/ note.wav --tier stream_c256r32
python onnx/asr4all_onnx.py onnx/ note.wav --tier stream_c256r32 --no-pcec
How it was built: the base model's exporter is not published, so the weights were swapped into
its released graphs. Every float tensor in those graphs was matched to the PyTorch weights it
comes from (directly, transposed, or with BatchNorm folded in), and the same transform of the
fine-tuned weights was written in its place. The graphs are otherwise unchanged. Check: on 6 test
clips the ONNX bundle produces the fine-tuned model's Hebrew words, and agrees with PyTorch
transcribe() on 8 of 12 outputs (PCEC off and on); the other outputs differ by a word or
a clipped ending. The stock model's own ONNX and PyTorch agree on 4 of 12 lines on the same clips,
so the differences come from the runtime, not from the swap.
ExecuTorch: not included
The base model's ExecuTorch .pte files (XNNPACK int8 and fp32) are not rebuilt here. The int8
build stores quantized weights inside the compiled program, and the quantization and export
pipeline is not published, so there is no safe way to put the fine-tuned weights into it. Use the
ONNX bundle, or export from the PyTorch weights yourself.
Training
- Data:
danielrosehill/Read-Aloud-Voice-Sentencesat revisioncf84f7e4, blendall: 602 minutes of the speaker's own takes (388 of them code-switching), plus 10% LibriSpeech-PC replay against forgetting. 669 minutes and 5,748 clips (4 over-long or over-dense clips dropped). - Targets: the model's own CTC form: lowercase a-z, apostrophe and spaces. Numbers are spelled
out (
num2words), "." inside a web address becomes "dot", accents are stripped. - Recipe: the CTC trunk fully fine-tuned in plain PyTorch, PCEC and VAD frozen. Loss: CTC on the final layer plus 0.3 × CTC on the self-conditioning auxiliary head. Each step uses one of the six shipped streaming tiers at random, so every operating point stays trained. BatchNorm statistics frozen. 20 epochs, AdamW lr 1e-4 with cosine decay and 5% warmup, about 480 s of padded audio per batch, one L40S, 9.0 minutes. Best epoch by validation greedy WER: epoch 15 (16.0 → 6.2% on the validation split).
- The run's configuration and result are in
training/a1-all/.
Limits
- Trained on one speaker (an Irish English speaker living in Israel), reading prompts on a phone. Other voices will gain less.
- Numbers come out as words, not digits.
- Punctuation and casing are the stock PCEC head's, which does not know the romanized Hebrew words (it capitalises some of them).
- General English (LibriSpeech) is worse than the stock model.
- About two thirds of unseen Hebrew words are still missed or misspelled.
Licence
The weights are licensed under the FUTO Model Weights License 1.0 (LICENSE), including its
Limitations section, which applies to every use of this model and its outputs. Use is also
governed by the Hebrish terms of use, which add a non-commercial
default on top. The remote code (modeling_asr4all.py) and the ONNX runtime script
(onnx/asr4all_onnx.py) are the base model's, unchanged. If you publish research results using
this model, the licence asks you to cite the weights as the "Asr4All Model".
- Downloads last month
- -
Model tree for Hebrish/Sabich-asr4all-M
Base model
futo-org/asr4all-m