Python环境下基于自适应滤波器的音频信号(wav格式)降噪方法

这篇具有很好参考价值的文章主要介绍了Python环境下基于自适应滤波器的音频信号(wav格式)降噪方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python的集成环境我一般使用的是WinpythonWinpytho脱胎于pythonxy,面向科学计算兼顾数据分析与挖掘;Anaconda主要面向数据分析与挖掘方面,在大数据处理方面有自己特色的一些包;Winpytho强调便携性,被做成绿色软件,不写入注册表,安装其实就是解压到某个文件夹,移动文件夹甚至放到U盘里在其他电脑上也能用。抛开软件包的差异,我个人也推荐初学者用winpython,正因为其简单,问题也少点,由于便携性的特点系统坏了,重装后也能直接用。

请直接安装、使用winPython:
https://sourceforge.net/projects/winpython/因为很多模块以及集成的模块

IDE我用的spyder(类MATLAB界面)

Python环境下基于自适应滤波器的音频信号(wav格式)降噪方法,python,开发语言

所用模块如下:

import numpy as np
import librosa
import soundfile as sf
import pyroomacoustics as pra

需要按照librosa和pyroomacoustics模块

pip install librosa
pip install pyroomacoustics

主要方法如下:

时域自适应滤波器Time Domain Adaptive Filters

- Least Mean Squares Filter (LMS)

- Block Least Mean Squares Filter (BLMS)

- Normalized Least Mean Squares Filter (NLMS)

- Block Normalized Least Mean Squares Filter (BNLMS)

- Recursive Least Squares Filter (RLS)

- Affine Projection Algorithm (APA)

- Kalman Filter (KALMAN)

非线性自适应滤波器Nonlinear Adaptive Filters

- Second Order Volterra Filter (SVF)

- Trigonometric Functional Link Adaptive Filter (FLAF)

- Adaptive Exponential Functional Link Adaptive Filter (AEFLAF)

- Split Funcional Link Adaptive Filter (SFLAF)

- Collaborative Functional Link Adaptive Filter (CFLAF)

频域自适应滤波器Frequency Domain Adaptive Filters

- Frequency Domain Adaptive Filter (FDAF)

- Partitioned-Block-Based Frequency Domain Adaptive Filter (PFDAF)

- Frequency Domain Kalman Filter (FDKF)

- Partitioned-Block-Based Frequency Domain Kalman Filter (PFDKF)

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任
《《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》等EI期刊审稿专家。
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

程序部分代码如下:文章来源地址https://www.toymoban.com/news/detail-801302.html

import numpy as np
import librosa
#pip install librosa
#pip install pyroomacoustics
import soundfile as sf
import pyroomacoustics as pra

from time_domain_adaptive_filters.lms import lms
from time_domain_adaptive_filters.nlms import nlms
from time_domain_adaptive_filters.blms import blms
from time_domain_adaptive_filters.bnlms import bnlms
from time_domain_adaptive_filters.rls import rls
from time_domain_adaptive_filters.apa import apa
from time_domain_adaptive_filters.kalman import kalman
from frequency_domain_adaptive_filters.pfdaf import pfdaf
from frequency_domain_adaptive_filters.fdaf import fdaf
from frequency_domain_adaptive_filters.fdkf import fdkf
from frequency_domain_adaptive_filters.pfdkf import pfdkf
from nonlinear_adaptive_filters.volterra import svf
from nonlinear_adaptive_filters.flaf import flaf
from nonlinear_adaptive_filters.aeflaf import aeflaf
from nonlinear_adaptive_filters.sflaf import sflaf
from nonlinear_adaptive_filters.cflaf import cflaf


