Skip to main content

Python bindings of speexdsp noise suppression library

Modified from https://github.com/xiongyihui/speexdsp-python

You can use it in Noise reduction model training as said in Personalized PercepNet: Real-time, Low-complexity Target Voice Separation and Enhancement.

Use a VAD and lightweight denoiser (SpeexDSP1) to eliminate the stationary noise before using this data for training.

Requirements

  • swig
  • compile toolchain
  • python
  • libspeexdsp-dev

Build

sudo apt install libspeexdsp-dev
sudo apt install swig
python setup.py install

Get started

"""Acoustic Noise Suppression for wav files."""

import wave
import sys
from speexdsp_ns import NoiseSuppression


if len(sys.argv) < 3:
    print('Usage: {} near.wav out.wav'.format(sys.argv[0]))
    sys.exit(1)


frame_size = 256

near = wave.open(sys.argv[1], 'rb')

if near.getnchannels() > 1:
    print('Only support mono channel')
    sys.exit(2)

out = wave.open(sys.argv[2], 'wb')
out.setnchannels(near.getnchannels())
out.setsampwidth(near.getsampwidth())
out.setframerate(near.getframerate())


print('near - rate: {}, channels: {}, length: {}'.format(
        near.getframerate(),
        near.getnchannels(),
        near.getnframes() / near.getframerate()))

noise_suppression = NoiseSuppression.create(frame_size, near.getframerate())

in_data_len = frame_size
in_data_bytes = frame_size * 2

while True:
    in_data = near.readframes(in_data_len)
    if len(in_data) != in_data_bytes:
        break

    in_data = noise_suppression.process(in_data)

    out.writeframes(in_data)

near.close()
out.close()

or

python examples/main.py in.wav out.wav

Noise suppression as show in figure below:

image

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

platypush_speexdsp_ns-0.1.2.tar.gz (8.6 kB view details)

Uploaded Source

File details

Details for the file platypush_speexdsp_ns-0.1.2.tar.gz.

File metadata

  • Download URL: platypush_speexdsp_ns-0.1.2.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for platypush_speexdsp_ns-0.1.2.tar.gz
Algorithm Hash digest
SHA256 aacb6da72051135b00ec4ea3cffd508ba7818a950e07b1a72f565146bb8f47a8
MD5 d6753bddc2d00ffd8f2050a51c9d9a49
BLAKE2b-256 f2d3a72abf7c003ba8f23337dc19ea7c90ef65d9258221e6b89ea137d1a467fd

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.2 This release

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page