Recommendation for best satellite audio hardware?

Hi, I’ve been experimenting with Rhasspy using the cheap respeaker 2 mic hat with rpi3 as a satellite. Unfortunately I haven’t had much success, it does work when I speak loud directly at it but becomes unreliable after I walk away 2-3 meters. It might have something to do with my room having a bit of echo, and I can hear that in the arecord output.

I haven’t used https://github.com/voice-engine/ec but not sure if this is relevant if I want to just issue voice commands for now.

I suspect this could be addressed by upgrading to some better hardware, but don’t know what’s the best route. I’ve been eyeing the Matrix Voice, anyone had success with this (either the ESP32 direct streaming to MQTT or with RPi)? As mentioned a priority is to have capture work for 4-5 meters distance.

Thanks for any advice on this!

Hey @bruwozniak,

my hardware setup is a Matrix Voice on a Raspberry Pi 3B+. It sometimes understands me from the other side of the room (~ 5-6 m). I did not have the time to play around with microphone settings yet, so it might be possible to get it working well for this distance.

I also have to tell you, that I did not boot up my Setup for a long time and I am not using the newest version of Rhasspy. I read something about problems with the Matrix Voice with 2.5.1 in this thread and they might not be solved yet. So you could keep an eye on it and give it a try, if it’s reportedly working with the newest version of Rhasspy.

Good Luck with your project!

I use https://github.com/voice-engine/ec to excellent effect but that is for a whole different problem of ‘barge in’.
If you are playing media then that media becomes echo and swamps any voice mic in and recognition doesn’t work.

Distance is purely sensitivity as no beamforming algs exist that work.

I use electret noise reduction analogues on a mic module with the Speexdsp AGC plugin.
Raspberry has the wrong version of of speexdsp so it doesn’t install but its quite easy to compile the right version.
You can use a soundcard with AGC but tend to turn those off so I can use the Speex AGC after EC in my asound.conf pcm chain.
The active mic on a soundcard is far more sensitive than a passive mic but its an aliexpress and soldering iron job but apart from that its creates really effective low cost mic input.

Speex also has a alsa-plugin but doesn’t seem to work so that is why I use https://github.com/voice-engine/ec for barge in.

A pi zero just doesn’t cut the mustard with load but the $25 pi3A+ is just 10$ more with 10x the ooomf,
Also with fingers crossed after the $25 compute4 module maybe in spring we might see a Pi4A but the pi3A+ will work.

Syba do a stereo mic in card SD-AUD20101 which I think is the best card I have tried, but many mono cards are extremely cheap and will do the job.


You can find them for approx $15

The syba usb I think is a great quality usb sound card has practically zero bloat and very simple controls but with stereo mic in its SNR THD is the best I have found.
It is $15 though as you can find these for x10 less and actually because we have no beamforming alg, stereo channels is a bit pointless.
The chipset is by something I have never heard of Generalplus Technology Inc and like me you will prob be surprised by the audio quality of the mic in on a $1.5 usb sound card.

All the soundcards I have tested using a passive mic and onboard bias are extremely insensitive to far field audio.
Because you have 5v & 3.3v on the pi a search on aliexpress or ebay can find you a whole array of mic preamps and microphones for a couple of $.

Planar array mics are totally pointless without beamforming but far field just needs a sensitive mic with good AGC which I think SpeexDSP AGC as an alsa-plugin is actually better than any hardware I have tested.

Many of the high price commercial aec mics try to do human ear broadcast streaming AEC that tries to cancel all echo to create a clean audio and not that great a job.
For recognition AEC attenuation is all that is needed as part of the MFCC is to drop low order energies so the attenuated echo is removed for recognition.

So yeah spend the time to recompiles alsa-plugins on raspberry as speexdsp AGC will be missing on raspbian as it uses an outdated speexdsp version.

Once you have done it once its quite simple and it works really well.
There are a lot of mic preamps some with onboard mics and like this one start at about $1

@rolyan_trauts Have you tested this?

USB external sound card

With something like this for input

And something like this for output


Do you think this setup can work (with of course software AEC)?

The cm108 board was a budget fave but they never seem to be the same had good and bad.
That cheapo white usb might be the same but I got one because it was so cheap and actually was surprised how good and also the cable usb is a bit easier.

Speakers prob due to weight found that buying local than aliexpress for once often seems cheaper.
Also I don’t really like the small speakers to listen to any media on.

If your in the EU Visatron do a great range of speakers and you might be surprised how good they sound for just over £5

