How we measure, so you can check us
Everything the app claims was measured on recordings that people, not this app, labelled. This page is the audit trail: what was measured, against what, and what the words do and do not mean. Back to the app.
The rules the numbers live under
Refusing beats guessing. When the app is not confident, it says so and the clip costs you nothing. A call earns its phrase only by clearing a high bar for being right when it speaks: a bar set before the test is run, the same for every call, and one that does not bend for a launch, a feature, or a good week.
Accuracy is never for sale. Free and paid analyse identically. Paying buys time and convenience, never a better ear.
Numbers only move when re-measured. Nothing on this page updates because marketing wanted it to.
What the app claims today, and the test behind each claim
| claim | how it does | against |
|---|---|---|
| "That was a horse" | Right almost every time it speaks | A held-out set of ordinary recordings (the kind the app actually meets, not a tidy demo reel), drawn at random and labelled by people listening. None of it was used to tune anything. |
| Hears a horse sound at all | Most real sounds; a quiet one can slip by | The same held-out set. A clip the first pass rules out still gets a second look before the app gives up, and only a confident answer speaks. |
| "That was a high call" | Right almost every time it speaks, and catches most of them |
Clips judged by ear. ⚠ The app said "a whinny" here until September 2026 and was right only about half the time on the very same sounds: most of what it got wrong were screams and squeals, and every one of those IS a high call. Nothing about the listening changed: no threshold moved and no sound is named that was not named before. Only the word did, because the narrower word was the part that was wrong. |
| "That was a snort" | At best usually right when it names one (a ceiling, not a score), and it leaves between a third and two in five of them unnamed, depending which of its two recognisers speaks | Clips the app itself put forward, then judged by ear, including recordings made by other people with other microphones that it had never met. That last set is small, and the cut it is scored at was chosen on the same clips, so the figure it gives is a ceiling rather than an estimate: the honest floor beneath it is a good deal lower, and this class is not certified. It is a check on the times it speaks, a different question from the pair above, and the two are never averaged. |
| "That was a squeal" | Usually right when it names one, and it names about two squeals in three | Clips labelled by ear, scored so that no recording was ever judged by a recogniser that had learned from the same source. The app says the word and nothing about what it means: no study we trust has measured what a squeal is for, so the sentence stays unwritten while the name ships. |
| "That was a nicker" | Right almost every time it names one, and it stays quiet for most nickers | Clips labelled by ear, scored so that no recording was ever judged by a recogniser that had learned from the same source. ⚠ Earlier figures in this row were withdrawn and are not what stands here: they came from labels taken off video titles, and when people listened, most of those nickers were not nickers. The number behind this row was measured a different way, on sounds people confirmed, and the app began saying the word in September 2026. |
Each word above sits inside the measured range, never above it; the exact figures stay in our test frame so nobody can tune to them. Missing sounds is normal: leave it listening and repeated calls make the odds add up.
What the numbers mean
Precision means: when the app speaks, how often is it right. Recall means: of the real sounds, how many did it catch. Every claim above is measured against recordings that people, not this app, labelled, and the app is never scored on a recording it learned from. Both have to clear the bar before a phrase ships, because a wrong word in your horse's mouth is worse than none.
It gets better as the community shares sounds. Every shared clip is reviewed by a person before it teaches anything, and it is that person's verdict, never the app's own opinion, that counts.
What we will not claim
The app never says what a horse feels or wants; it names calls and offers each call's documented function as a phrase, the way a phrasebook renders one language in another. Trends are counts and arithmetic with the observation time attached, never a diagnosis. And nothing here is a substitute for a veterinarian.
What this app is built on
The four models that find a horse, its ears, where its ear bases, eyes and nose are, and whether an eye is in view at all, we trained ourselves. The rest is other people's work, used under these licences:
- YAMNet, the sound classifier that first names a call (Apache 2.0).
- BEATs, the audio tower behind the more careful naming (MIT).
- RTMPose-m and AP-10K, for placing spectacles on the eye (Apache 2.0 and CC BY 4.0, credited in full above).
- YOLOX-Nano, which lets the app refuse a costume on a person (Apache 2.0, credited in full below).
- HORSE [DRAFT HORSE] by BlueMesh and the AwA-Pose photographs, which our landmark model learned from (CC BY 4.0 and CC BY 2.0, credited in full below).
- ONNX Runtime Web, which runs all of them on your phone (MIT).
- TensorFlow.js (Apache 2.0).
- Capacitor, which makes the web app a phone app (MIT).
- PostHog, for the counts described in the privacy policy (Apache 2.0 and MIT).
That list names the parts worth recognising. The full licences are the complete one: every component in this build, with the licence text it was released under, generated from the build itself so nothing can ship unnamed.
The models the app runs
Finding the horse and its ears is done by two small models we trained ourselves on the corpus described above. Placing spectacles on the eye uses someone else's work: RTMPose-m, released by OpenMMLab under Apache 2.0, trained on AP-10K (Yu, Xu, Zhang, Zhao, Guan and Tao, 2021), whose annotations are released under CC BY 4.0. We read three of its seventeen points and nothing else.
Where a hat, a horn or a pair of glasses sits is placed by a third small model of our own, which marks the two ear bases, the eyes and the nose. It learned from two sources we are glad to credit: pictures we rendered of HORSE [DRAFT HORSE] by BlueMesh, a 3D model released under CC BY 4.0 (we re-posed and re-lit it and added markers), and 142 photographs from the Animals with Attributes 2 archive, each released on Flickr by its photographer under CC BY 2.0, with keypoints from AwA-Pose (Prianka Banik, MIT). Every photographer is named on the licences page. It marks where those points are in the picture and nothing else.
The 3D glasses, sun hat, bow and bonnet that some looks can wear were modelled by fitting them to the head of the same horse, so their shape is derived from HORSE [DRAFT HORSE] by BlueMesh (CC BY 4.0). The horse itself is not in the app.
Other people's recordings and pictures
Some of the calls our recognisers learned from, and were measured on, are recordings published with Lefèvre, Sypherd & Mandel-Briefer, “Machine Learning Algorithms Can Predict Emotional Valence Across Ungulate Vocalizations”, iScience 2025;28(2):111834, dataset doi:10.5281/zenodo.14636641, released under CC BY 4.0.
The landmark model was tested, and never trained, on frames from the videos published with two papers: Wathan J, Burrows AM, Waller BM, McComb K (2015), “EquiFACS: The Equine Facial Action Coding System”, PLoS ONE 10(7): e0131738, and Rashid M, Silventoinen A, Gleerup KB, Andersen PH (2020), “Equine Facial Action Coding System for determination of pain-related facial responses in videos of horses”, PLoS ONE 15(11): e0231608. Both are released under CC BY 4.0.
None of these recordings or frames is in the app. They are credited because our own models were built and checked with them, and the licences page lists them too.
How the app avoids putting a costume on a person
A costume is drawn on the box the horse-finder returns, and that box is sometimes on somebody else: a handler, a crowd, a family in a carriage. Before a costume is painted, the app asks one more question about that rectangle on your phone: is a person the main thing in it, rather than the animal? If the answer is yes, no costume is drawn.
It is a comparison and not a search for people: a rider on the horse is the case the app is for, so a person inside the animal's box is not a reason to refuse. The model is YOLOX-Nano, released by Megvii BaseDetection under Apache 2.0 and trained on COCO, whose annotations are released under CC BY 4.0.
It runs on your phone and it writes nothing down. No face, no identity, no measurement, no count, and nothing sent anywhere. The only thing it can produce is a refusal, and that refusal is used and forgotten in the same instant.
The clips the app ships with
The sample you can read without recording anything is eight seconds of Merlod Myn. Cymreig Caseg Wag 4, filmed at the Royal Welsh Show in 2017 by S4C, who released it under CC BY 4.0 on Wikimedia Commons. It is trimmed and re-encoded; nothing else about it is changed, and the reading the app shows you is a reading of that clip's own sound.
The whinny in the phrasebook, and the waveform drawn on the reference screens, are Freesound #149024, released into the public domain.