How to detect voice/music presence from a speaker plugged to ARDUINO ??

Hi there....
We would like to use arduino to identify audio signal containing voice/music vs an audio signal with single noise or mute audio...
To be more concret: Imagine you've a radio station tuned on your smartphone or home-radio. Then you plug an 3,5 jack to the radio and take the signal to the A0 of Arduino, and ground from the jack to ground of arduino.Then I would like to monitor the input signal for detect two situations:

^ The signal you are monitoring has audio (voice or music).
^ The signal you are monitoring has NO AUDIO. You can hear like DJ stops the music. You can hear something but no voice or music

Any suggests will be welcome.. I'm in a mess, and cannot thinking in a good solution in terms of performance and simplicity.

Thank you very much!!

PD: I'm thinking in a correct impedance adaptation and connect to A0, then monitorize that pin, but not sure howto...

Have a look : http://coolarduino.wordpress.com/2012/06/22/audio-input-to-arduino/

I think that's not more accurate for my app. I'm taking the signal via 3,5 jack output, but values are only between 2.2v and 2.8v. Do you think it's a correct value??

Thanks in advance for your opinion...

I'm taking the signal via 3,5 jack output, but values are only between 2.2v and 2.8v.

How do you measure it? Is it AC or DC?

To be more concret: Imagine you've a radio station tuned on your smartphone or home-radio. Then you plug an 3,5 jack to the radio and take the signal to the A0 of Arduino, and ground from the jack to ground of arduino.Then I would like to monitor the input signal for detect two situations:

That's not too hard to do. Just be aware that "silence" in usually not true silence, because there is usually some noise... Look for a "silent" (quiet) signal that's 1/10th or 1/100th of of the normal signal... Don't look for "zero".

but values are only between 2.2v and 2.8v. Do you think it's a correct value??

The signal from a line-level audio source, or from a headphone jack is usually about 1V RMS (that's AC) at full-volume. It's audio, so the voltage is always jumping around and it varies a LOT depending the circuit, the volume control setting, and the loudness of the signal/recording.

2 Volts RMS would not be that unusual, but 2.8V RMS might be higher than normal. From a speaker/amplifier output, you can easily get several volts depending on amplifier power. (For a sine wave, the positive & negative peak voltage is about 1.4 times the RMS value.)

WARNING - The Arduino can be damaged if you apply a negative voltage (or more than 5V), and that includes the negative-half of an AC waverform.

The circuits shown apply a DC bias of 2.5V (the pair of 100k resistors). So for example, if you apply an AC audio signal of 1V RMS (2.8V peak-to-peak) to the non-amplifiing circuit, the Arduino will see voltages between 1.1V ( 2.5 bias - 1.4 peak) and 3.9V (2.5 bias + 1.4 peak). With silence, you'll read only the bias of 2.5V.

Thank you very much DVDoug, but I'm thinking that will be not enought...

I've a SI4703 radio chip for FM radio. I'll detect when carrier is active on a radio station and when not. That's a goal done. But the other side would be at case that radio station is on air, but they are sending NO audio/music. Only silence. I'm trying to simulate this, but values readed by A0 are very similars <not the same, but similars>. I'm thinking at a rescaling process could be the solution desired, but not sure....

Thank you very much, really apreciate it!! :slight_smile: