I am building an experience in Unity that will recognize when a user blows into the microphone. I have a working implementation that recognizes sounds above a certain loudness threshold, but I want to take it a step further and identify only blow sounds.

My current implementation is:

I extract FFT information from a 1-second sound clip and identify the range of frequencies involved. The idea is that the blowing sound covers a larger number of frequencies than typical speech (based on its spectrogram), so I expected its frequency range to be close to 100%. This implementation picks up other sounds and speech that have a frequency range close to 100%, which I guess is to be expected, but that's what I have so far.

As you can see in the spectrogram, it's easy to see where the blowing sound occurs. While speech appears more jagged, the blowing sound seems to have a very consistent pattern. Spectogram of speech and blowing sound.

Research that I have done:

  • I tried to follow the steps in this academic research paper first. While I learned a lot about digital sound, I also realized it was relying on machine learning, and I want to avoid that.
  • I analyzed the spectrogram above and semi-successfully implemented sound recognition based on the frequency range for a 1-second sound clip. I used FFT information for this implementation.
  • I tried to treat a frequency histogram of my audio sample as an n-dimensional vector. I calculated the dot product of an audio sample and a pre-recorded blowing sound based on one of the answers from this post. The results were inconsistent, so I abandoned the idea.
  • I found a question that seemed the most similar for my situation. The comments helped me solidify my belief that machine learning would be an overkill for this situation. The answers seem to suggest classification algorithms as a solution, and, if I'm not mistaken, that's machine learning. (Correct me if I'm wrong though)

My question is:

Which other audio features can I extract from the audio clip/FFT to identify a blowing sound more precisely?

I can visually see the blowing sound in the spectrogram, which leads me to believe it's possible to identify it with an algorithm without using machine learning.

I am relatively new to sound processing, so any information is highly appreciated.

  • $\begingroup$ I recommend synchrosqueezing for inspection and scattering for classification. $\endgroup$ – OverLordGoldDragon Apr 13 at 17:21
  • $\begingroup$ Thank you @OverLordGoldDragon! Just to clarify, is scattering a machine learning technique? $\endgroup$ – Anya Apr 13 at 18:26
  • $\begingroup$ It's inspired by convolutions and greatly improves performance in absence of big data; main difference is filters are pre-designed and fixed, but we can stack learned layers (e.g. conv) on top. Helpful lecture. $\endgroup$ – OverLordGoldDragon Apr 13 at 18:40
  • 1
    $\begingroup$ Ah, got it. Thank you so much, I will check out the lecture. $\endgroup$ – Anya Apr 13 at 18:45
  • $\begingroup$ I misread the question as "with"; in the without case you can use extracted scattering features with pattern matching algorithms (if you know the pattern) - though minimally, a one-layer SVM would be simpler (and likely more effective). Regardless I'd wait for others' responses, many options here. $\endgroup$ – OverLordGoldDragon Apr 13 at 22:31

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.