warming up your workspace

Can code estimate an engine's speed just by listening?

SonoDyno estimates engine speed from microphone recordings. Its reported results lead into a simple experiment showing why the loudest tone can point to the wrong rotational speed.

A graphite flywheel, microphone and glass prism turn acoustic rings into a lime rhythm.

The recording contains a machine's rhythm

An engine climbs through its speed range and the sound rises with it. Listening tells us something changed. Turning that impression into a time-aligned measurement is a different task. A recording contains repeated events, resonances, background noise and the influence of microphone placement. The loudest tone is not automatically the rotating shaft's speed.

SonoDyno, a preprint submitted on 4 November by Robin Doerfler and Beat Rossmy, estimates engine speed, cylinder count and normalized load intensity from microphone audio. It examines harmonics, frequency components at multiples of a basic repeating rate, and combines that acoustic evidence with constraints on how engine speed can change over time. This helps it choose between several plausible interpretations of the same sound.

On recordings of engines unfamiliar to the system, the authors report that 93 to 97% of the evaluated audio frames have speed estimates within 2% of the true speed. Cylinder-count accuracy is reported separately at 80%. Those results make the method worth examining, but they describe the paper's evaluation, not an accuracy guarantee for any phone recording. We have not independently reproduced the experiment.

Source: SonoDyno preprint, submitted 4 November 2026

A frequency needs a physical interpretation

Start with an original synthetic example rather than a running vehicle. Create a signal with one repeating cycle at fifty cycles per second, then add a stronger component at twice that frequency. A method that always selects the largest spectral peak will report one hundred cycles per second. It has correctly found a strong component and incorrectly identified it as the underlying cycle.

The arithmetic illustrates why that distinction matters. Fifty rotations per second corresponds to three thousand rotations per minute. Mistaking a doubled-frequency component for the rotation frequency would give six thousand. An actual engine introduces additional relationships between mechanical rotation and acoustic events, so the conversion requires a model of the sound source. Multiplying an arbitrary peak by sixty is not enough.

A spectrum also hides timing choices. A long analysis window can make nearby frequencies easier to separate while blending together changes that happen within the window. A short window follows changes more closely but offers less frequency separation. For the synthetic signal, introduce a gentle change in cycle rate and inspect how different windows represent it. The trade-off becomes something you can hear and see.

The strongest tone may be the wrong cycle
Original IWTLP teaching illustration. Synthetic example; not paper results. Open full-size illustration

The trajectory contains evidence that a single frame lacks

Imagine a sequence of estimates that suddenly doubles for one frame and immediately returns. A purely frame-by-frame method might accept all three values independently. A trajectory model asks whether that jump is plausible under its assumptions. It can use information across time to resolve ambiguity, while also risking suppression of a genuine rapid change if its constraints are too restrictive.

This is the useful connection in SonoDyno's design: acoustic scoring is combined with a model of how engine speed evolves. The paper separately discusses speed and load estimation, which should remain separate when describing its performance. A good speed estimate does not automatically establish an equally accurate load estimate, especially under different recording or engine conditions.

For our teaching signal, deliberately make one middle segment's second harmonic stronger. Compare the largest-peak sequence with a sequence that prefers continuity. Record both the improvement and the assumptions that caused it. Then introduce a real step change in the synthetic source and check whether the continuity preference delays the answer. One pleasing example should lead to the next counterexample.

Source: Authors' signal model, decoder and evaluation discussion

Treat unfamiliar recordings as a real test

A collection of frames is not necessarily a collection of independent examples. Neighboring windows from one recording can share the same room, microphone position and machine. Splitting them casually across development and evaluation can make familiarity look like generalization. Keep the recording identity in the dataset so that a test can hold out an entire source when that is the intended question.

The first exercise needs no running engine. Generate a signal whose timing you know, make its second harmonic louder, and compare the estimated cycle rate with the answer you built into it. You can then change the window length or add noise one step at a time. That small experiment makes the paper's harder task easier to appreciate: finding a machine's rhythm when the recording never supplied the answer.

Original source: Doerfler and Rossmy / Research full text