Real-time audio output normalization for Windows, macOS and Linux.
Report a Bug
·
Request a Feature
Table of Contents
This project started from the idea of developing a dynamic compressor that reduces abrupt acoustic differences in the amplitude of an audio signal in real time alongside a limiter that tottaly prevents loud noises which can lead to soft or hard clipping situations that may damage your hearing or your audio output device
The combination of these two features can be especially useful for those people that suffer of some mental or hearind disorder, such as hyperacusis or phonophobia. By reducing the exposure to harmful noise, people affected by such condititons may feel more safe and calm while using their computer, greatly reducing the anxiety and anguish that these situations can generate.
I built this project for my personal use, however, I thought I could share it publicly so, hopefully, more people can benefit from this.
In this section you can find all the steps required to install and run this software in your computer.
This is an example of how to list things you need to use the software and how to install them.
- Python version 3.x (https://www.python.org/downloads/).
- A virtual audio device, personally, I recommend Virtual Audio Cable (VAC) from VB-Audio Software (https://vb-audio.com/Cable/), there is a free version available which is more than enough to make use of this project. As a side note, if you choosed to install VAC, I suggest you to open VAC Control Panel and check the "Volume Control" box that appears at the upper right section, this will allow you to manually control the volume of the audio that goes through the virtual device whenever you require.
-
Clone the repo:
git clone https://github.com/your_username_/Project-Name.git
-
Install the dependencies:
pip3 install -r requirements.txt
-
Select the virtual audio device you installed earlier as the default output device.
-
Check your input and output device IDs:
python main.py -l
Write down the numbers that appear at the left of your desired input and output devices names.
-
Open start.bat, if you are on Windows, or start.sh, if you are on Linux or MacOS, with a text editor and replace the IDs you wrote down in the last step for the ones present in the file, especifically replace the number after "-i" for the ID of your input device and the number after "-o" with your output device ID. As you may notice there are more parameters you can set, you can check what they do in the help message:
python main.py -h
-
Done! Keep in mind that it will take a bit before the program starts streaming the audio back to your output device, so, naturally, there will be some latency, keep trying different values for the latency parameter, I recommend to set the same values for latency and buffer size, otherwise there would be some input/output underflows/overflows situations, and the audio quality may degrade heavily if the difference between those two values are too high.
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the project.
- Create a new branch for your feature (
git checkout -b feature/YourFeature
). - Commit your changes (
git commit -m 'Added YourFeature'
). - Push them to the branch you created before (
git push origin feature/YourFeature
). - Open a pull request.
- Wait for it to be accepted (Thank you!).
Distributed under the GNU General Public License v3.0 License. See LICENSE
for more information.
Amit Karamchandani Batra - @PollitoRex_