But sort of changed my mind and now do something totally different as have my pi and amp mounted on the back of a pair of 2nd hand bookshelf speakers.
Not running Rhasspy currently but use https://github.com/badaix/snapcast as my wifi audio.

Again amps maybe I am a audio snob but even Alexa and Google have pretty good speakers and amps but still sound s***.
Any single unit that says its stereo is total BS unless held inches from your head and the difference with modest speakers amps in a stereo pair is immense.

I use these on 24vdc with a 5v buck for the Pi.
You really have to take ratings with a pinch of salt but the above 100watt when actually dialled down to give good audio quality with minimum THD give 30watt continuous with maybe 45-50 watt peak and a goo match with the above.
Sound pretty good on my Jap made old Kenwood bookshelf speakers.

I went off the max9814 module due to the AGC as the attack hold delay is too fast for voice and I want AGC after I run AEC via speexDSP AGC.
There a whole load of preamps and max9814 looks great at first you can change a smd resistor for AHD but boy that fiddly exercise really lost interest in them.

To be honest the directional noise reduction electrets are the same great idea and are a big improvement but desoldering them and soldering a replacement to the board supplied is an equal pain.

The analogue mems are pretty good and cheap ADMP404 slightly more sensitive but less bass pickup which doesn’t matter.

You can run them straight to a sound card but I had them on a preamp that had a compressor/limiter built in that also upped the gain.

When I was looking at my purchase as couldn’t remember the above rather than 2x boards these might be ok straight to sound card but have not tried them, but could be much simpler and cheaper.

The analogue mems might be ok to the mono soundcards as it might of been the syba which is a stereo line in from memory and just a tad low on gain when really far field, hence additional preamp.
I sort of lost interest with the voiceAI thing as really do think some projects are going a strange direction.

Found these amplified silicium mic. What do you think?

Yeah those look good, you have to actually get some and test as aliexpress and china are truly wonderful mostly but can sometimes provide some peculiar product :slight_smile:

Also like the above often there is not a whole lot of info to how the ics have been implemented or specs.

Same with the other one I spotted as until you test not much to go on.

The ones I did test that had great audio quality but direct to soundcard gain was just a tad low.

But again you can also add a preamp to the audio chain, the one you posted is a great price.
You could with the one you posted & a $1.50 usb soundcard, EC with speexdsp AGC and for barge in and far field you have a very cheap and effective mic in plus audio out.

Hi,

I’m a bit lost in making my new Rhasspy satellite and would like to require some good advice.

I have a problem with silence detection and I can’t figure out how to solve it. Currently, my satellite (RPi3A+ with the cheap USB sound card - the white one of this thread - and an electret mic) performs well in Wakeword detection and intent recognition but when I say a command, Rhasspy keeps listening until the timeout. If I turn the sensibility of the mic to 0 after saying the command, Rhasspy stops listening and everything works like a charm. If a put the mic off the enclosure and play with VAD I can get best results but this is not a good solution for me.

The records of my voice show a lot of noise that I want to get rid of. But, I don’t know the best way to do that. Should I use best hardware or software solution ?

I have read some topics in this forum but get lost. I would like to try Sox which seems to do a good job but I don’t manage to use it with Rhasspy. I’m also looking for a mic preamp that could get things better, maybe those ones ?

SSM2167 Microphone Preamplifier Board
or
TS472 Electret Microphone Very Low Noise Audio Preamplifier Board

I also tried the MAX4466 electret board but it was worse…

I look forward to good advice from you guys !

Have you tried adjusting the silence_seconds argument to a lower value? This mostly helps me with noisier microphones.
I wouldn’t use any type of Software Noise reduction be it sox or any other as they tend to change the character of the audio in a way that really messes with the stt systems like Kaldi as they are trained on audio which hasn’t been modified in this way. If adjusting the silence_seconds argument doesn’t work I would rather look at hardware changes than software noise reduction.

Johannes

1 Like

You were a big help !
I messed around with silence_sec and finally found a combination that did the trick. I also had to lower the level of the mic in alsamixer but now it works.
However, I think that I should add a preamp to improve it much better.

Thanks a lot !

I haven’t tried passive electrets for a while using the onboard bias if when you mean electret you mean just a cheap budget 3.5mm non active couple of $ mic.
Prob haven’t tested the cheap white one with a passive mic but it should work OK as my main problem was gain as found it pretty poor.

I think I have got just about every module currently avail and have the SSM2167 which is really interesting as it has a noise gate & compressor that I never tested.
Board seems to work well with built in values but you can cut tracks and add to pots so you get adjustable control over noise gate and compressor level, which I never did.

Grabbing the data sheet https://www.analog.com/media/en/technical-documentation/data-sheets/SSM2167.pdf and you can sort of work the board out quite easily when it in the hand.

The TS472 is a differential amp for longer distances with +/- signal and gnd and needs a differential input so cancel that one.

I will rummage through my gear and drag out the white usb soundcard and give it a test with a passive mic and post the wav here so you can hear results.
You should not have a lot of noise something somewhere is prob not right, but might never of tested a passive mic as stopped using because of poor gain.

I also found the Max4466 module board I got was awful but from memory I think the circuit was a noise threshold circuit not actually a standard mic.

Prob easiest is either MEMS Microphone https://www.aliexpress.com/item/32966959737.html
As did test with the SSM2167 and works great just never got round to adding the pots so its adjustable.
Had zero noise and loads of gain in that config.
But you can just connect the ADMP404 MEMS Microphone direct from its just the tip of the 3.5mm jack you need as with active you don’t the bias signal from the card as its not a Gnd.

The electrets have an advantage you can get directional noise reduction ones but many of the modules come pre-soldered an omni-directional.
The MAX9814 is often like that pre-soldered but also the capacitor they have chosen is the same as Adafruit and really to low as the attack & delay is really to fast for voice.
MAX9812 don’t have AGC and often don’t come with pre-soldered electret which is actually an advantage if you wish to use a directional noise reduction type electret.

I am in the UK and since Brexit a lot of the product previously purchased no longer delivers to the UK so depending where you are its prob better for you to search out the bargains yourself.

@fastjack found a great looking module low cost and prob high gain but again doesn’t deliver to the UK


Again its just the tip of the 3.5mm jack needed as the collar of the bias isn’t needed with a active module.

I never bothered with Sox just the Speex-AGC alsa-plugin but you have to compile and install the alsa-plugins again as raspberry has the wrong version of Speex-dsp.
Noise suppression algs can effect the spectrogram if the model was recorded without them so don’t use.

I will do some recordings with the ADMP404 MEMS direct and also ADMP404 MEMS & SSM2167 and post distance and what my Db meter records.
I need to get some Max9812 as still have x10 directional electrets on my desk doing nothing but the comparison might be interesting.

Suggest you install the Speex-AGC plugin and give it a go.

1 Like

Thanks for all this information. I ordered SSM2167 and ADMP404 MEMS on your advice to go for a try. Hope I’ll be able to improve things with that.

I didn’t know about directional noise direction electrets, I think this could suit my project. Actually, my big problem comes from the noise that is inside the enclosure. I want to capure sound only from the hole in the case in front of the mic (you can see my post on the Nabaztag to see what I mean). I am trying to find this kind of electret on alliexpress. Maybe those ones

I have already read some of your posts about Speex and thought to try it later. I am not yet comfortable with asound.conf and want to keep my ability to play 2 sources at the same time (the project is also a radio set).

Guess its the ‘animatronics’ side of thing the servo’s.
The noise reduction reduce but don’t cancel and also have directional pattern, but problem is the decibels at such close proximity is going to be loud and picked up.
Isolation and anti-vibration mounts will have far better effect.

I don’t have any 3d printing availability so quite like the round electrets as rubber grommets are an easy purchase.
The mems boards are quite small but prob not as easy to mount as something you can just drill, neoprene rubber is quite dense and also excellent for vibration as presume the servo jitter can resonate quite a bit.
Mems are actually less prone to vibration than the electrets so both have a trade off and prob what you gain for directionality and noise suppression without good isolation prob not much different maybe better.

The ones you linked are the ones I have and they are OK they are like telephone electrets that are supposed to help reduce handset noise but there are better ones with higher levels of noise suppression but struggled to get.
They are really cheap and prob a good compliment with a MAX9812 module.

I do intend to set up some of my gear in the next couple of days and will paste a raspberry image with just the speex agc and ec setup so you have a reference to play with.
My memory is cruel but what I do remember is just have a common gnd from one source or its very easy to create a gnd loop that creates noise.
Use the gnd from the pi or soundcard in entirety but not both.

You’re right, I have to do some isolation work to improve things. I’ll also start a second setup to be more comfortable with experiment and try your software solutions but need to disassemble an old project first…

Once preamp and mics received, I’ll be able to make a lot of tries and hope get things better.

Thanks for your good advice !

No Linux desktop at the moment which is weird for me so just follow Nabaztag as a Rhasspy satellite
If you want AGC & EC all in.