The classification can be done using the Visualizer class in Android. Using the getFft() function of the Visualizer class, we can get the FFT of the incoming signal. Since we know beforehand that the signals we are trying to classify have peaks in different bands of frequencies, a simplistic way of the classification would be to classify them just based on the peaks of the frequency.
The porting of the audio feature extraction library is almost complete. We will begin the testing of the library once its completed.
Apart from this. we are adding multiple features to our for the hearing impaired. One of the features we have added is adding an activity for speech to text and text to speech to assist the hearing impaired to be able to communicate with people.
We are still working on the porting of the LibXtract library. As an alternative, we are also working on feature extraction without using NDK as we are aware that it would be quite a challenge to import such a large library to Android. The code can be found here.
We have finished testing the LibXtract library on the PC and have started working on porting the required to NDK.
We are trying to port the LibXtract libraries after finally being able to compile the library on a PC. We plan to check the compatibility of the LibXtract libraries with Android platform. These libraries were written using glibc while Android uses Bionic C. We plan to spend sometime on trying to get the libraries to work with Android NDK.
Simultaneously, we are working on an alternate solution involving classifying the signals just based on their frequencies by taking an FFT of an incoming signal.
We know the rough frequency ranges of the sounds we have chosen. They are as follows :
– Police Sirens (750Hz – 1.2kHz)
– Smoke Detector Alarm (3.6kHz)
– Car Honk (2.1kHz – 2.7kHz)
Even though there might be other frequency components, these frequency components dominate in these sounds. So for starters, we could develop a crude clustering algorithm based on frequency. This would give us 3 clusters of frequencies at the above mentioned values and then we could decide on which cluster to choose using a feature selection algorithm like kNN (k Nearest Neighbour).