Saina Helm 2 Omni 0.8B: Mechanical specialist
A specialist of Saina Helm 2 Omni 0.8B that listens to a machine and answers questions about its condition: whether it sounds normal, and which fault it most likely has (inner race, outer race, ball or cage faults on rolling-element bearings, a loose belt, extruder or toolhead problems on a 3D printer, abnormal compressor operation). For electric motors it says whether the motor sounds healthy. Give it a recording of up to 10 seconds, a sentence saying what the machine is, and typed questions; it returns a probability for every option. No text is generated.
It was trained from run-saina/saina-helm-2-omni-0.8b at revision b5637b379cfa27877049452003787ece61793664, and
this repository holds the complete model with the specialist built into its weights (1.7 GB). It loads on its own,
without downloading the base model, and it is updated separately from the base. It answers only as the mechanical
specialist: requests name the model saina-helm-2-omni-0.8b and set specialist to mechanical.
Usage
pip install "saina[local,media]>=0.6.0"
from saina.transformers import HelmModel
helm = HelmModel.from_pretrained(
'run-saina/saina-helm-2-omni-0.8b-mechanical', revision='<commit>', device='cuda:0')
answers = helm.ask(
model='saina-helm-2-omni-0.8b',
specialist='mechanical', # required: this checkpoint answers only as the specialist
state='The clip is a recording of a rolling-element bearing on a test rig at 1,750 rpm, recorded with a phone.',
audios=['bearing.wav'], # up to 10 s; paths, URLs, bytes, (samples, rate) arrays or data URLs
questions={
'condition': {'type': 'single_choice',
'question': 'Which condition does the machine in this clip have?',
'options': {'healthy': None, 'inner': 'inner race bearing fault',
'outer': 'outer race bearing fault', 'ball': 'ball (rolling element) fault'}},
'normal': {'type': 'yes_no',
'question': 'Is the machine operating normally (no fault or anomaly audible)?'},
},
)
On the hosted API at saina.run, send "specialist": "mechanical" with
"model": "saina-helm-2-omni-0.8b"; GET /v1/specialists lists what is served. A self-hosted saina server
loads it like any model, on its own or beside the base model:
SAINA_MODELS=run-saina/saina-helm-2-omni-0.8b-mechanical@<commit>. It reads text and audio, not images.
Revision 1f04fa3c holds the specialist's weights alone, for saina 0.5.0's SAINA_SPECIALISTS on top of the base
revision above; see VERSIONS.md.
Writing questions
Answers are most reliable when the state names the machine and how it runs ("a three-phase induction motor at constant speed", "a 3D printer", "a reciprocating air compressor in a factory") and the options name conditions plainly. Offer the conditions that are possible for that machine, including a healthy option. Recordings should be close to the machine (a phone held against or next to the housing works; the training data includes phone and stethoscope recordings), 1 to 10 seconds, with the machine running steadily.
Evaluation
Held-out recordings from the seven training sources, sent through saina exactly as an API request would be, to
this checkpoint.
Clips from one physical unit or recording session are kept together where a class has more than one; where a
fault exists on only one unit, the held-out clips are the later part of that recording. Each source counts
equally in the average.
| Source | Machine | Normal or faulty? base → specialist | Which condition? base → specialist |
|---|---|---|---|
| ASD3DP | 3D printer (one VORON 0.2) | 51% → 76% | 38% → 60% |
| UORED-VAFCLS | Rolling-element bearings, 20 units | 36% → 91% | 18% → 64% |
| FSTF bearing sounds | Rolling-element bearing, stethoscope on a phone | 12% → 100% | 25% → 100% |
| KAIST rotating machine | Rotating-machine test rig | 8% → 100% | 8% → 69% |
| Industrial air compressor sounds | Industrial air compressor in a factory | 61% → 98% | 62% → 98% |
| UOEMD-VAFCVS | Induction motors, lab microphone | 12% → 94% | not asked (see below) |
| IM-VACD | Induction motors, smartphones | 30% → 100% | not asked (see below) |
| Average (each source counts once) | 30% → 88% over both questions |
1,165 held-out clips, 2,274 questions. On the 3D printer, the healthy recordings were mostly made while printing and the fault recordings while moving the toolhead without filament, so the state does not say how the printer was running; on the no-filament sessions alone the specialist gets 65% (normal or faulty) and 48% (which condition). The motors' seven fault conditions (bearing, bowed rotor, broken rotor bar, misalignment, imbalance, stator winding, voltage unbalance) sound almost the same in the model's 16 kHz input, so for motors the specialist only says whether the motor sounds healthy; it was not trained to name the fault.
Use it for machines only. On the base model's general audio benchmark (4,120 held-out clips from 21 sources:
speech, music, birdsong, everyday sounds) the specialist answers 56% of 5,572 questions correctly, against 69.4% for
the base model; leave specialist out for other audio. On MIMII (fans, pumps, valves and slide rails, machines not in
its training data) it detects faulty machines less well than the base model (50% against 70%), so check it on your own
machine type first.
Limitations
- Laboratory and workshop recordings of a small number of machines: a few motors, bearings and test rigs, one 3D printer and one industrial compressor. Expect lower accuracy on other machines, mounts and rooms, and check it on your own recordings before relying on it.
- Audio is read at 16 kHz, so sound above 8 kHz (where some early bearing defects first show) is not heard.
- The compressor data has no fault names, so the model only says whether a compressor sounds abnormal; for motors it only says whether the motor sounds healthy.
- It is a screening aid, not a substitute for inspection, vibration analysis or a qualified technician, and not for safety-critical shutdown decisions.
Training data and attribution
Trained on the following datasets, all CC BY 4.0. Changes: microphone channels extracted, resampled to 16 kHz mono, cut into clips of at most 9.9 s, labels mapped to plain English. No endorsement by the dataset authors is implied.
- KAIST rotating machine dataset: W. Jung, S.-H. Kim, S. Yun, J. Bae, Y.-H. Park, Vibration, Acoustic, Temperature, and Motor Current Dataset of Rotating Machine Under Varying Load Conditions for Fault Diagnosis, Mendeley Data v6, doi:10.17632/ztmf3m7h5x.6.
- UOEMD-VAFCVS: M. Sehri, P. Dumond, University of Ottawa Electric Motor Dataset, Mendeley Data v1, doi:10.17632/msxs4vj48g.1.
- IM-VACD: M. Sehri, Induction Motor Vibration and Acoustic Cellular Device dataset, Mendeley Data v2, doi:10.17632/yc8yhg5xjd.2.
- UORED-VAFCLS: M. Sehri, P. Dumond, University of Ottawa Rolling-element Dataset, Mendeley Data v3, doi:10.17632/y2px5tg92h.3.
- ASD3DP: J. Kim, J. Sung, H. Bae, B. Kim, J. Lee, ASD3DP: Session- and Clip-Level Annotation Bundle for a Real-World Four-Channel 3D-Printer Anomalous Sound Dataset, Zenodo, doi:10.5281/zenodo.21313911. The recording platform is based on the open-source VORON 0.2 design; ASD3DP is not produced or endorsed by VORON Design.
- FSTF bearing sounds: A. Ait Ben Ahmed, Sound Datasets of a Rolling Element Bearing under Various Operating Conditions, Sidi Mohamed Ben Abdellah University, Mendeley Data v1, doi:10.17632/n9y9c7xrz3.1.
- Industrial air compressor sounds: K. B. T. Shaikh, N. P. Jawarkar, V. Ahmed, Sound database of Industrial Machine for Audio Anomaly Detection, Zenodo, doi:10.5281/zenodo.12685116.
Licences: https://creativecommons.org/licenses/by/4.0/. The weights are released under Apache 2.0, like the base model.