{"id":84,"date":"2019-03-31T02:33:44","date_gmt":"2019-03-31T02:33:44","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/?p=84"},"modified":"2019-03-31T02:56:26","modified_gmt":"2019-03-31T02:56:26","slug":"week-6-update","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/2019\/03\/31\/week-6-update\/","title":{"rendered":"Week 6 update"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Kevin:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Accomplishment #1 description &amp; result<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">This week I mainly focused on noise reduction. I was able to start using a noise reduction method similar to the algorithm used by Audacity. The technique is called spectral noise gating. Essentially, a clip of pure noise is given to the algorithm to analyze. The FFT is taken in windows and then the algorithm tries to reduce similar patterns in the main audio clip.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">This method of filtering is great for removing stationary noise. Stationary noise are sounds that remain relatively constant, like hums, hisses, or even more complicated sounds that remain throughout the clip. However, it is not able to cope well with non-stationary noises such as voices, or sporadic chirps. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We collected a small sample of noisy data to test on. There are several voices in the background as well as some generic coffee shop sounds. For the reasons described above, the noise was suppressed, especially background hums and some general chatter, but the voices were mostly intact. As a result we has quite a few false positives for keystroke detection.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">For the test, I first ran our keystroke detection algorithm with high sensitivity on the clip with a simple bandpass filter. I then extracted the noise by taking randomly about \u2153 of the samples between detected keystrokes. I then used the spectral noise gating algorithm and applied this to the bandpass filtered audio clip. I re-ran the keystroke detection with lower sensitivity to reduce false-positives.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The result was that the noise was suppressed but of course not completely gone, especially the voices. The main goal is to see if this filtering can help us more accurately separate keystrokes. I sent the filtered data to James to see what kind of difference he can see in the features collected.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We would like to be able to remove more noise, however, the voices and other non-stationary sources of noise are very complicated to remove. Some people have had great success in doing so with deep learning model however those are trained to pick out everything except human voice. Training our own model would not be feasible at the moment. <\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Upcoming work #1 description &amp; expectation<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">This week I will continue to refine and study the effects of noise filtering. I will need to collect more data to help further tune the filtering process.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I will also be research removing non-stationary noise with the use of multiple microphones. I may be able to have some modest success with the added data of a second microphone to determine what is noise and what is a keystroke.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Lastly, I will begin planning our final revision of the PCB. We are aiming for a smaller package size without as many pinouts.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-89\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-content\/uploads\/sites\/17\/2019\/03\/untitled.jpg\" alt=\"\" width=\"833\" height=\"418\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-content\/uploads\/sites\/17\/2019\/03\/untitled.jpg 1920w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-content\/uploads\/sites\/17\/2019\/03\/untitled-300x150.jpg 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-content\/uploads\/sites\/17\/2019\/03\/untitled-768x385.jpg 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-content\/uploads\/sites\/17\/2019\/03\/untitled-1024x514.jpg 1024w\" sizes=\"(max-width: 833px) 100vw, 833px\" \/><\/p>\n<p><span style=\"font-weight: 400\">James:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Accomplishment #1 description &amp; result<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">In order to collect TDoA data, I made changes to the server to allow connections from multiple sensor boards. Upon connecting, each board is assigned a unique ID, and the timestamp of the connection is recorded. This will allow us to align the beginning of the recorded data in order to perform TDoA analysis.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Along with Ronit, we worked on collecting noisy data in order to help improve our noise reduction scheme.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Upcoming work #1 description &amp; expectation<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Using the three working boards we currently have, I will begin collecting keystroke recordings with TDoA data next week. I will then be able to perform TDoA analysis using the code written earlier in the semester using gunshot data. I will attempt to recluster the data with the TDoA as an additional feature. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The board is responsible for ending the connection and allowing the server to write the data out to a .wav file. This is currently handled by resetting the board manually. In order to allow the board to automatically power down and sleep in the absence of noise, we are currently planning on utilizing the Vesper wakeup microphone to kick a watchdog timer. Ronit has already begun working on this portion of the system.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Ronit:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Accomplishment #1 description &amp; result<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We narrowed down our trouble with our machine learning to having non-representative data. Our previous data was collected improperly.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Additionally, we were not performing enough noise reduction.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I worked with James to collect some noisy data for Kevin to test the new noise reduction technique<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">In parallel, I got the ESP32 to work with the wakeup microphone. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Now when there is no background noise, the wakeup microphone is switched on and the processor goes into deep sleep. The oscillator, execution units and sram are clock gated and consume no energy. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">When there is noise in the environment detected above a preset threshold, an interrupt is generated that brings the processor out of deep sleep to resume its normal actions. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We will order a power analyser next week to measure more accurately how much power is saved, but preliminary experiments using the oscilloscope show that the power savings is around 20%.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We now need to modify the network stack to recognize when the processor is in deep sleep mode.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Upcoming work #1 description &amp; expectation<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">There needs to be a last bit of tweaking to the network stack to support tdoa data and the sleep modes on both the processors.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Next week will involve a small portion of work on the network stack, and then the remaining work to the machine learning<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Team<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Accomplishments<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">After testing we verified the new PCB is working with the modifications discussed last week. We are able to obtain data from the main microphone over WiFi while powered by the battery. We also confirmed the Vesper mic is working. Everything is getting the proper voltage. We believe the battery charging system is working, but further testing may be required.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">More progress was made in the signal processing side. We are tuning the keystroke detector and exploring noise reduction options.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The server is being updating to handle TDoA data. <\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Upcoming<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We will be collecting more data to aid in refinement and further development. We need data for TDoA, noise reduction, clustering, and machine learning.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We have our demo on Wednesday and will be showing the data collection and networking portion of our project. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We will be refining our feature extraction, clustering, and machine learning this week to prepare for integrating everything together.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Changes to schedule<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We are behind on integration since all of the parts are not fully complete yet. Most of this week will be focused on getting everything ready for integration.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Kevin: Accomplishment #1 description &amp; result This week I mainly focused on noise reduction. I was able to start using a noise reduction method similar to the algorithm used by Audacity. The technique is called spectral noise gating. Essentially, a clip of pure noise is given to the algorithm to analyze. The FFT is &hellip; <a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/2019\/03\/31\/week-6-update\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Week 6 update<\/span><\/a><\/p>\n","protected":false},"author":45,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-json\/wp\/v2\/posts\/84"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-json\/wp\/v2\/users\/45"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-json\/wp\/v2\/comments?post=84"}],"version-history":[{"count":3,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-json\/wp\/v2\/posts\/84\/revisions"}],"predecessor-version":[{"id":90,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-json\/wp\/v2\/posts\/84\/revisions\/90"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-json\/wp\/v2\/media?parent=84"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-json\/wp\/v2\/categories?post=84"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teama2\/wp-json\/wp\/v2\/tags?post=84"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}