def main():
  x, sr  = librosa.load('samples/female.wav',sr=8000)
  d, sr  = librosa.load('samples/male.wav',sr=8000)

  rt60_tgt = 0.08
  room_dim = [2, 2, 2]

  e_absorption, max_order = pra.inverse_sabine(rt60_tgt, room_dim)
  room = pra.ShoeBox(room_dim, fs=sr, materials=pra.Material(e_absorption), max_order=max_order)
  room.add_source([1.5, 1.5, 1.5])
  room.add_microphone([0.1, 0.5, 0.1])
  room.compute_rir()
  rir = room.rir[0][0]
  rir = rir[np.argmax(rir):]

  y = np.convolve(x,rir)
  scale = np.sqrt(np.mean(x**2)) /  np.sqrt(np.mean(y**2))
  y = y*scale

  L = max(len(y),len(d))
  y = np.pad(y,[0,L-len(y)])
  d = np.pad(d,[L-len(d),0])
  x = np.pad(x,[0,L-len(x)])
  d = d + y

  sf.write('samples/x.wav', x, sr, subtype='PCM_16')
  sf.write('samples/d.wav', d, sr, subtype='PCM_16')

  print("processing time domain adaptive filters.")

  e = lms(x, d, N=256, mu=0.1)
  e = np.clip(e,-1,1)
  sf.write('samples/lms.wav', e, sr, subtype='PCM_16')

  e = blms(x, d, N=256, L=4, mu=0.1)
  e = np.clip(e,-1,1)
  sf.write('samples/blms.wav', e, sr, subtype='PCM_16')
  
  e = nlms(x, d, N=256, mu=0.1)
  e = np.clip(e,-1,1)
  sf.write('samples/nlms.wav', e, sr, subtype='PCM_16')

  e = bnlms(x, d, N=256, L=4, mu=0.1)
  e = np.clip(e,-1,1)
  sf.write('samples/bnlms.wav', e, sr, subtype='PCM_16')

  e = rls(x, d, N=256)
  e = np.clip(e,-1,1)
  sf.write('samples/rls.wav', e, sr, subtype='PCM_16')

  e = apa(x, d, N=256, P=5, mu=0.1)
  e = np.clip(e,-1,1)
  sf.write('samples/apa.wav', e, sr, subtype='PCM_16')

  e = kalman(x, d, N=256)
  e = np.clip(e,-1,1)
  sf.write('samples/kalman.wav', e, sr, subtype='PCM_16')

  print("processing nonlinear adaptive filters.")

  e = svf(x, d, M=256, mu1=0.1, mu2=0.1)
  e = np.clip(e,-1,1)
  sf.write('samples/volterra.wav', e, sr, subtype='PCM_16')
  
  e = flaf(x, d, M=256, P=5, mu=0.2)
  e = np.clip(e,-1,1)
  sf.write('samples/flaf.wav', e, sr, subtype='PCM_16')

  e = aeflaf(x, d, M=256, P=5, mu=0.05, mu_a=0.1)
  e = np.clip(e,-1,1)
  sf.write('samples/aeflaf.wav', e, sr, subtype='PCM_16')
  
  e = sflaf(x, d, M=256, P=5, mu_L=0.2, mu_FL=0.5)
  e = np.clip(e,-1,1)
  sf.write('samples/sflaf.wav', e, sr, subtype='PCM_16')

  e = cflaf(x, d, M=256, P=5, mu_L=0.2, mu_FL=0.5, mu_a=0.5)
  e = np.clip(e,-1,1)
  sf.write('samples/cflaf.wav', e, sr, subtype='PCM_16')

  print("processing frequency domain adaptive filters.")

  e = fdaf(x, d, M=256, mu=0.1)
  e = np.clip(e,-1,1)
  sf.write('samples/fdaf.wav', e, sr, subtype='PCM_16')

  e = fdkf(x, d, M=256)
  e = np.clip(e,-1,1)
  sf.write('samples/fdkf.wav', e, sr, subtype='PCM_16')

  e = pfdaf(x, d, N=8, M=64, mu=0.1, partial_constrain=True)
  e = np.clip(e,-1,1)
  sf.write('samples/pfdaf.wav', e, sr, subtype='PCM_16')

  e = pfdkf(x, d, N=8, M=64, partial_constrain=True)
  e = np.clip(e,-1,1)
  sf.write('samples/pfdkf.wav', e, sr, subtype='PCM_16')


if __name__ == '__main__':
  main()
  

