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
Safetensors
Model size
27.1M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for EphAsad/SatellaSTT-27M

Quantized
(18)
this model

Datasets used to train EphAsad/SatellaSTT-27M

Space using EphAsad/SatellaSTT-27M 1