speexdsp库的python绑定
speexdsp的Python项目详细描述
python的speexdsp
要求
- 开关量
- 编译工具链
- Python
- libspeexdsp开发
构建
有两种方法可以构建包。
使用setup.py
sudo apt install libspeexdsp-dev git clone https://github.com/xiongyihui/speexdsp-python.git cd speexdsp-python python setup.py install
使用makefile
git clone https://github.com/xiongyihui/speexdsp-python.git cd speexdsp-python/src make
开始
"""Acoustic Echo Cancellation for wav files."""importwaveimportsysfromspeexdspimportEchoCancelleriflen(sys.argv)<4:print('Usage: {} near.wav far.wav out.wav'.format(sys.argv[0]))sys.exit(1)frame_size=256near=wave.open(sys.argv[1],'rb')far=wave.open(sys.argv[2],'rb')ifnear.getnchannels()>1orfar.getnchannels()>1:print('Only support mono channel')sys.exit(2)out=wave.open(sys.argv[3],'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()))print('far - rate: {}, channels: {}'.format(far.getframerate(),far.getnchannels()))echo_canceller=EchoCanceller.create(frame_size,2048,near.getframerate())in_data_len=frame_sizein_data_bytes=frame_size*2out_data_len=frame_sizeout_data_bytes=frame_size*2whileTrue:in_data=near.readframes(in_data_len)out_data=far.readframes(out_data_len)iflen(in_data)!=in_data_bytesorlen(out_data)!=out_data_bytes:breakin_data=echo_canceller.process(in_data,out_data)out.writeframes(in_data)near.close()far.close()out.close()