Downloads · 30 days
12
17% of all-time downloads
lowdown-labs/fela-streaming-asr
fela-streaming-asr is a automatic speech recognition model from lowdown-labs. Use it when you need speech turned into text. It is set up for transformers. The card lists the license as other.
This model transcribes speech to text as it arrives, on a CPU, with memory that stays flat no matter how long the stream runs. It is built for on device and edge use: real time transcription on a phone, a Pi, or a lap…
Downloads · 30 days
12
17% of all-time downloads
All-time downloads
72
Public
Parameters
64.4M
258 MB on disk
Likes
2
Public
Click a slice to open those files.
.safetensors258 MB · 100%
From the Hugging Face model README
This model transcribes speech to text as it arrives, on a CPU, with memory that stays flat no matter how long the stream runs. It is built for on device and edge use: real time transcription on a phone, a Pi, or a laptop, where the audio can be unbounded in length and there is no cloud round trip. It is a streaming CTC recognizer on a Fourier Neural Operator acoustic backbone.
The acoustic backbone is a Fourier Neural Operator (FNO) sequence mixer, which mixes information across time in the frequency domain at about N log N cost instead of the N squared cost of full attention. There is no attention and no key/value cache. In streaming mode each block carries a bounded context, so memory is constant regardless of stream length, and the streaming output matches the offline forward exactly. That is the property Whisper (30 second offline chunks) and wav2vec2 (a fixed context window) do not have. The model is small and CPU native, so it runs on the device and keeps audio private.
| Format | Size on disk | Real time factor (CPU) | RAM over a 2.6 min stream |
|---|---|---|---|
| fp32 | 258 MB (64.4M model) | 28 to 30x faster than real time (4 threads) | 0.3 to 0.4 MB added (flat) |
| int8 | 78 MB (64.4M model, 3.3x smaller) | see note | flat |
The differentiated property is flat memory over an unbounded stream (0.3 to 0.4 MB added RSS over a 2.6 minute continuous stream) and faster than real time CPU inference.
LibriSpeech, greedy decode, no language model, measured on the full test sets. Reference baselines were rerun by us (n=200) where noted.
| Benchmark | Metric | This model | Baseline (named) |
|---|---|---|---|
| LibriSpeech test clean, 460h train (64.4M streaming) | WER | 16.4 | wav2vec2 base 960h 2.55, whisper base.en 3.41, whisper small.en 2.29 |
| LibriSpeech test clean, 960h train (206M byte CTC) | WER | 13.4 | as above |
| LibriSpeech test other, 960h train (206M byte CTC) | WER | 26.2 | as above |
| LibriSpeech test clean, 100h train (64.4M) | WER | 25.4 | as above |
| Degraded audio (noise5 test clean) | WER | FELA line holds up | wav2vec2 collapses (48.8) |
| Degraded audio (lowbit test other) | WER | FELA line holds up | wav2vec2 collapses (60.7) |
On clean WER this model is behind the self supervised and large weakly supervised baselines (13.4 versus about 3 to 6). WER scales the right way with data and model size (25.4 at 100h/64M, then 16.4 at 460h/64M, then 13.4 at 960h/206M).
The differentiated angle is streaming, flat memory, and CPU native serving, plus bonuses for any degraded and noisy audio enviroments where the dense transformer baselines break.
It runs on CPU; no GPU is required. See quickstart/ for a runnable example. The given
code uses the self contained modeling.py and config.json in this repo.
For an interactive playground, see the Hugging Face Space linked in this repo. For
production serving, use the CPU native FELA server (https://github.com/Lowdown-Labs/fela_server).
model.safetensors (no pickle code execution risk). config.json holds
the architecture hyperparameters; modeling.py is a self contained loader with the exact
preprocessing (resample to 16 kHz, downmix to mono, log mel front end) and input
validation that fails clearly on the wrong sample rate or unnormalized audio.Datasets (for the two shipped/measured checkpoints, both LibriSpeech only):
torchaudio.datasets.LIBRISPEECH). License: CC-BY-4.0 (verified from the LICENSE.TXT
shipped in the corpus: "licensed under a Creative Commons Attribution 4.0 International
License").
Split method and sizes:
train.py line 46 (official test clean) and line 47 (test other),
loaded via torchaudio.datasets.LIBRISPEECH. Bare size assertions
assert n_test == 2620 and assert n_other == 2939 are in the --smoke block at
train.py lines 51 - 52.Reproduced training script: /workspace/train_asr.py on the training pod produced the
streaming 64.4M checkpoint (FNO, bpe256, 460 h). train.py in this repo adapts it
faithfully; python train.py --smoke builds the split, asserts the official test sizes, and
exits before training.
What it is for: on device and edge streaming transcription where flat memory and faster than real time CPU inference matter more than the last few WER points: live captions, on device dictation, an offline transcription box. It runs on CPU; a GPU is optional and only helps speed.
What it is not for: it is not yet a drop in replacement for cloud Whisper on raw clean accuracy. Do not use the transcript as the sole record for a decision that carries legal, medical, or safety weight without human review, especially on noisy or accented audio where WER is higher.
Evaluated conditions and known failure modes:
Privacy: the model runs on the device or on your own CPU, so the audio does not have to leave the machine and there is no per call API.
Devices: the size and the streaming/RTF numbers were measured on an x86 server CPU. Given the RAM usage and capability on lower compute devices, this model would probably be a great fit for cellular usage, especially if trained further to lower WER.
@misc{lowdownlabs_asr_streaming,
title = {Streaming ASR: an FNO CTC on device, constant memory speech recognizer},
author = {Lowdown Labs},
year = {2026},
note = {Model card}
}
You should also cite the datasets, the reference baselines, and the libraries:
LibriSpeech (the two shipped/measured checkpoints 460 h and 960 h - are LibriSpeech-only).
Panayotov, V., Chen, G., Povey, D., Khudanpur, S. (2015). "Librispeech: An ASR corpus based on
public domain audio books." ICASSP 2015, pp. 5206-5210.
DOI: https://doi.org/10.1109/ICASSP.2015.7178964. Source: https://www.openslr.org/12/
(loaded via torchaudio.datasets.LIBRISPEECH).
License: CC-BY-4.0 - verified from the LICENSE.TXT shipped in the corpus
(https://www.openslr.org/resources/12/LICENSE.TXT, "licensed under a Creative Commons
Attribution 4.0 International License"). Commercial use: permitted with attribution.
@inproceedings{panayotov2015librispeech,
title = {Librispeech: An {ASR} corpus based on public domain audio books},
author = {Panayotov, Vassil and Chen, Guoguo and Povey, Daniel and Khudanpur, Sanjeev},
booktitle = {2015 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
pages = {5206--5210},
year = {2015},
doi = {10.1109/ICASSP.2015.7178964}
}
Common Voice Ardila, R., Branson, M., Davis, K., et al. (2020). "Common Voice: A Massively-Multilingual Speech Corpus." LREC 2020, pp. 4218-4222. arXiv:1912.06670 (https://arxiv.org/abs/1912.06670). Dataset: https://commonvoice.mozilla.org/en/datasets. License: CC0-1.0 (public domain dedication) - Mozilla releases Common Voice under CC0 (https://creativecommons.org/publicdomain/zero/1.0/). Commercial use: unrestricted.
Multilingual LibriSpeech / MLS Pratap, V., Xu, Q., Sriram, A., Synnaeve, G., Collobert, R. (2020). "MLS: A Large-Scale Multilingual Dataset for Speech Research." Interspeech 2020. arXiv:2012.03411 (https://arxiv.org/abs/2012.03411). Source: https://www.openslr.org/94/. License: CC-BY-4.0 (https://creativecommons.org/licenses/by/4.0/). Commercial use: permitted with attribution.
Comparison baselines (not training data): wav2vec2 (Baevski et al., NeurIPS 2020, arXiv:2006.11477) and Whisper (Radford et al. 2022, arXiv:2212.04356).
The shipped on device
streaming model is a pure Fourier Neural Operator sequence mixer (layer_pattern="FNO",
gla_delta=false, no GLA recall layers - the build log records pattern=FNO, gla_layers=[]),
a CTC head over a 257 unit SentencePiece byte pair vocabulary, and a log mel front end.
modeling.py
preprocess_audio). https://github.com/pytorch/audio (BSD-2-Clause).bpe256.model, 256 units + 1 CTC blank).
Kudo, T., Richardson, J. (2018). "SentencePiece: A simple and language independent subword
tokenizer and detokenizer for Neural Text Processing." EMNLP 2018 (demo). arXiv:1808.06226
(https://arxiv.org/abs/1808.06226); repository
https://github.com/google/sentencepiece (Apache-2.0).scripts/export_onnx.py,
opset 17). https://github.com/microsoft/onnxruntime (MIT).This is part of the FELA family from Lowdown Labs: one FNO architecture across many
modalities, all CPU native and subquadratic. This repo is pushed as lowdown-labs/fela-streaming-asr.
These are grouped under the FELA Collection on Hugging Face. The models are independently
trained per modality and do not share weights, so none carries a base_model link.
Released under the Lowdown Labs Lovely License 1.0 (CC BY-NC 4.0 + Hippocratic License 3.0). See LICENSE.
For most LL models, a commercial license may be available; contact Lowdown Labs.