Skip to content

Why Noise Reduction?

In many speech-related applications, the presence of noise can severely affect performance and user experience. For example:

  • Speech Recognition: Noise reduces the accuracy of speech recognition, especially in low signal-to-noise ratio environments.
  • Voice Cloning: Noise reduces the naturalness and clarity of synthesized speech based on reference audio.

Speech denoising can solve these problems to some extent.

Common Noise Reduction Methods

Currently, speech denoising techniques mainly include the following methods:

  1. Spectral Subtraction: This is a classic denoising method with a simple principle.
  2. Wiener Filtering: This method works well for stable noise but is limited for changing noise.
  3. Deep Learning: This is the most advanced denoising method currently available. Utilizing powerful deep learning models such as Recurrent Neural Networks (RNNs), Convolutional Neural Networks (CNNs), and Generative Adversarial Networks (GANs) to learn the complex relationship between noise and speech, achieving more accurate and natural denoising effects.

ZipEnhancer Model: Deep Learning Denoising

This tool is based on the open-source ZipEnhancer model from Tongyi Lab, and provides a simple and easy-to-use interface and API, allowing everyone to easily experience the charm of deep learning denoising.

The project has been open-sourced on GitHub

The core of the ZipEnhancer model is the Transformer network structure and multi-task learning strategy. It can not only remove noise but also enhance speech quality and eliminate echoes simultaneously. The working principle is as follows:

  • Self-Attention Mechanism: Captures important long-term relationships in speech signals and understands the context of sounds.
  • Multi-Head Attention Mechanism: Analyzes speech features from different perspectives to achieve more refined noise suppression and speech enhancement.

How to Use This Tool?

Windows Pre-packaged Version:

  1. Download and extract the pre-packaged version (https://github.com/jianchang512/remove-noise/releases/download/v0.1/win-remove-noise-0.1.7z).
  2. Double-click the runapi.bat file, and the browser will automatically open http://127.0.0.1:5080.
  3. Select an audio or video file to start denoising.

Source Code Deployment:

  1. Environment Preparation: Ensure Python 3.10 - 3.12 is installed.
  2. Install Dependencies: Run pip install -r requirements.txt --no-deps.
  3. CUDA Acceleration (Optional): If you have an NVIDIA graphics card, you can install CUDA 12.1 to accelerate processing:
    bash
    pip uninstall -y torch torchaudio torchvision
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
  4. Run the Program: Run python api.py.

Linux System:

  • You need to install the libsndfile library: sudo apt-get update && sudo apt-get install libsndfile1.
  • Note: Please ensure that the datasets library version is 3.0, otherwise errors may occur. You can use the pip list | grep datasets command to check the version.

Interface Preview

界面预览

API Usage

Interface Address: http://127.0.0.1:5080/api

Request Method: POST

Request Parameters:

  • stream: 0 returns the audio URL, 1 returns the audio data.
  • audio: The audio or video file to be processed.

Return Result (JSON):

  • Success (stream=0): {"code": 0, "data": {"url": "音频URL"}}
  • Success (stream=1): WAV audio data.
  • Failure: {"code": -1, "msg": "错误信息"}

Example Code (Python): (Optimized based on the original text)

python
import requests

url = 'http://127.0.0.1:5080/api'
file_path = './300.wav'


# Get audio URL
try:
  res = requests.post(url, data={"stream": 0}, files={"audio": open(file_path, 'rb')})
  res.raise_for_status() 
  print(f"Denoised audio URL: {res.json()['data']['url']}")

except requests.exceptions.RequestException as e:
    print(f"Request failed: {e}")



# Get audio data
try:
    res = requests.post(url, data={"stream": 1}, files={"audio": open(file_path, 'rb')})
    res.raise_for_status()
    with open("ceshi.wav", 'wb') as f:
        f.write(res.content)
    print("Denoised audio saved as ceshi.wav")

except requests.exceptions.RequestException as e:
    print(f"Request failed: {e}")