I'm trying to develop a prototype at the moment that includes a sensor to detect how fast someone is typing on a keyboard. Essentially this sensor is a microphone that will be able to detect keyboard taps and then count the number of taps in a certain time interval. So far I've just been using the instantaneous energy of the signal, and then counting the high energy impulses. The issue with this is that every sound is recorded, meaning that someone talking over the keyboard taps results in a false reading.

I need to try and design a filter that will only pass the keyboard taps and block any of the other sounds it might hear. I've read about matched filters, but am struggling on how to actually create one. I know I'll need to convolve some characteristic 'keyboard tap' signal with the microphone recording, which should give me a signal with impulses at the start of each of the taps.

I've been using matlab to try and analyse these signals, but now need to turn that into a matched filter, which has left me pretty stumped! Any help on how to design one and any pointers on convolving signals on Arduino would be really appreciated!!!



***I'm trying to design an intensity tracker for PC gamers btw

  • $\begingroup$ Where are you starting from? You know what an FIR is? $\endgroup$
    – Ben
    May 13 '19 at 20:47
  • $\begingroup$ why do you use sound? and not the keyboard interrupts to count the clicks ? $\endgroup$
    – Fat32
    May 14 '19 at 1:00
  • $\begingroup$ @Ben, we've done a basic signal processing module at uni, and we covered FIR filters (moving average in detail). I imagine there'll be a fair few gaps in my knowledge, the module covered a lot of topics, but didn't have much depth. $\endgroup$ May 14 '19 at 15:02
  • $\begingroup$ @Fat32, we felt that people might not want to install an application that would be monitoring keystrokes on their machine - mainly just for security issues. The project brief also means we can't do it entirely with code - we have to make a physical battery powered device... $\endgroup$ May 14 '19 at 15:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.