Poor voice recoginition with A/C adapter vs Battery powered

Hello users
I am a working with an Arduino Uno connected to an EasyVR3 voice recognition shield. The shield has a trigger word "robot". When the UNO is powered via Battery (9v battery or a USB power bank) the shield will recognize the trigger word effortlessly. By effortlessely I mean from near, far, even when I'm not saying the trigger word directly in the direction of the microphone, even when I'm speaking very softly, no problems what so ever to recognize the trigger word.

Now if I power the UNO via a USB charger like an iPhone charger plugged into the wall A/C outlet the performance goes way down. When powered by the charger, EasyVR3 will only recognize the trigger word if I say is very loudly and I have to be close to the microphone and have to speak directly in the direction of the microphone. Complete opposite of how EasyVR3 behaves when connected to a battery.

My thinking is that it has something to do with the noise introduced by a switching adapter (charger), I tried an LC filter but that did not help either.

As for my setup, its very simple, EasyVR3 connects to the UNO via the shield. The serial monitor gives an output if EasyVR3 recognizes the trigger command. Nothing else is connected to the UNO.

Please help I'm at my wits end.

Noise is a reasonably hypothesis but you'd need an oscilloscope to measure it.

You might be able to measure it with a multimeter set to AC, but most meters don't do well measuring low AC voltages or high frequencies.

Microphone preamps are high-gain so they tend to be susceptible to noise.

So, try a different power supply. You've already discovered that a battery or "power bank" works so you already know a different/better power supply works better.

If you can use a higher-voltage supply and power the EasyVR through the Arduino's 5V regulator (which you are probably doing with 9V battery power) the regulator will help to filter-out power supply noise.

"If you can use a higher-voltage supply and power the EasyVR through the Arduino's 5V regulator (which you are probably doing with 9V battery power) the regulator will help to filter-out power supply noise. "

I have tried this too without any effect.

That is probably because you are not doing it right. Try a Pi filter the last circuit on this page De-coupling

Thanks will try again with the filter.

I was using the widely available switch mode power supplies all this time. I know they introduce some noise, how much Im not sure since I dont have the equipment to test.

I dug up an old transformer based power supply, and that fixed my issue. Im guessing the noise on the transformer based power supply is very minimal due to the simpler design.

Glad you got it going but that suggests you would be able to fix it with sufficient decoupling. Especially designs using an inductor.

That will be my step know that I know the problem. SMPS are so widley available, cheap and lightweight so the Pros might outweigh the cons.

At microphone signal levels I’d recommend using a linear regulator always. This can be an extra one
that’s LDO specially for the sensitive parts of the circuit.

A microphone signal is around 1mV or thereabouts, and the signal details important to speech recognition
will be a small fraction of that, so 10’s to 100’s of µV may be the maximum noise you can tolerate
in the microphone preamp. SMPS put out around 100mV broad-band noise, typically.

Another question along the lines, to further reduce noise/ripple do I still need to further regulate the
output with something like an LM317 and 100µf caps ?

Yes its standard practice to regulate with a linear regulator at the point of load if noise is an issue.