到了这里,关于Python环境下基于自适应滤波器的音频信号(wav格式)降噪方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于山景BP10128音频处理器高通滤波器算法设计

    + hezkz17进数字音频答疑 山景BP10128音频处理器是一款高性能的数字信号处理器,专门用于音频信号的处理和增强。它采用先进的数字信号处理技术和算法,能够对音频信号进行实时处理,并且具有高效、稳定、可靠等特点。 该处理器具有以下主要功能: 均衡器:支持低音、中

    2024年02月09日
    浏览(30)
  • 【使用维纳滤波进行信号分离】基于维纳-霍普夫方程的信号分离或去噪维纳滤波器估计(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 维纳滤

    2024年02月14日
    浏览(35)
  • 基于自适应扩展卡尔曼滤波器(AEKF)的锂离子电池SOC估计(附MATLAB代码)

    AEKF_SOC_Estimation函数使用二阶RC等效电路模型(ECM)和自适应扩展卡尔曼滤波器(AEKF)估计电池的端电压(Vt)和充电状态(SOC)。该函数将以下内容作为输入:  · 电流(A) · 电压(V) · 温度(℃) 该函数的输出为: ·  估计SOC · 估计电压Vt · 电压Vt误差 加载电池模型参数以及不

    2023年04月23日
    浏览(27)
  • 【Python 算法】信号处理通过陷波滤波器准确去除工频干扰

    对于一个信号来说通常汇入工频噪声往往是因为交流电产生的电泳,影响了我们信号采集导致信号上存在工频干扰。 那么matlab去除工频干扰可以通过陷波滤波器实现。 在python中通常使用scipy.signal实现信号的处理。 Scipy的信号处理模块(scipy.signal)来创建自定义的陷波滤波器

    2024年02月08日
    浏览(33)
  • OpenCV(图像处理)-基于python-滤波器(低通、高通滤波器的使用方法)

    低通滤波 :低通滤波可以去除图像的噪音或平滑图像。 高通滤波 :可以帮助查找图像的边缘。 噪音 :即对一幅图像的产生负面效果,过暗或过亮的部分,一幅图像中,低于或高于某个像素点的值,都可以认为是噪音。 卷积核 :即用来滤波的矩阵,卷积核一般为奇数,如

    2024年02月09日
    浏览(46)
  • 【测控电路】信号分离电路 二阶滤波器 RC滤波电路

    ref 《测控电路 第五版》 一阶低通 H ( s ) = K p ω c s + ω c H(s)=frac{K_pomega_c}{s+omega_c} H ( s ) = s + ω c ​ K p ​ ω c ​ ​ 一阶高通 H ( s ) = K p s s + ω c H(s)=frac{K_ps}{s+omega_c} H ( s ) = s + ω c ​ K p ​ s ​ 二阶低通滤波器 H ( s ) = K p ω 0 2 s 2 + α ω 0 s + ω 0 2 H(s)=frac{K_pomega_0^2}{s^2+alp

    2024年02月14日
    浏览(41)
  • 【数字信号处理2】IIR 滤波器设计

    1.掌握冲激响应法和双线性变换法设计IIR滤波器的原理及具体设计方法,熟悉用双线性设计法设计低通、带通和高通IIR数字滤波器的计算机程序; 2.熟悉模拟Butterworth滤波器的设计,掌握冲激响应法和双线性变换法设计数字IIR滤波器的方法。 1、不同阶次模拟巴特沃兹滤波器的

    2024年02月05日
    浏览(32)
  • 信号处理之FIR数字滤波器(Matlab仿真)

            数字滤波器的作用是滤除不感兴趣的信号,留下想要的信号。数字滤波器可分为无限脉冲响应(IIR)数字滤波器、有限脉冲响应(FIR)数字滤波器两种,两者各有优缺点,其中FIR数字滤波器因其具有良好的线性相位特性受到广泛应用,线性相位是指信号中各频率成分的相对

    2024年02月03日
    浏览(36)
  • 数字信号处理实验:数字滤波器的设计与应用

    一. 实验目的         1.掌握模拟滤波器的设计方法,以及脉冲响应不变法和双线性变换法设计IIR数字滤波 器的方法,针对实际信号能设计相应的 IIR 数字滤波器,并按要求进行滤波。         2.掌握用窗函数法设计FIR数字滤波器的方法,并通过实验了解各种窗函数对滤

    2024年02月03日
    浏览(37)
  • 数字信号处理实验:IIR数字滤波器设计及软件实现

    目录 一、实验目的 二、实验原理 三、实验设备 四、实验内容及步骤 五、实验结果及分析 六、实验主程序框图及程序清单 七、实验总结 熟悉用双线性变换法设计IIR数字滤波器的原理与方法; 学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具FDATool)设

    2024年02月12日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包