Soluklan

BEHIND THE SCENES

How the thresholds are measured against real recordings

What counts as an "exhale" isn't decided by guesswork but from real audio samples sent by users. How that work runs.

5 min read

For the app to count a sound as an exhale, that sound has to be a certain amount above the room's silence. So where does that "certain amount" come from?

From a guess at first. From measurement afterwards.

Why it starts with a guess

When a new technique is added, we don't have a single recording of it. The threshold is taken over from similar techniques: for a technique breathed out through the mouth, the value of another mouth technique in the same family; for a nasal one, the nasal family's.

That guess is usually roughly right but not exact. The app's text doesn't hide it — where a value has no source, it says "initial values, to be measured when data arrives".

How the measurement is done

From users who turn on anonymous sharing and audio sample sharing, the audio of a session arrives now and then. With it comes that session's report and raw timing: at which seconds the target exhales were expected, at which moments the app detected an exhale, and what the noise floor was.

With those two together the measurement becomes possible. The audio file is run through the app's own detection code — the same code, the same arithmetic — but with the threshold changed. Then the question: at which threshold were how many target exhales caught, and how many false detections occurred?

The result is a table:

thresholdexhales caughtextra events
current32/6174
slightly lower35/6174
lower still35/6174

If catches rise and false detections don't, the threshold is lowered. If both rise, it is left alone.

A real example

The app has a lower bound on how far the noise floor can go: it stops the thresholds becoming over-sensitive in very quiet rooms.

In one tablet recording the real noise floor measured far below that bound. Because the bound assumed the floor was higher than it was, the exhale's margin melted away and nothing was heard — someone breathing out a hand's width from the tablet was being told to "bring the device closer".

It was scanned against twenty-one real recordings and the bound was lowered: the number of exhales caught went up, the number of false detections didn't change. That session alone went from zero out of four to two out of four.

A correction like this can't be found by guesswork. Without the recording we wouldn't even have known the problem existed.

This is the only job audio sample sharing does

The audio that is sent is listened to for this and nothing else: measuring the accuracy of breath detection. It isn't used for any other purpose, isn't given to third parties, and is deleted from your device once sent.

If it is off, audio is never recorded in any session. The app works completely without this permission — new techniques' thresholds just stay guesses for longer.

Still unmeasured

At the time of writing, some techniques' thresholds are still running on their initial values: not enough recordings have built up. As they do, the same scan is run again and the values are updated.

So the app's measurement accuracy grows along with the people using it.

← Behind the scenes