We had to refresh our database, because of the new microphone. Luckily we didnt have to split the samples in to seperate keystrokes, because the function to find keys is close to find them all. This made our work much easier (and mostly quicker).
We have used our final program, that combines all the other (find key,find peak, recognize which key), in playrec, and it worked!
Also we kept improving our report, using more statistics and figures,...
And lastly we researched cepstrum, so we might be able to implement it into our program and test it properly.
09-11-2012 om 17:37
geschreven door keyboard123
06-11-2012
Tuesday 6/11
We made an algorithm
that uses the quefrency domain for finding a correlation using the matlabcode rceps.
Working with rceps we found out that the correlation between the signal and the
averages from each letter is raised but it isnt able to find the right letter.
We combined
two algorithm: the peakfinder and PCC.
We worked
on the report.
06-11-2012 om 18:00
geschreven door keyboard123
23-10-2012
Tuesday 23/10
We worked on our paper. We created the structure of it and worked out some of its topics. We also rearranged our functions, and added some comments to make them more readable. Finally, we continued to work on the algorithm that seperates the keys from the sound.
23-10-2012 om 18:03
geschreven door keyboard123
19-10-2012
Friday 19/10
Today we've spent time on learning to work with playrec (find out which functions there are, how to record). We got a plot, but it is not what we expected. We like to get some feedback about that. We also found that Matlab itself has a function for recording sound. This worked pretty well, but you can't stream with this function. Another group worked further on the subject: detecting keypresses. The Last group isolated the frequency peaks and adapted the PCC to this change. The test then showed a succesrate between 60% and 100% for the different keys. They also wrote the beginning of our report.
Two of us spent more time on their algorithm to seperate single keys from a signal with multiple keys in it. For this, they each worked on a different approach of the problem. One algorithm is almost finished and is able to find all the keypresses in an entire signal with little noise. However when testing it with a signal that consists of only background noise, it had 10 false-positives. This algorithm seems to require a relatively clean sample.
The other one approached the problem by 'reducing' the signal. This means selectively deleting data, so the overall shape and size is still intact, but the almost random oscillations are removed. This makes the signal more manageable, and makes it easier to identify different peaks, thus making it easier to find a pattern to eventually detect a keysound.
19-10-2012 om 17:44
geschreven door keyboard123
16-10-2012
Tuesday 16/10
Today we refined our function for recognizing different keys. It is a function based on the Pearson Correlation Coefficient and it now works with 10 keys. We made 2 seperate databases. One for samples used in the tests and the other for calculating the average for making a template for each key.
We also explored other ways to analyse the keys (such as Cepstrum coefficient in the quefrency domain, we were also interested in the wavelets analysis(not yet fully explored). We looked up more information on internet and in the matlab help.
The other part of our team continued working on the problems they faced the last session (see previous blog). After rereading some articles, we found a way to make the peaks more clear using energyvectors(=deltavector). In the timedomain we seperated different windows of width 2ms, transformed these into the frequency-domain(using fft) and summated the entire vector. By summating these values ans substracting each vector with the last, we create a delta vector. To create a more clear signal, we substracted each element of the signal with the next one, this cancells out alot of random noise, and also makes the signal much clearer. This results in a much better precision for recognizing keysounds.
16-10-2012 om 18:07
geschreven door keyboard123
12-10-2012
Friday 12/10
We started the meeting seperating our team into 3 groups:
One group expanded the database, worked on better averages and organised our files. Playrec was discovered and installed.
The second group worked on matlab functions for comparing 3 different keys. 2 methods were being used: MSE(Mean Square Error) and PCC(Pearson Correlation Coefficient). The functions worked most of the time, recognizing the key(input). Errors were most likely due to noise on the used samples. We made this conclusion on the fact that whenever it returned the wrong key, the corresponding correlation was significantly lower.
The last group worked on creating a program that could detect keypresses. In other words, it could distinguish a key being pressed on a keyboard and a random noise. It also seperated the different keypresses from eachother, so each one could later be analysed. The function had a 92% accuracy when analysing a clear recording. However when analysing a file that had no keypresses, but only random noise, yelling and talking, it detected 25 keypresses. Since this recording was 15 seconds long, this means that out of 100 tests, 33 false positives were found.
The function clearly needs to be optimised.
12-10-2012 om 17:33
geschreven door keyboard123
09-10-2012
Tuesday 9/10
We took some more samples with decreased amount of noise. (The letters A,T,M and spacebar)
We refined our algorithm of hitpeak and made a new one regarding the average of one letter(A) (in the domain of time).
We analysed our average and thought of different ways of recognizing which letter is being pressed.
Next week we will divide ourselves into 2 groups, working out two solutions we found about this problem.
09-10-2012 om 18:00
geschreven door keyboard123
08-10-2012
Friday 5/10
Friday we have started with the procession of the signals.
We worked out a function for reading, plotting and transforming the signal to the frequency domain. We thought this would be the best way to quickly
extract the essentials we need from our signals. We also found an algoritm for finding the 'touchpeak' from the signal, the one we need.
This is usefull, because we now can start comparing multiple samples from each key. (we already have 20 samples of the key "a")
We could not yet find a way to directly save the important plots (the one from the frequency domain) to a file, so we could open them all together and compare them. This we will search for next tuesday.
We still are wondering how to compare the frequency-plots, wether we have the right part of the signal, and if these frequencies are correct...
08-10-2012 om 22:05
geschreven door keyboard123
02-10-2012
eindvergadering 02/10/2012
* we worked out an working schedule with all the steps in it * exploring matlab * we imported our first wav. files in matlab from individual letters. Afterwards we plotted them in the time domain and the frequency domain and tritried to analyse the figures. * search for fourier-analyse * appointments and rules for the next meeting - appointments: * read every paper for the next meeting * everyone should carry his laptop with him next meeting. also install matlab and some wav converter.