I'm looking to implement an always-on audio trigger for a consumer product with strict size, cost and power requirements, sort of like the "Ok Google" trigger on the Google Home and android phones.

The big difference is that the trigger is set by the user through prior audio recording. I'm trying to figure out the least power-hungry way of generating an interrupt on detection of the trigger, without introducing additional costly hardware.

Is there a standard way of doing realtime audio matching like this?


1 Answer 1


You can use 1uA IDD opamps to implement bandpass and lowpass/highpass filters. But you'll need several, perhaps 10. And even with MegOhm resistors, you are running 10uA or 20uA.

Or you can digitize, and constantly perform correlations or, more selectively, FFTs on every 1/20 second time slice. However, you first need to have a Wakeup Signal. Thus lowpower opamps/bandpass filters.

To detect human voices, use 1KHz filters, or 100uSec timeconstants. Given 10pF node capacitances in bipolar transistors (ignoring Miller Effect), we can have 10MegaOhm resistors and thus 100nanoAmp gain stages, executed in bipolar.

The maximum gain of a bipolar stage (resistive load) is Vdd/0.026, hence the most you can get from one stage with 3v battery is 3/0.026 or about 120X. A couple stages gives over 80dB gain, with bandwidth of 1KHz. Then you need a level detector (comparator). And you need biasing for all this.

Sounds like 500nanoAmperes is possible, bandwidth of 1KHz.

All this does is wakeup the MCU, upon occurrence of strong voice fundamental energy.


View the human voice as selective filters that control output tones from the energy of impulse generators (the vocal cords). As the throat/mouth/nose tune up, the output tones will have a rising amplitude with perhaps a changing frequency (or 2, or 3). But....fundamentally, the vocal energy starts up from ZERO amplitude and exhibits a quickly rising amplitude. That.....the ramp up of amplitude....is our key. Of course, a clamp of thunder, or a car passing may also exhibit this rising amplitude; the digital correlation examines that.

We thus need to reliably consume very low power, and provide a low-pass filter for male/female fundamental voice tones (up to 1Khz), detecting the amplitude on a cycle-by-cycle basis (a half-wave rectifier with quick rampup ability) and when 10milliSeconds (only 1 cycle of a male voice at 100Hz) or perhaps 50 milliSeconds or rising amplitudes are detected, then the Interrupt be generated.

Here is our block diagram:


simulate this circuit – Schematic created using CircuitLab

Here is link to a book on current-mode signal processing: enter image description here

  • \$\begingroup\$ Not a bad idea, bandpass filters use very low power, and would be a great way of reducing false positive wakeups on the MCU where the real check would happen, if I'm understanding you correctly. Assuming the MCU takes on the order of a few microseconds to power up and the capacitance on the filters triggering the wakeup adds even more delay, how do I make sure I don't miss the sound? \$\endgroup\$ Commented Mar 29, 2017 at 6:48
  • \$\begingroup\$ Define how often you want to spend power, awakening the ADC and DMA? That power demand occurs on any "sound", voice or not. \$\endgroup\$ Commented Mar 30, 2017 at 2:31
  • \$\begingroup\$ Considering life is a constant barrage of sounds, 99.99% of which are not the trigger, that's a huge amount of power to burn on sounds which aren't the intended trigger. Ideally, there would be a screening pipeline before the ADC and DMA, even main clock are ever started. The power constraints here are rather extreme \$\endgroup\$ Commented Mar 30, 2017 at 2:49
  • \$\begingroup\$ Consider the "OK google" energy: the OOOOOO is the wakeup? Or OOOOOO kAAAAAAAAA, about an octave between the 2 tones? Research has been done, on current-mode logarithmic signal processing, for LOW_RESOLUTION. I added a link to some work. \$\endgroup\$ Commented Mar 30, 2017 at 12:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.