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.)
(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)
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.
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.
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.
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)
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
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.
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...
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.
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.
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
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.
> 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.
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.
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.
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 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.
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.
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 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'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.
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.
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.
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)
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.
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 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.
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.
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.
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.
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.
reply