UniVoice 4.2.0: RNNoise noise cancellation

UniVoice was updated to 4.2.0 recently with the key change being that RNNiose is now supported.

RNNoise is an amazing audio noise removal library that I've seen excellent results with. Background noise such as traffic, ambient noise are almost completely gone. 

It is available in UniVoice 4.2.0 as an AudioFilter implementation called RNNoiseFilter and is a one-line integration.  RNNoiseFilter class internally uses is used via RNNoise4Unity, a repository I made that simply makes it available as a UPM package. 

Since RNNoise4Unity uses native libraries, it has not been made a direct dependency of UniVoice. Only a RNNoiseFilter.cs is provided with UniVoice that can be activated using UNIVOICE_FILTER_RNNOISE4UNITY after you import RNNoise4Unity into your project. 

Not adding packages that rely on native libraries to UniVoice dependencies is something I'm going to continue. I have highlighted in the 4.2.0 commit the following: 

Activating non-packaged dependencies 
UniVoice includes and installs the dependencies mentioned above along with itself. 
The following implementations are available out of the box when you install it: 
* Opus encoding/decoding filter (via Contentus-Unity) 
* GaussianAudioBlur filter (plain C#, no dependencies used) 
* Mic audio capture input (via UniMic) 
* AudioSource based playback output (via UniMic) 

But the following implementations are based on dependencies that you have to install and enable via compilation symbols as they are not UniVoice dependencies and don't get installed along with UniVoice. This is because they are either third party modules or based on native libraries (not plain C#) that can pose build issues. 
* Mirror network: 
   - To enable, ensure the Mirror package is in your project and add UNIVOICE_NETWORK_MIRROR to activate it 
* RNNoise Noise removal filter: 
   - To enable, ensure the RNNoise4Unity package is in your project and add UNIVOICE_FILTER_RNNOISE4UNITY to activate it 

Usage

RNNoiseFilter is an input filter, because it is applied to the audio captured at the devices. To use it, simply add this to your integration:

session.InputFilters.Add(new RNNoiseFilter());

where session is a ClientSession object

Contact

Get in touch using the "My Links" section on this page.

Comments

Popular posts from this blog

UniVoice 4+: Now a mono repo

UniVoice 4.4.0: Easy drag and drop integration with Mirror (also, YouTube tutorial)

UniVoice 4.3.0: Easy Push To Talk