Instructions to use EphAsad/SatellaSTT-27M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use EphAsad/SatellaSTT-27M with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="EphAsad/SatellaSTT-27M")# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq processor = AutoProcessor.from_pretrained("EphAsad/SatellaSTT-27M") model = AutoModelForSpeechSeq2Seq.from_pretrained("EphAsad/SatellaSTT-27M", device_map="auto") - Notebooks
- Google Colab
- Kaggle
SatellaSTT-27M
SatellaSTT-27M is a compact English automatic speech recognition model adapted for scientific, microbiological and laboratory language while retaining general-English speech recognition.
It is based on UsefulSensors/moonshine-tiny and contains approximately 27.1M
parameters.
The model is designed to preserve useful written scientific notation rather than always
verbalising it. Held-out examples include 50 µL, 500 µM, 10^-2, 10 mL, O157,
and 7.5 x 10^8 CFU per gram.
Highlights
- 9.639% WER on the 91-sample held-out scientific test set
- 60.577% domain-term recall across 208 evaluated scientific terms
- 6.913% WER on 482 LibriSpeech test-clean utterances
- 26.784% → 9.639% scientific WER versus base Moonshine
- 33.173% → 60.577% scientific domain-term recall
- Validated FP32 ONNX deployment through
ORTModelForSpeechSeq2Seq
Training
| Item | Value |
|---|---|
| Base model | UsefulSensors/moonshine-tiny |
| Scientific source | EphAsad/STT-Science |
| Scientific source duration | 20.000 h |
| Scientific train duration | 19.595 h |
| General replay | 20.003 h LibriSpeech |
| Learning rate | 1e-05 |
| Maximum epochs | 2 |
| Selected checkpoint | checkpoint-200 |
| Best weighted validation WER | 7.602% |
| Loss-alignment preflight delta | 0.0 |
Held-out evaluation
| Metric | Base Moonshine | SatellaSTT-27M | Change |
|---|---|---|---|
| Scientific WER ↓ | 26.784% | 9.639% | -17.145 points |
| Scientific term recall ↑ | 33.173% | 60.577% | +27.404 points |
| General LibriSpeech WER ↓ | 4.995% | 6.913% | +1.917 points |
Science evaluation used 91 held-out utterances and 208 evaluated domain terms. General evaluation used 482 LibriSpeech test-clean utterances.
Qualitative examples
Scientific notation
Reference: The reaction contained 50 µL of template and 500 µM EDTA.
Base Moonshine: The reaction contained 50 microliters of template and 500 micromolar EDTA.
SatellaSTT-27M: The reaction contained 50 µL of template and 500 µM EDTA.
Antimicrobial susceptibility
Reference: Antimicrobial susceptibility of Escherichia coli O157 to trimethoprim was assessed by broth microdilution.
Base Moonshine: And to my cobule susceptibility of Escherichia Kohli, o one fifty seven to Trimethoprim was assessed by broth micro dilution.
SatellaSTT-27M: Antimicrobial susceptibility of Escherichia coli O157 to trimethoprim was assessed by broth microdilution.
Dilution notation
Reference: The control sample was diluted to 10^-2 before a volume of 10 mL was plated.
Base Moonshine: The control sample was diluted to 10 to the minus 2 before a volume of 10 milliliters was plated.
SatellaSTT-27M: The control sample was diluted to 10^-2 before a volume of 10 mL was plated.
Deployment benchmarks
The fixed benchmark contains 16 held-out scientific utterances, 131.125 seconds of audio, spanning 4.525–15.450 s.
PyTorch CPU — original training notebook
| Metric | Result |
|---|---|
| Median latency | 334.2 ms |
| p95 latency | 492.9 ms |
| Real-time factor | 0.0414 |
| Speed vs real time | 24.13× |
| Benchmark WER | 14.167% |
| PyTorch artifact size | 107.0 MB |
PyTorch GPU — original training notebook
| Metric | Result |
|---|---|
| Median latency | 358.6 ms |
| p95 latency | 482.7 ms |
| Real-time factor | 0.0440 |
| Speed vs real time | 22.75× |
| Benchmark WER | 14.167% |
FP32 ONNX CPU — deployment notebook
| Metric | Result |
|---|---|
| Median latency | 371.7 ms |
| p95 latency | 569.5 ms |
| Real-time factor | 0.0453 |
| Speed vs real time | 22.06× |
| Benchmark WER | 14.167% |
| Artifact size | 250.4 MB |
| Exact normalized transcript match vs fresh PyTorch | 100.0% |
Files: onnx/
INT8 ONNX
Dynamic INT8 quantization was tested but did not pass the publication quality gate. The FP32 ONNX export remains the validated deployment model.
Machine-readable deployment results: benchmarks/onnx_benchmarks.json.
Usage — PyTorch
import soundfile as sf
import torch
from transformers import AutoProcessor, MoonshineForConditionalGeneration
model_id = "EphAsad/SatellaSTT-27M"
processor = AutoProcessor.from_pretrained(model_id)
model = MoonshineForConditionalGeneration.from_pretrained(model_id)
model.eval()
audio, sr = sf.read("sample.wav", dtype="float32")
inputs = processor(audio, sampling_rate=sr, return_tensors="pt")
with torch.no_grad():
ids = model.generate(
**inputs,
max_length=128,
num_beams=1,
do_sample=False,
)
print(processor.tokenizer.decode(ids[0].tolist(), skip_special_tokens=True))
Usage — ONNX Runtime
import soundfile as sf
from optimum.onnxruntime import ORTModelForSpeechSeq2Seq
from transformers import AutoProcessor
model_id = "EphAsad/SatellaSTT-27M"
processor = AutoProcessor.from_pretrained(model_id)
model = ORTModelForSpeechSeq2Seq.from_pretrained(
model_id,
subfolder="onnx",
provider="CPUExecutionProvider",
)
audio, sr = sf.read("sample.wav", dtype="float32")
inputs = processor(audio, sampling_rate=sr, return_tensors="pt")
ids = model.generate(
**inputs,
max_length=128,
num_beams=1,
do_sample=False,
)
print(processor.tokenizer.decode(ids[0].tolist(), skip_special_tokens=True))
The processor targets 16 kHz mono speech.
Intended use
SatellaSTT-27M is intended for compact local English ASR where scientific and microbiological terminology matters, including organism names, culture media, antimicrobial susceptibility language, concentrations, volumes, CFU reporting, dilution notation, molecular biology terminology and laboratory reporting language.
Limitations
The scientific-domain training audio is synthetic Kokoro speech, and the current held-out scientific evaluation is also drawn from that synthetic corpus. Independent real-human scientific and laboratory speech is required before making real-world performance claims.
The model can still misrecognise specialised organism names. Held-out examples showed remaining errors on terms such as Aspergillus niger and Vibrio parahaemolyticus.
Domain-term recall is a transcript-matching metric and is not a clinical, diagnostic or regulatory validation measure. Scientific values, units and organism identifications should be checked when accuracy is consequential.
- Downloads last month
- 48
Model tree for EphAsad/SatellaSTT-27M
Base model
moonshine-ai/moonshine-tiny