Skip to main content

Python bindings of speexdsp noise suppression library

Project description

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

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

speexdsp_ns-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl (161.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.28+ x86-64

speexdsp_ns-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl (158.2 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.28+ ARM64

speexdsp_ns-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl (159.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

speexdsp_ns-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl (156.8 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

speexdsp_ns-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl (158.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

speexdsp_ns-0.1.2-cp310-cp310-manylinux_2_28_aarch64.whl (155.5 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

speexdsp_ns-0.1.2-cp39-cp39-manylinux_2_28_x86_64.whl (158.5 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

speexdsp_ns-0.1.2-cp39-cp39-manylinux_2_28_aarch64.whl (155.4 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

speexdsp_ns-0.1.2-cp38-cp38-manylinux_2_28_x86_64.whl (159.2 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

speexdsp_ns-0.1.2-cp38-cp38-manylinux_2_28_aarch64.whl (156.1 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

speexdsp_ns-0.1.2-cp37-cp37m-manylinux_2_28_x86_64.whl (157.4 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.28+ x86-64

speexdsp_ns-0.1.2-cp37-cp37m-manylinux_2_28_aarch64.whl (154.1 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page