Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

7 Commits

Repository files navigation

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."""importwaveimportsysfromspeexdsp_nsimportNoiseSuppressioniflen(sys.argv) <3:
print('Usage: {} near.wav out.wav'.format(sys.argv[0]))
sys.exit(1)
frame_size=256near=wave.open(sys.argv[1], 'rb')
ifnear.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_sizein_data_bytes=frame_size*2whileTrue:
in_data=near.readframes(in_data_len)
iflen(in_data) !=in_data_bytes:
breakin_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

About

Python bindings of speexdsp noise suppression library

Topics

Resources

Stars

49 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages