Hacker News new | past | comments | ask | show | jobs | submit login
Mute Your Microphone While Typing with Hushboard (popey.com)
162 points by emptybits 9 days ago | hide | past | favorite | 97 comments





Unclack (linked in the article) did a Show HN a few days ago. Related discussion: https://news.ycombinator.com/item?id=25644828

It isn't quite the same, but RNNoise is a neural-network based noise reduction aimed at dampening anything that isn't human voice. It works fantastic to me and almost always completely mutes my keyboard. (Sometimes it comes though a bit if I am talking at the same time.)

This is easy integrated into Pulseaudio using PulseEffects (https://github.com/wwmm/pulseeffects).

(The PulseEffects support is new, I used to use NoiseTorch (https://github.com/lawl/NoiseTorch) which is more dedicated but has a weird UI and some other downsides)


> and some other downsides

Can you elaborate? (maintainer here, always interested in feedback)


For me, I think having an option to start when I login would be great (similar to NVIDIA Broadcast on Windows).

This would solve my biggest issue that when turning on and switching my input to it, other programs sometimes need to be restarted to pick up the microphone change.

Otherwise, keep up the great work!


I can testify that these RNNoise-based methods work quite well at removing background noise, including keyboard clacking, even while talking and typing at the same time.

I've used this in Windows and it works pretty good. The filter isn't quite as good as RTXVoice and the installation can be... tricky[1], but it's less fiddly once you get it working.

[1] https://medium.com/@bssankaran/free-and-open-source-software...


RNNoise is also available as a native voice filter in OBS and it works very well there.

For anyone going down this path, it's relatively easy to kinda use OBS as your audio pipeline for other programs. (Easy in the "for people on HN" sense, not easy in the "my mom would do this" sense.) Only caveat is that you need to leave OBS running in the background doing its thing whenever you need your microphone.

(Instructions for Windows. The OBS stuff would be the same, you'll just need to figure out your own solution for virtual audio devices.)

1. You'll need a virtual audio device. So grab Virtual Audio Cable[1] or VB-Audio Cable[2]. Both have a free version that let you set up a single device.

2. In OBS, add your microphone as an "Audio Input Capture". Right click on it, select Filters, and add a "Noise Suppression". (For future playing, you may want to come back here and add a "Noise Gate" as well. Basically "if the audio is too quiet, mute the input completely.)

3. Now go to File -> Settings, Audio, and under "Advanced" select the virtual audio cable as your monitoring device. Hit OK.

4. In the Audio Mixer panel at the bottom middle of your window, select any of the gear icons and hit "Advanced Audio Properties". In the row for your microphone input, change "Audio Monitoring" to "Monitor and Output".

5. You should now be getting your de-noised/gated/etc microphone coming in to the virtual audio device. Now in your voice chat program, just change the microphone input to the virtual audio device.

I've got a relatively quiet workspace, but I still live with three people and two dogs so the ambient noise is there. This cuts most of my dog's sounds (even if she's playing and creating a ruckus), ambient noise from people upstairs, my keyboard, etc. I'm stuck in meetings a good chunk of my day so I try to avoid having to wear headphones (just gets tiresome), and the noise gating and some strategic microphone positioning works perfect for keeping the meeting audio from my speakers from feeding back in. (Along with having all the meeting audio running through a very aggressive compressor to normalize everyone's volume into a very tight range.)

OBS also includes a virtual camera option, so I use that to crop out a tighter shot from my fairly wide angle camera so people can't see as much of the mess around the room and do some colour adjustment because it's a cheap camera and looks kinda garbage otherwise.

[1] https://vac.muzychenko.net/en/ [2] https://vb-audio.com/Cable/


Doing that on a Mac is...more complicated. There's only one company (Rogue Amoeba) that does virtual audio devices (https://rogueamoeba.com/loopback/) and it's $100.

Incidentally I purchased an Elgato Wave:3 Mic (https://www.elgato.com/en/wave-3) because it includes a free virtual audio device for Mac, which piqued my curiosity. It turns out that Rogue Ameoba provides the extension for virtual audio devices, so it's a good value!

Another option for both Win/Mac is the Blue Yeti X (https://www.bluemic.com/en-us/products/yeti-x/), which has Blue Voice to denoise/noise gate/equalize audio without additional drivers aside from the base software (I use a headset which supports Blue Voice and it's ok, but def not as good as RNNVoice)


Thanks for this extremely detailed write up. I also appreciated the tips on compressing the dynamic range of audio.

I've just used a little script that sets up https://github.com/werman/noise-suppression-for-voice and it's worked wonderfully, but PulseEffects and NoiseTorch seem cool!

Seems like this would be great for multiplayer gaming. Anyone know how well PulseAudio works on windows these days?

Any recommendation for mac?

Here:

https://stackoverflow.com/a/59808919/1660678

Then you still get a FAILED: meson-install Permission denied: '/Library/Audio/Plug-Ins/LV2' error, so change INSTALL_DIR_MAC in install.sh to~/Library/Audio/Plug-Ins/LV2 and install via the github page



I presume he/she meant - Is there a way to get RNNoise working on Mac?

krisp.ai is good but $3 a month

For what it's worth, I tried it and it was... not great?

Versus piping my audio through OBS as a way of using RNNoise and doing noise gating, OBS retains the original audio quality quite well and does a really good job of removing clicks/clacks/etc.

Krisp made my voice sound like I was talking through two tin cans and a string, and, at least in my environment, did not do a very good job of actually removing any of the background sounds.

I've also tried it in Discord (as it's integrated directly into Discord) and kept running into a problem of it deciding my own voice was noise and just cutting me out mid word.

They have a free tier (gives you 120min/week of noise cancelling), so anyone looking to try it definitely worth using that first. I'd suggest turning on audio monitoring in some headphones and listening to yourself a bit though and deciding if the quality is acceptable to you.


I've only had excellent experience with Krisp, but I have a semi-pro USB mic I use so perhaps it makes all the difference. Sounds great also with a macbook built-in mic.

That said, I'm interested to see open source alternatives as I'm interested to see how they work.


I've tried it with both a $20 off-brand shotgun mic as well as a Blue Yeti. Not much luck with either. RNNoise did vastly better and the work getting it set up in my audio pipeline certainly wasn't worth $5/mo to avoid.

And honestly I could've even lived with that except for the severe degradation in audio quality.


I'd like to see something like this built into the Operating Systems. Maybe it's just me (misophonia) but having someone typing while a conversation is happening is so distracting as to make it next to impossible to follow the conversation. The same applies to people who use wired Apple earbuds when the mic rubs against their clothing.

Or people who leave their slack notifications audible while they are on video calls. The whole team is on the call and someone posts to the channel and you hear 10 slack notifications.

Love it! I'm glad that you could bring mic-muting to the wider world outside the macOS Big Sur bubble. Appreciate the shoutout for Unclack!

Thank you! That's very gracious of you to say so, and Unclack is cool :-)

It's a really cool idea. I also see a potential benefit to preventing acoustic keyboard eavesdropping. I've seen some newish streamers not show their screen when doing something sensitive like logging in somewhere, but you can still hear their keyboard.

On a slightly related note, I quite like listening to mechanical keyboard sounds when my favorite programmers are doing a stream. I ended up buying one for myself because I just had to hear the sound up close. Mmm...


In case buying a new keyboard is a step too far, there is bucklespring available for Linux that emulates the sound of an IBM Model M keyboard.

Demo here : https://www.youtube.com/watch?v=Y7dKyGoqn9w


You only have to worry about the keyboard muting software, as it has to capture key press events.

Just use NVIDIA Broadcast. Filters out everything but talking.

NVIDIA Broadcast is only available on Windows (but free and works very well if you have a RTX card). Use it if available!

If using Discord, Krisp is built-in. On Windows/Mac, you can also install Krisp standalone.

On Linux, I would recommend NoiseTorch or other similar software.


> and works very well if you have a RTX card

If you have a non-RTX nVidia GPU, you can use RTX Voice, which is the same functionality as the nVidia Broadcast noise removal, and doesn't require an RTX card despite the name.

I was using RTX Voice on my GTX 1070 just fine.


Yeah, Nvidia Broadcast (formerly RTX Voice) or Krisp. As someone in 3 to 8hrs of video calls every day (interviewer), I wish more people would use solutions like that.

At least semi relevant is Shush, a mac app that makes toggling OS-wide mute easy, along with push-to-talk (or the inverse, push to mute). I've been a happy user for years.

I only wish the menu bar icon were more prominent somehow, or had the option to overlay a floating semi-transparent window that displayed mute status. I'm always paranoid about whether I'm actually muted and wish I could make it glaringly obvious to myself.


<rant>

Maybe if those "modern" video-conference apps had one, decades old option that was (and still is) avaliable in

almost all gaming-oriented voice software (ventrilo, mumble, teamspeak, discord) called

PUSH 2 TALK

then this problem would be solved, same with the problem of kids/other people in the background (especially this)

but yea, we need AI/Blockchain based solutions that require thousands of hours of engineering effort that probably will be provided by some Startup and cost 15$.

It's insane how enterprise software is behind gaming in that particular matter, do those people even use their software?

</rant>

edit.

What's PUSH 2 TALK?

PUSH 2 TALK is not TURN ON / TURN OFF switch where you actually mute yourself. It's that you talk while having some button being pushed down e.g MOUSE SCROLL (MOUSE3) (for me it's probably one of the most practical choices)

so in this case you're always muted unless you want to talk

Why it's so great? because you can e.g play game, write code, do stuff on your PC and when you want to mute yourself, then you don't have to try to find some shortcuts or even worse - put video-co app on focus and click mute button, but instead you just stop pressing your PUSH2TALK hotkey! :P


Zoom at least has such a feature, I use it all the time.

There's some strange psychological thing getting some people to mute their side. I guess it's because some people are used to a ton of noise around them they assume others are ok with it too, but I'm probably reading way too much into things.


>There's some strange psychological thing getting some people to mute their side.

I'm not sure whether we're at the same page here

PUSH 2 TALK is not TURN ON / TURN OFF switch where you actually mute yourself, it is that you talk while having some button being pushed down e.g MOUSE SCROLL (MOUSE3) (for me it's probably one of the most practical choices)

so in this case you're always muted unless you want to talk


Spacebar does that on Zoom :)

Mute yourself and then hit spacebar. You'll be unmuted until you release

Not sure if this is on by default, by the option for this behavior is in Preferences > Audio > Press and hold 'Space Key' to temporarily unmute

Though tbf, Zoom has to be in focus in order for that to work


Their version of push-to-talk is useless since, like you mentioned, you have to keep Zoom in focus. I don't know about you, but I never had Zoom in focus when I used it. I was always multi-tasking.

But you have to have zoom "on focus"?

e.g can you write code in your fancy IDE and hit space to unmute temporarily yourself?

edit:

Ok, I now see

>Though tbf, Zoom has to be in focus in order for that to work


I guess you use tabs :)

I have a yeti nano, which has a physical mute button. It’s super useful. I only wish it could:

automatically switch the mute indicator on zoom, so others can see I’m on mute

push to talk mode would be neat instead of click to unmute and another to mute again

anybody knows if the button is hackable in some way? (osx)


> Though tbf, Zoom has to be in focus in order for that to work.

Is it possible this is an OS limitation? It wouldn't surprise me if macOS, for instance, had privacy restrictions on apps capturing the keyboard when they're out of focus. No idea if that's the case, just wondering.


Works on Mac. I use it all the time.

If you’re on windows you can use AutoHotKey to map a key or key combination of your choice to route to the spacebar in zoom, regardless of focus. I’ve done something similar for media control for apps that don’t have global hotkeys.

Yep, that's exactly what I do in Zoom.

It's the space bar, and not global (of course), but I stay muted 100% of the time, and press and hold the space bar while I'm talking, then let got when I'm done.


> not global (of course)

That's not an "of course" thing (of course). All of the above mentioned apps (Discord etc.) support the PTT hotkeys being global. Windows and OSX support global hotkeys in apps.


I was just saying it didn't take over the spacebar globally.

The zoom app has lots of room for better features, for sure.


Note that Zoom only has this for Windows. It doesn't for their Linux client, which is unfortunate.

The Mac client has it.

I did find out the hard way that the combination of Mac's VNC server and my client on Windows send a stream of press-and-release messages when I press and hold the space bar on the remote side.

It took me a surprisingly long time to figure out what people where describing when I tried to speak.


It does have this feature on the mac.

My (businessish) headset has a hardware mute button.

Given that a lot of business voice chat is essentially phone calls (rather than group meetings), it makes some sense that toggle predominates UI designs.


And it’s super inconvenient. I prefer to not press my keyboard every single time i need to speak, because otherwise i would be pressing my keyboard all the time.

Edit: everyone suggesting me to use my mouse: i use a laptop without a mouse and sit on my sofa while in meetings. I prefer to unmute myself while there’s a discussion where I’m part of and mute myself when I’m not talking anymore. Push to talk every 10 seconds for 10 minutes is much more inconvenient than just having the mic on all the time.

Note that I do not work as a programmer.


What's even more inconvenient is you broadcasting all your background noise to everyone on the call, or worse, echoing the call itself due to not using a headset

Or, you know, one can increase the voice activation level so that that's not the case?

Or end up in a situation where your voice is heard choppy on the other end, as voice activation triggers too late. Often also missing short replies. Push To Talk is more reliable.

It works reasonably well for me for most normal, constant background noise. It's not perfect obviously.

Ah the "unicorn voice activation level" argument :D I've never seen anyone get that working perfectly in my decades of using VOIP for gaming and work.

It's not perfect, but it's the simplest option for me for normal background noise that works reasonably well as long as you don't change much. Definitely an option if you want to play games or work at the same time as talk.

I set up a footpad for push-to-talk while gaming. Surprised more people don't do it, especially in a high performance context.

How do you set it up though, on the OS or in each app and with what software?

There's probably a better way, but I bought a pedal that was for transcriptionists, which came with software that allowed you to bind it to a keypress. Then I made sure that key was mapped to push-to-talk on a per app basis.

Super convenient to map it to esc. As a vim user.

Meeting while using vim? Need a second pedal!


>I prefer to not press my keyboard

Use your mouse then - e.g scroll button (on push, on scroll, whatever you want) or side buttons on modern / gaming mouses


Right. So what are you doing on a computer if not pressing keys on a keyboard all the time?

I actually use many meetings to get a break from the keyboard, so I understand where parent is coming from.

That's totally fair. Both tools should be available.

The new tech shouldn't be written off as a waste of money. The old school push-to-talk shouldn't be written off as archaic.


Google meet afaik does support space as push-to-talk so it does give the option to the people. Having the mic to pick up only speak would be even better.

Bind it to a mouse button...

Not sure if you were being flippant; “break for my hands from being in the same position on the desk for the keyboard, mouse, and trackpad” was my intention.

That's a great utility and also very nice they implemented it so fast! Code looks clean and concise. I'm using Nvidia Broadcast mainly for this reason so that I can stream to my two subscribers without my mechanical keyboard ruining the experience :)

Cool idea for those who don't talk and type at the same time in a meeting. Would be an issue for me unforunately but boy I hope some of the people I have meetings with employ something similar. (fortunately my keyboard is quite quiet)

This (ahem) sounds fantastic.

I’m currently doing VC off an iPad while sat in front of my Linux workstation.

The workstation has no microphone. What kind of mic could I get for it, to migrate all my VC to the workstation?


Why not a headset? Certainly no Bluetooth headset though, sound quality is bad on linux as of now.

If you don't have meetings all day I can recommend the Logitech H800. Build quality and comfort are meh, but: It's small, you can use a wireless dongle with linux, switch easily between computer and phone by turning it to bluetooth on the headset and sound is decent.


USB microphones (that integrate the mic preamp and the A/D converter into one unit) are now very common. You just plug them in. In my experience they take zero effort to use with ubuntu or chromeos.

Many audio interfaces also work just fine with Linux OOTB despite there being no official support.

While for microphones (and other audio equipment) there's almost no limit to how expensive you can go, any halfway decent USB microphone should probably be good enough that you're bottlenecked by the application's codec/bitrate.

If you were willing to splurge a bit, you might look at the likes of the Blue Yeti, Rode NT-USB, AKG Lyra, Audio Technica AT2020 USB, or even Shure MV7 which range between $150 and $300.


What happens if I’m talking while I’m typing?

Yo__ a__io _ou_d b_ st__t_ry.

We tried various settings for the timeout from 150ms (too short) to 2s (too long) and settled on 250ms. Suggestions welcome on improving it! :D

At least it's more clearly stated than the one a couple days ago that said it "muted your keyboard"!

This is a really cool, small utility!

TBH, I have been wondering if there is a "wishlist" of small utilities/apps people would want to see on the Linux desktop. I have been looking for project inspiration and would love to do something that actually gets used.


I use Nvidia Broadcast (formerly RTX Voice) for this. Only available for recent GPUs though.

It actually works on non-RTX cards too btw if you install the standalone RTX Voice app.

I didnt even know they re-released it under new name.

I have rtx voice running all the time (starts totaly silently with pc) and totaly forget its there. As I have headphones without mic my mic is positioned right between bottom rim of monitor and keyboard (mechanical) and this piece of magic filters keyboard sounds off like its not even there and leaves voice intact.

Absolutely adore that.

Somehow I fear that nvidia broadcast will ruin it. It is already getting bloater (hooks camera, background filters) and I fear it would ask for updates here and then. The quality I love about RTX Voice is that I dont notice it at all, apart from its tray icon.


I saw some YouTube videos and then tried it myself and it is truly one of those magical programs that does its thing and does it well.

That's not bad even for security reasons. It can be possible to recover your password if the sound of you typing it is available.

Cool!

Windows please.

Someone. Anyone.


There are a few options that let you use RNNoise. (I posted another comment a bit further up on how to pipe your audio through OBS to implement this. There are undoubtedly simpler options.)

In my experience, it does a great job cancelling out keyboard clicks and clacks. Even if I sit here and slam on my spacebar harder than I'd ever hit it even writing an angry email, it's cancelling it all. And I've never had an issue with it _not_ picking up my voice.

If you're just looking for _a_ solution to the problem, I'd give something with RNNoise a try.


If you have an RTX card, get nVidia Broadcast.

If you have a non-RTX card (like a GTX 1070), get RTX voice. Despite the name, it does not require an RTX card.

Seriously, nVidia's noise removal is absolute magic, as far as I'm concerned. https://youtu.be/uWUHkCgslNE


I actually tried writing a version of this for windows just an hour before this was written. Usually when I do this I find there is one already just as I finish it, but if not then I’ll put it on GitHub within a week. Will post another msg here if I do.

Nvidia Broadcast if you have a recent GPU

No. Get a decent OS.

I think this is now the third one of these I've seen on HN in the past week or so.

Former PM at a videoconferencing company here - this is a great great great idea. You should consider integrating with Blue Jeans (guess where I was a PM at), Zoom, etc. If it works well and you can get in touch with some folks at the company, you could probably get some promotion in their app directories.

Isn't the better idea to simply remove the keyboard noise? I think a few services do this already...

That sounds infinitely more complex and cpu intensive than simply muting the mic on key events.

I don't know what's worse, having to mute people who aren't paying attention in the meeting and click clacking on their other work, or seeing those low mounted webcams that give you front row seats to fingers typing on the keyboard, or a nice angle on your coworkers unkempt neck hair.

Wasn't this posted 2 days ago?

Unclack was probably posted a couple of days ago. It was the inspiration for Hushboard.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: