1
\$\begingroup\$

I'd like to create kind of a DIY Google Home using a Raspberry Pi and voice recognition software.

I'm looking for a microphone sensor that will pick up my voice from across the room, but nearly all of the microphones I've seen look something like this:
Voice microphone
and are clearly designed to be close to someone's mouth/the sound source.
(Please correct me if I'm wrong.)

I've found a cheap condenser microphone that looks like this:
condenser microphone
and would it work? Or am I looking at the wrong thing entirely?

\$\endgroup\$
5
  • \$\begingroup\$ It's got more to do with gain and noise in the microphone amplifier (the bit between mic and R-Pi) than what the mic looks like. \$\endgroup\$ – user_1818839 Apr 15 '17 at 20:10
  • \$\begingroup\$ Are there any other sound sources in the room? \$\endgroup\$ – Ale..chenski Apr 15 '17 at 20:37
  • 1
    \$\begingroup\$ You need to become familiar with main concepts of sound propagation, near field vs. far field, reflections, etc., before embarking on voice recognition from a far distance. \$\endgroup\$ – Ale..chenski Apr 15 '17 at 20:42
  • \$\begingroup\$ You don't need a really special microphone. A normal microphone will pick up pretty much everything in a typical room. The problem lies in separating the voice from the other sounds. You can use multiple microphones and some signal processing to pickout the voices, but it won't be trivial. \$\endgroup\$ – JRE Apr 15 '17 at 20:43
  • \$\begingroup\$ I think SNR will have a lot to do with what choices you have to make. But I'd start such a project by first considering the idea of buying at least two microphones. Perhaps even four. (I'm thinking here of applying beam-forming or spatial filtering concepts to the processing.) I'm almost certain that you will have to consider including more than one microphone in this situation. \$\endgroup\$ – jonk Apr 15 '17 at 21:04
0
\$\begingroup\$

You do NOT need high gain on your microphone.

What you need is a high signal (voice) to noise ratio.

You will not get a a high signal to noise ratio just by amplifying the microphone signal. That will amplify the ambient noise along with the voice - the signal to noise ratio will stay the same (or degrade a bit since the amplifier will add some noise of its own.)


What you need is a little gain - just enough that a loud speaking voice used close to the microphone will get you within about half of full scale. Gets you maximum range without distortion.

Next you will need several microphones, and an analog to digital converter with enough inputs for all the microphones, 16 bit sampling, and you will probably need at least a sampling rate of 22kHz.

Once you have the audio in a form that it can be processed, you will need software to pick out the voice(s).

Picking the voices out of the background noise is not trivial. The solution involves beam forming ("aiming" the microphones to pick out particular sources withou physically moving the microphones) and noise reduction.

After you have the voice picked out and isolated, you can use an automatic gain stage to bring the voice up to a particular level to make things easier for the speech recognition section.

Finally, you get to decide how your gadget should react to specific words or phrases.


The Jasper project has already solved most of these problems for you if you are using the Raspberry Pi.

\$\endgroup\$
1
\$\begingroup\$

Normal microphones are not very sensitive .Speak in to them while monitoring the output volts on a scope and you will see what I mean .The Carbon microphone which was in my 1970s junkbox did have a high output level but lots of distortion .I have not tried a parabolic microphone .What would always work was a loudspeaker backwards .I tried a horn type speaker backwards and that worked even better . Most speakers are low impedence like say 4 or 8 ohms .What I did in 1975 was to use an output transformer backwards to provide a better match to the preamp .Mains hum pickup was an issue and output transformers were becoming harder to find so I used a simple common base transistor stage biased at about 1 mA and then fed it into a more conventional AF amp .I could hear stuff 30 feet away with junkbox Ge 1960s transisters .Things were easy in the mid 1970s .Modern minature microphones do not put out much voltage .I have used speakers from 4 inch dia to 8 inch dia with good results .I have not used this approach with any crossover speaker systems because they were not in my junk box in 1972 .I have tried phillips 800 ohm Hi Z speakers directly and they work well but would be hard to find now .

\$\endgroup\$
1
\$\begingroup\$

As a kid, building high-gain bipolar ac-coupled amplifiers, the only signal source I had was a 2" transistor radio speaker. Scratch on the cone, for strong signals. Speak into the cone, for normal signals.

Eventually, I learned proper VDD filtering. The first 2 or 3 bipolar stages had their own private VDD (local battery equivalent) with 5,000uF and 100 ohms. The final 2 or 3 stages ran directly off the 9volt "B" size battery. Output probably was to magnetic earphones, to prevent acoustic feedback.

That amplifier, with speaker pickup, easily monitored voices 10 or 20 feet away.

You should be able to do similar, today, with 2 or 3 stages of OpAmps. Just arrange for private power to the first stage, to avoid VDD-based feedback oscillation.

Here is what Signal Chain Explorer suggests: 3 stage of opamp gain, 40dB/stage using Default models (UGBW = 1MHz); input is 1 microVoltPP; I had to edit the first opamp, reducing its noise density from 4nanoVolts (1Kohm) to 0.5nanoVolts (16 ohms); I also edited the gain-set resistors of that first stage: 5 ohms and 495 ohms. Result? 18dB SNR for 1uVpp input. enter image description here

Nah---that is too easy. Lets use 2 stages of bipolar. We achieve 1,000 * 1,000 gain.

schematic

simulate this circuit – Schematic created using CircuitLab

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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