Click any square to open that key press.
One real example
The left card is what was typed. The right card is what the model wrote down from the sound of each press. Each press is one the model never heard in training.
Click a key on the right to see its sound picture.
How well
How to read: each bar is the share of key presses named correctly, tested on presses the model never heard. The red line is chance (2.8%, a guess among 36 keys). The gold tick is the figure published for the same method.
Average over runs. Click a bar for every run.
Knows when it knows
How to read: each bar is the accuracy of the presses the model was at least that sure about. The line beneath says how many presses that covers. For a pipeline, a confidence gate keeps the sure keys and sends the rest to a second pass or a person.
All four same-device tests together (396 presses the model never heard). Click a bar for the split by test.
What you can use it for
Record 25 presses of each key on a laptop, train in minutes on a CPU, and get a score for how recognisable that device is from a phone or a call.
Run the same test on different keyboards, mounts or microphones to see which gives the least away, and show the number.
Act only on the presses the model is 80%+ sure of (98% right), and use its top three guesses (right key in 97.5%) to narrow the rest.
These are possible uses. None has been tried with a client.
Where it fits
How to read: in each pair the dark bar is the model tested on the device it learned from; the red bar is the same model on a different device. Train on the device you want to measure.
Phone and Zoom recordings are one MacBook Pro 16 (44.1 kHz phone, 32 kHz Zoom). The laptop pair uses two public sets from different MacBook Pros, rooms and microphones, same 22 kHz format. One run each for the cross-device tests. Click a bar for the run.
How we tested it
Method follows Harrison, Toreini and Mehrnezhad, "A Practical Deep Learning-Based Acoustic Side Channel Attack on Keyboards" (arXiv 2308.01074). Recordings: Keystroke-Datasets and R-ASCA. Code and every run: GitHub.
Listen to a word
Press Listen to hear the real recording of each key press, then see what the model made of it. Every press is one the model never heard in training. Letters a to z and digits 0 to 9. Turn your sound on.
Click a key for its sound picture. Press Listen again for different presses.
Live, on your own microphone
This runs the real model in your browser on your own typing — nothing is sent anywhere. It only works on the device and microphone it was trained on (see "Where it fits"); on any other machine it will guess close to chance.
Nothing you type here is sent to a server: the mic audio, the model and the guess all stay in this browser tab.
Every run
Bar = average over runs. Red line = chance (2.8%). Gold tick = the figure published for the same method. Click a row for the runs.