A microphone hands over one number, tens of thousands of times a second. Nothing in that stream is marked as a word, or a letter, or even a gap — the boundaries you hear are ones your brain puts there. This page takes a signal apart the way a recogniser does: sample it, chop it into overlapping frames, turn each frame into a spectrum, score every frame against a set of known sounds, then collapse the result into words a language model is willing to believe.
The built-in sentences are synthesised here in the browser, so the page knows exactly what was said and can mark its own homework. Recording uses your microphone and never leaves your device — nothing is uploaded, because there is no server to upload it to.
A microphone measures air pressure and reports it as a number, over and over. Sample rate is how often. Drag it down and watch the wave lose its shape — below about twice the highest frequency present, the samples can no longer tell one frequency from another, and a high tone comes back as a lower one that was never there. That threshold has a name: the Nyquist limit.
Speech changes far too fast to analyse whole, and far too slowly to analyse one sample at a time. So it is cut into short overlapping frames — around 25 ms, stepped every 10 ms — each of which is short enough that the mouth barely moves during it. Each frame is tapered at both ends first, because a hard cut is itself a click, and a click smears energy across every frequency.
Each frame goes through a Fourier transform, which reports how much of every frequency it contains. Stack those columns and you get a spectrogram — the picture speech recognition actually works on. The dark bands sliding around are formants, the resonances of the mouth, and they are what distinguishes one vowel from another.
Now the guessing starts. Every frame is scored against a set of known sounds, and comes out as a probability for each. The strip below is that: one column per frame, brightness for how confident, with the winning sound written underneath. Notice that a single sound occupies many frames in a row, and that the model is least sure exactly where one sound turns into the next.
Repeated frames collapse to one sound each, which leaves a string of phonemes with no spaces in it. Splitting that into words is a search: every place a word from the lexicon could start, scored by how well it matches and by how likely that word is to follow the last one. The language model is doing at least as much work here as the audio is.
Real: the sampling, the aliasing when you drag the rate down, the Hann windowing, the FFT, the mel filterbank and the spectrogram are all exactly what a production system does to its audio — the same arithmetic, the same frame sizes. The decoding really does combine an acoustic score with a language model score, which is how recognisers have worked since long before neural networks.
Not real: the acoustic model. A modern recogniser uses a neural network trained on tens of thousands of hours of recorded speech from thousands of speakers. This page synthesises one steady example of each sound with the same formant model that made the audio, and matches every frame against those, which is roughly the state of the art in about 1975. It will do creditably on the synthesised sentences, because they were made with the same numbers it is matching against. Speak into it and it will do much worse — and the size of that gap is precisely the thing forty years of research bought.