How can I improve the results of my clustering I am working on a project with the idea to cluster the sound waves of key strokes on a computer. So far what I have done was recorded about 50 keystrokes per key (only have done 1 - 10 so far), found their peaks and isolated the waveforms, then I created a chroma vector as the Feature Vector and run k-means on the resulting feature matrix.

After some very minor filtering I was able to get an accuracy of about 90% (taking accuracy as the mode cluster label for a group of keys as the true value, how many are the true value / total values). However, when I try to essentially classify new data it is far from accurate. 

My initial thoughts as to why this probably wont work:


The difference in any audio feature between keystrokes is minimal
Many many more samples are required
Clustering is not the best approach here (I don't have any formal reasoning here but I would guess a supervised alg would work better).
The pre-processing I'm doing is not right. The only things I have done were normalize the audio files and use a smoothing function on the waveforms (no frequency analysis here!). 


Any suggestions are appreciated.
Always use a supervised algorithm when you have labeled data for your problem. Why would you ignore the labels, your most valuable bit of information?

To improve quality, you most likely need to improve your features.