主要通过MATLAB GUI建立了一个简易的语音数字信号处理系统,可以实现数字语音信号采集、时域分析、频谱分析、加噪、降噪等功能,同时利用双线性变换法设计了一个IIR滤波器,将非带限的模拟滤波器映射为最高频率为 的带限模拟滤波器,然后再将模拟滤波器转换为数字滤波器,对比滤波前后的时域及频谱,并绘制出频率响应曲线。由于噪声无处不在,所以采集的原始语音信号不可避免地带有噪声,为了衡量降噪效果,需要对其先加一个已知信噪比的噪声,这里采用的是添加高斯白噪声。为了便于对语音信号的时域-频域分析需要先对原始语音信号进行快速傅里叶变换(fast Fourier transform),即FFT变换然后再绘制出时域图与频谱图作进一步分析。
数字滤波器设计是“数字信号处理”课程的主要内容之一;由于其涉及到模拟滤波器、数字信号频域变换、周期信号的傅里叶变换、频率响应特性、抽样定理及频率混叠等理论知识,这些知识难点光学习理论是远远不够的,它必须与实践相结合,通过matlab编程实践才能更好地掌握理论知识,同时更深刻的体会数字信号处理相关理论知识的应用性特色。
所以,设计这个语音信号处理系统和数字滤波器的目的主要有:
(1)学习并掌握语音数字信号的采集与处理;
(2)学习数字滤波器的设计方法;
(3)学习语音信号的短时时域处理与短时频域处理技术;
(4)学习分析时域图与频谱图;
(5)学习数字滤波器与模拟滤波器的转换。
设计一个简单的音频或语音信号处理系统:
(1)音乐信号中的噪声消除,方法不限;
(2)根据语音信号的特点,设计相应的数字滤波器。
通过MATLAB GUI建立了一个简易的语音数字信号处理系统可视化界面,主要由一个控制面板与一个显示面板构成,控制面板主要是通过按钮来实现对语音数字信号的处理[1]:数字语音信号采集、时域分析、频谱分析、加噪、降噪与滤波处理;显示面板主要用来显示对语音数字信号处理前后的各种对比图。如图1-1所示。
数字语音信号采集[2][3]:通过matlab的audiorecorder函数来访问计算机上的麦克等语音设备来记录语音,并保存为wav格式的语音文件。
时域分析与频谱分析[4][5]:并对信号做1024点FFT变换[6],用matlab绘制出语音信号的时域波形图、频率响应图与频谱图。
叠加噪声:在matlab软件平台下给原始语音信号叠加上高斯随机噪声[7][8],并绘制加噪前后的时域图与频谱图。
消除噪声:主要通过小波函数来对加入噪声的语音信号进行小波分解[9][10],估计噪声方差,从而得到去噪后的语音信号,并对比去噪前后的时域图。
滤波:用双线性变换法[11]设计了巴特沃斯数字低通IIR滤波器[12]对加入高斯噪声的语音信号进行滤波处理,并绘制出巴特沃斯数字低通滤波器[13][14]的频率响应曲线,及滤波前后的时域图与频谱图。
界面如图1-1所示:
语音信号是一种模拟信号,首先须经过采样将其转换为数字信号,实质是把连续信号变为脉冲或数字序列。 我们可以用录音软件先录一段wav格式的音频,也可以用matlab的audiorecorder函数采集,记住采样频率和采样点。然后用audiowrite函数来储存wav格式的音频文件,并绘制出录音数据的波形图。如图1-2所示:
上图在采集语音信号时,是利用计算机自带的麦克风,点击录音后用男声读“蓝天”“白云”,记录5秒后结束数据采集,然后绘制出原始语音信号的时域图。
信号的时域表示形式是现实世界信号的真实形式,而信号的频域分析采用傅里叶变换实现,傅里叶变换的快速算法即快速傅里叶变换[15],所以信号的频域形式实际上是一种数学形式,但却有具体的含义和重要的用途。有些信号的时域波形很难显示其特征,比如从男生和女生发相同语音时的时域波形很难分析出其特征, 以及很难从含有噪声的语音信号的时域波形中识别和去除噪声,但是在频域分析中可以很容易进行特征分析。如图1-3所示,应用 MATLAB 软件绘制出刚才记录的一段wav格式的录音的时域波形和频谱图,由频谱图可知,这段录音的频谱处于0到1000Hz频段,并且主要集中在低频段。
带噪信号普遍存在现实世界中,带噪语音是由纯净语音和混叠的噪声一起形成的。单有带噪语音并不能知道它的信噪比[16],处理以后也无法知道信噪比改善了多少,所以为了方便研究,不得不产生一定信噪比的带噪语音,这样在处理以后就能进行对比,判断信噪比是否提高了。
高斯白噪声(White Gaussian Noise)[17]中的高斯是指概率分布是正态函数,而白噪声是指它的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。用randn函数产生高斯白噪声,然后叠加到纯语音信号上,形成带噪语音。
如图1-4所示,加入高斯白噪声后,语音信号差不多被噪声淹没了,而且信噪比越小噪声效果越明显。
从信号学的角度看,小波去噪是一个信号滤波的问题,而且尽管在很大程度上小波去噪可以看成是低通滤波[18],但是由于在去噪后还能成功地保留信号特征,所以在这一点上又优于传统的低通滤波器。由此可见,小波去噪实际上是特征提取和低通滤波功能的综合,如图1-5所示,原始信号与小波去噪后的时域图比较接近,结合图1-4加入高斯白噪声后的时域图作对比,小波去噪的效果还是很明显的。
数字低通滤波器主要有FIR(有限长单位脉冲响应滤波器)[19]和IIR(无限长单位脉冲响应滤波器)[20]滤波器,FIR滤波器可以应用窗函数法和频率采样法进行设计, 而IIR滤波器是对模拟滤波器进行数字化得到的,可以采用脉冲响应不变法和双线性变换法进行设计。如图1-6所示,通过双线变换法设计了一个巴特沃斯低通滤波器[21][22],它的采样频率fs为22050Hz,Rp为1dB,Rs为15dB,对加入高斯白噪声后的语音信号进行滤波处理。
IIR数字滤波器都是由模拟滤波器的原型变换过来的,模拟滤波器的原型不仅仅有巴特沃斯滤波器,还有切比雪夫Ⅰ型滤波器[23]、切比雪夫Ⅱ型滤波器[24][25]和椭圆滤波器[26][27]。如图1-7是巴特沃斯滤波器、切比雪夫Ⅱ型滤波器和椭圆滤波器在相同指标下的频率响应曲线:
数字滤波器的设计流程在2.4.3节有详细介绍,主要就是对采集到的原始语音信号叠加上高斯噪声,并设置号数字滤波器的性能指标,然后结合预畸变频率,将模拟指标转成数字指标。在确定好滤波器的最小阶数及截止频率后,就可以创建巴特沃斯滤波器了,然后用双线变换法将模拟滤波器转为数字滤波器,最后绘制出滤波前后的时域图和频谱图。当然,不仅仅是巴特沃斯滤波器,只要在matlab程序中稍作修改就能实现切比雪夫Ⅰ型滤波器、切比雪夫Ⅱ型滤波器和椭圆滤波器设计。
设计框图见图1-8:
从语音的产生与感知开始,到语音信号数学模型的建立,为语音信号的处理奠定了基础。根据语音信号的特点,介绍了几种常用的短时时域分析与短时频域分析技术,如短时能量与短时平均幅度、短时平均过零率和傅里叶变换等。同时还介绍了对带噪语音的处理,如小波变换,并详细介绍了IIR数字滤波器的设计。
语音是由发声器官在大脑的控制下的生理运动产生,发音器官包括肺、气管、喉(包括声带)、咽、鼻和口等,这些器官共同形成一条形状复杂的管道,其中喉以上的部分为声道,它随发出声音的不同形状而变化;喉的部分称为声门。发声器官中,肺和器官是整个系统的能源,喉是主要的声音产生机构,而声道则对生成的声音进行调制[30]。
产生语音的能量,来源于正常呼吸时肺部呼出的稳定气流,喉部的声带既是阀门又是震动部件。二两声带间的部位为声门。说话时,声门处气流冲击声带产生震动,然后通过声道响应变成语音。发不同音时声道形状不同,所以能听到不同的声音。喉部的声带对发音影响很大,其为语音提供主要的激励源:声带震动产生声音。声带开启和闭合使得气流形成一系列脉冲。没开启和闭合一次的时间即震动周期,称为基音周期,其倒数为基因频率,简称基频[31]。
语音由声带振动或不经声带振动而产生,其中由声带振动产生的称为浊音,二不由声带振动产生的称为清音。浊音包括所有原因和一些辅音,清音包括另一部分辅音。对于浊音、清音和爆破音,其激励源不同。浊音是位于声门处的准周期麦种序列,清音是位于声道的某个收缩区的空气湍流(类似于噪声),爆破音是位于声道闭合点处建立的气压及突然地释放。
当激励频率等于震动物体固有的频率时,便以最大振幅来震荡,在该频率上,传递函数有极大值,这种现象称为共振,一个共震体可能存在多个相应强度不同的共振频率。声道是分布参数系统,可以看做是谐振腔,有很多谐振频率。谐振频率由每一瞬间的声道外形决定。这些谐振频率称为共振峰频率,简称共振峰,是声道的重要声学特性。这个线性系统的特征频率特性称为共振峰特性,决定了信号的频谱的总轮廓即包络。 为了得到高质量的语音或准确的描述语音,须采用尽可能多的共振峰。在实际应用中,声学语音学中通常考虑前两个峰,语音合成考虑五个共振峰是最现实的。
汉语的特点是音素少,音节少,大约有64个音素,但只有400个左右的音节,即400个左右的基本发音,假如要考虑每个音节有5种音调,也不过有1200多个有调音节即不同的发音。元音属于浊音,脉冲间隔为基音周期,用g(t)表示。其作用于声道,得到的语音信号是g(t)与声道冲激响应h(t)的卷积。g(t)的频谱是间隔为基频的脉冲序列的频谱与声门波频谱[32]的乘积。语音信号可看做便利性随机过程,其统计特性可用信号幅度的概率密度及一些统计量(主要为均值和自相关函数)来描述。对语音的研究表明,其幅度分布有两种近似的形式,较好的为修正Gamma分布[33][34]:
精度稍差的为Laplacian分布[35]:
表示采样语言信号的离散模型是特别重要的[36],建立模型的目的是要寻求一种可以表达一定物理状态下的数学关系,而且要使这种关系不仅具有巨大的精度,还要最简单。人们希望模型既是线性的又是时不变的,这是最理想的模型,但根据语音的产生机理,语音信号是一连串的时变过程,不能满足这两种性质。因此我们需要做出一些合理的假设,使得在较短的时间间隔内表示语音信号时,可采用线性时不变模型。在一般的语音信号经典模型中,语音信号被看做线性时不变系统(声道)在随机噪声或准周期脉冲序列下的输出。这一模型用数字滤波器原理进行公式化以后,将称为语音处理技术的基础[37]。
研究表明语音的产生就是声道中的激励,语音传播就是声波在声道中的传播。假若采用流体力学等建立复杂方程的方法进行研究十分复杂。为了简化,通常对声道形状和发音系统进行某些假设,如假设声道是时变的且有不均匀截面的声管,空气流动或声管壁不存在热传导或粘滞消耗,波长大于声道尺寸的声波是沿声管管轴传播的平面波;更进一步简化,进一步假设声道是由半径不同的无损声管级联得到的。在上述这些假设下,得到级联无损声管模型的传输函数,可以证明对大多数语音,该传输函数为全几点函数,只是对鼻音和摩擦音需加入一些零点。但由于任何零点可用多极点逼近,因此可用全极点模型模拟声道[38]。另一方面,级联无损声管与全极点数字滤波器有很多相同的性质,因而用数字滤波器模拟声道特性是一种常用的方法。
产生语音信号的示意图如图2-1所示:
发浊音时,根据测量结果,声门脉冲波类似于斜三角形脉冲,因而激励信号[40]为以基音周期为周期的斜三角脉冲串。单个斜三角波的数学表达式:
其中N1为斜三角波上升部分的时间,N2为斜三角波下降部分的时间。可见他是一个低通滤波器,通常习惯把它表示为Z变换的全极点模式[41]的形式:
其中C为常数。它表明斜三角波可以描述为一个二级点的模型,因此,斜三角波脉冲串可以被看作加权的单位脉冲串激励上述单个斜三角波模型的结果,该单位脉冲串及幅值因子可以表示成Z变换形式:
所以整个激励模型可以表示为:
当发清音时,声道被阻塞形成湍流,所以可以模拟成随机的噪声,实际上可使用均值为0、方差为1,并在时间或在幅度上均匀分布的序列。
声道模型有两种:一个是将其视为有多个不同截面积的管子级联而成,即声管模型;二是将其视为一个谐振腔,即共振峰模型[42]。
(1)声管模型:
最简单的声道模型为声管模型,在语音持续的短时间内,声道可表示为形状稳定的管道,如图2-2所示:
在声管模型中,每个管子可看做一个四端网络,其具有反射系数,这些系数与LPC参数间有唯一的对应关系。声道可由一组截面积或一组反射系数表示。
(2)共振峰模型[43]:
将声道视为谐振腔时,共振峰即为腔体的共振频率。研究表明,用前三个共振峰代表一个元音就可以,而对较复杂的辅音或鼻音,需要用五个以上的共振峰。基于共振峰理论,有三种实用的模型:级联型、并联型和混合型。
级联型认为声道为一组串联的二阶谐振器。根据共振峰理论,整个声道有多个谐振频率和多个反谐振频率(对应声道频率特性的零点),因而可以被模拟为零极点模型,但对一般元音可用全极点模型,将声道看做一个变截面声管,根据流体力学可得在大多数情况下其为全极点函数,此时共振峰用自回归(AR)模型近似。由于采用LPC技术可以高效的求解AR模型系数[44],因此该模型应用十分普遍。
对于比较复杂的元音和大部分的辅音,需要采用零极点模型,可用并联型模型表示。但在实际应用中,上述两种模型都较为简单,可用于描述一般的元音,但当鼻化元音或鼻腔参与共振等情况级联模型就不适用了,此时腔体有反谐振特性,需要加入零点,称为极零点模型,此时称为并联型结构。将级联模型和并联模型结合的混合型是较为完备的共振峰模型,其可根据不同性质的语音进行切换。如下图2-3所示:
声道终端为口和唇。声道输出为速度波,二语音信号为声压波,二者纸币称为辐射阻抗ZL,用来表征口和唇的辐射效应[45],也包括圆形的头部的绕射效应等。口唇辐射在高频端较显著,在低频段影响较小,因而辐射模型R(z)应为一阶高通滤波器形式,公式为:
语音信号模型中,如不考虑周期冲击脉冲串模型E(z),则斜三角波模型为二阶低通,辐射模型为一阶高通,因而实际信号分析中常采用预加重技术,即对信号取样喉插入一阶高通滤波器,从而只剩下声道部分,便于对声道参数进行分析。
语音信号是随时间变化的非平稳随机过程,因此对于语音的分析一般都是短时分析[46]。这是因为语音虽然是时变的但是具有短时相关性,这个相关性来源于人的发生器官具有惯性,因此语音的状态是不会发生突变,语音在短时间内语音信号的特性基本不变,称之为语音的短时平稳性。语音信号本身是时域信号,对其进行分析时,最直观的方法就是观察其时域波形。语音的短时分析一般需要分帧加窗来处理。语音包含能量这是不难理解的,比如清音和浊音包含的能量就明显不同。
语音信号有许多特点,它的带宽约为5KHz,主要集中在低频段。而且它是一种典型的随机信号:首先,人的每次发声过程都是一个随机过程,很难得到两次完全相同的发音样本;其次,在信号处理中通常假设语音信号是短时平稳的,例如可以认为在语音的浊音段部分,语音的二阶矩统计量是平稳的,即二阶矩平稳,或称为宽平稳。
为了方便分析输入的音频数据,通常需要进行分帧处理,在分帧中,由于语音信号是是时变的,在短时范围内特征变化较小,所以作为稳态处理,但是超出这个短时范围语音信号就会有变化,因此需要设置相邻两帧间有一部分重叠。在相邻两帧之间基音发生了变化,如正好是两个音节之间或正好是声母向韵母过渡等情况,这时其特征参数有可能变化较大,但是为了使特征参数平滑地变化,在两个不重叠的帧之间插一些帧来提取特征参数,这就形成了相邻帧之间有重叠部分[47]。
设输入的音频文件长度为N,取每帧长为wlen。为了使其平滑过渡,两帧之间需要插入一帧或几帧,后一帧相对前一帧的位移量用inc表示,则相邻两帧之间的重叠部分为:
因此,每一帧在音频中的位置为:
在时域,语音信号可以直接用它的时间波形表示出来[48]。其中,清音段类似于白噪声,具有较高的频率,但振幅很小,没有明显的周期性;而浊音都具有明显的周期性,且幅值较大,频率相对较低;过渡段一般是指从辅音段向元音段信号变化之间的部分,这个阶段信号变化快,是语音信号处理中最复杂、困难的部分。语音信号的这些时域特征可以通过短时能量[49]、短时过零率[50]等方法来分析。
(1) 短时能量与短时平均幅度:
短时能量分析是通过能量的高低来区分清音和浊音,不容易确定语音信号片段的起始点;而过零率分析仅仅是表明清音的过零率高于浊音,对噪声的存在比较敏感,如果背景中有反复穿越坐标轴的随机噪声,会产生大量的虚假过零率,影响检测结果。对于背景噪声和清音的区分则显得无能为力。
设语音波形时域信号为x(n)、加窗函数w(n)分帧处理后得到第i帧语音信号yi(n)为:
短时能量与短时平均幅度函数的主要用途有:区分浊音段与清音段,因为浊音的短时能量比清音大得多;区分声母与韵母的分界;区分无话段与有话段的分界。
(2) 短时平均过零率:
短时平均过零率是语音信号时域分析中的一种特征参数。它是指每帧内信号通过零值的次数。对有时间横轴的连续语音信号,可以观察到语音的时域波形通过横轴的情况。在离散时间语音信号情况下,如果相邻的采样具有不同的代数符号就称为发生了过零,因此可以计算过零的次数。单位时间内过零的次数就称为过零率。一段长时间内的过零率称为平均过零率。如果是正弦信号,其平均过零率就是信号频率的两倍除以采样频率,而采样频率是固定的。因此过零率在一定程度上可以反映信号的频率信息。
设语音波形时域信号为x(n)分帧处理后得到第i帧语音信号为yi(n):,帧长为L,短时平均过零率为:
利用短时过零率可以从背景噪声中找出语音信号,可用于判断无话段与有话段的起点与终点。当背景噪声小时,用平均能量识别较为有效,当背景噪声大时,用平均过零率识别较为有效。一般用短时过零率来判别清音和浊音、无话段与有话段。
通过频域分析方法可以分析语音信号的频域特性[51]。最常用的频域分析方法为傅里叶分析法。语音信号是一个非平稳过程,因此需要用短时傅里叶变换对语音信号进行频谱分析。通过语音信号的频谱可以观察它们的共振峰特性、基音频率和谐波频率。
傅里叶分析是分析线性系统和平稳信号稳态特性的强有力的工具,它在许多工程领域得到了广泛应用。它理论完善,且有快速算法,在语音信号处理领域也是一个重要工具。
语音信号本质上是非平稳信号,其非平稳特性是由发声器官的物理运动过程产生的。发声器官的运动由于存在惯性,所以可以假设语音信号在10-30ms这样短的时间内是平稳的,这是短时分帧处理的基础,也是短时傅里叶分析的基础。短时傅里叶分析就是基于短时平稳的假设下,用稳态分析方法处理非平稳信号的一种方法。
根据语音信号的二元激励模型,语音被看成一个受准周期脉冲或随机噪声源激励的线性系统的输出。输出频谱是声道系统的频率响应与激励源频谱的乘积,一般标准的傅里叶变换适用于周期及平稳随机信号的表示,但不能直接用于语音信号。因为语音信号可被看做短时平稳信号,所以可采用短时傅里叶分析。某一帧的短时傅里叶变换的定义如下:
选择的窗函数和窗宽的不同,对短时傅里叶谱的影响是不同的。
可以看出在矩形窗和汉明窗两种窗函数下,短时频谱图都有两种变化:由周期性激励引起的快变化,反映了基音频率的各次谐波;由声道的共振峰引起的慢变化,反映了各共振峰的频率和带宽。还可以看出两个频谱图之间存在明显的差别。采用矩形窗时,基音谐波的各个峰都比较尖锐,且整个频谱图显得比较破碎(类似于噪声),这是因为矩形窗的主瓣较窄,具有较高的频率分辨率,但它也具有较高的旁瓣,因而使基音的相邻谐波之间的干扰比较严重。在相邻谐波间隔内有时叠加,有时抵销,出现了一种随机变化的现象。相邻谐波之间的这种严重“泄露”现象,抵消了矩形窗主瓣窄的优点,因此,在语音短时频谱分析中极少采用矩形窗。当加汉明窗时,得到的短时频谱要平滑的多,因而在语音分析中汉明窗用得比较普遍。
综上所述,关于短时谱和移动窗可以得到以下结论。
1.长窗具有较高的频率分辨率,较低的时间分辨率。从一个基音周期到另一个基音周期,共振峰是要发生变化的,这一点即使从语音波形上也能够看出来。然而如果采用较长的窗,这种变化便被模糊了,因为长窗起到了时间上的平均作用。
2.短窗具有较低的频率分辨率,较高的时间分辨率。采用矩形窗时,能够从短时谱中提取出共振峰从一个基音周期到另一个基音周期所发生的变化。当然,激励源的谐波的细致结构也从短时频谱图上消失了。
3.窗宽的选择需折中考虑。短窗具有较好的时间分辨率,能够提取出语音信号中的短时变化,损失了频率分辨率。但应注意到,语音信号的基音周期提取范围很大。因此,窗宽的选择应当考虑到这个因素。
4.矩形窗和汉明窗的频谱特性都具有低通的性质,在截止频率出都比较尖锐,当其通带都比较窄时(窗越宽,其带通越窄),加窗后得到的频谱能够很好逼近短时语音信号的频谱。窗越宽,逼近效果越好。
噪音在生活中无处不在,我们人耳其实已经习惯于噪音的环境,日常生活里绝对没有噪音的环境不存在。噪声主要来于两个方面:一方面是设备噪声,声音进入麦克风是模拟信号,通过声卡转为数字型号,数字信号是计算机可以处理的信号,处理结束又转换为模拟信号输出,也就是耳机音箱最终播放出的声音。也就是说录一段音频其实要经过好多设备处理,在这个过程中音频难免就会受到设备电路的干扰;另一方面是地噪,严格讲地噪也是设备噪音,但是不是设备自身造成的,而是设备外部电路造成,比如家庭电路没有接地,电流干扰到了麦克风、声卡等电路,所以有些声卡带有专门的接地端,就是为了避免地噪的干扰。
(1)信噪比:
对于带噪信号而言,其所带的噪声“量”如何衡量是极其重要的,这时我们就需要通过信噪比来表示噪声的能量信噪比是信号和噪声能比值的对数值。它被定义为:
通过上式可知:要计算信噪比,必须要知道纯净语音信号s(n) 和噪声 d(n),或知道纯净语音信号和带噪语音 x(n)方可计算。所以我们是无法直接知道原始语音的信噪比的,为了描述通过滤波等处理后原始语音的去噪效果,我们就需要通过叠加噪声的办法,将原始语音叠加一定噪声,对比去噪前后的信噪比变化,可以判断出滤波器或其他降噪手段的降噪效果。
(2)高斯白噪声
高斯白噪声中的高斯是指概率分布是正态函数,而白噪声是指它的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声是分析信道加性噪声的理想模型,通信中的主要噪声源。如果一个噪声,它的瞬时值服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。在一般的通信系统的工作频率范围内热噪声的频谱是均匀分布的,好像白光的频谱在可见光的频谱范围内均匀分布那样,所以热噪声又常称为白噪声。由于热噪声是由大量自由电子的运动产生的,其统计特性服从高斯分布,故常将热噪声称为高斯白噪声。
高斯白噪声的功率谱密度服从均匀分布,幅度分布服从高斯分布,在任意两个不同时刻上的随机变量之间,不仅是互不相关的,而且还是统计独立的。
小波去噪是通过短波实现噪音消除[52],与高斯去噪的基本原理一致。近年来,小波理论得到了非常迅速的发展,而且由于其具备良好的时频特性,因而实际应用也非常广泛。在去噪领域中,小波理论也同样受到了许多学者的重视,他们应用小波进行去噪并获得了非常好的效果。
小波去噪方法包括三个基本的步骤:对含噪声信号进行小波变换;对变换得到的小波系数进行某种处理,以去除其中包含的噪声;对处理后的小波系数进行小波逆变换,得到去噪后的信号。小波去噪方法的不同之处集中在第一步。小波去噪实际上是特征提取和低通滤波功能的综合,其流程框图如图2-4所示:
将信号映射到小波域,根据噪声和噪声的小波系数在不同尺度上具有不同的性质和机理,对含噪信号的小波系数进行处理。实质是减少剔除噪声产生的小波系数,最大限度的保留真实信号的系数。
在信息处理技术中,滤波是最基本的信号处理方法,如何实现高性能的滤波技术成为最富有挑战性的任务。滤波器分数字滤波器和模拟滤波器。与模拟滤波器相比,数字滤波器在应用中具有精度高、稳定性好、设备体积小、使用灵活等优点,而且不需要匹配抗阻即可实现模拟滤波的特殊滤波功能。数字滤波器是一种对数字信号进行处理的重要工具,其对信号进行过滤、检测和参数估计等处理,目的就是消除数字信号中的噪声,让有价值的信号得以保留,其实际上就是一个离散系统。
(1)IIR滤波器的结构[53]
数字滤波器根据单位冲击响应的时间特性又分为IIR滤波器和FIR滤波器。与FIR滤波器相比,IIR滤波器是递归型结构,有体积小、重量轻、灵活等优点,并且设计出来的滤波器过渡带很窄,在很大程度上可以取代传统的模拟滤波器。
IIR滤波器是一种递归线性时不变因果系统,其差分方程为:
(非高斯白噪声,与说明书内容略有不符,读者可查阅其他博客做简单更改)
function varargout = yuyinshuzhixinhao(varargin)
% YUYINSHUZHIXINHAO MATLAB code for yuyinshuzhixinhao.fig
% YUYINSHUZHIXINHAO, by itself, creates a new YUYINSHUZHIXINHAO or raises the existing
% singleton*.
%
% H = YUYINSHUZHIXINHAO returns the handle to a new YUYINSHUZHIXINHAO or the handle to
% the existing singleton*.
%
% YUYINSHUZHIXINHAO('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in YUYINSHUZHIXINHAO.M with the given input arguments.
%
% YUYINSHUZHIXINHAO('Property','Value',...) creates a new YUYINSHUZHIXINHAO or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before yuyinshuzhixinhao_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to yuyinshuzhixinhao_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help yuyinshuzhixinhao
% Last Modified by GUIDE v2.5 18-Jun-2021 14:58:02
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @yuyinshuzhixinhao_OpeningFcn, ...
'gui_OutputFcn', @yuyinshuzhixinhao_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before yuyinshuzhixinhao is made visible.
function yuyinshuzhixinhao_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to yuyinshuzhixinhao (see VARARGIN)
% Choose default command line output for yuyinshuzhixinhao
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes yuyinshuzhixinhao wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = yuyinshuzhixinhao_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% ##############################################################
% 录音
%###############################################################
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
recObj = audiorecorder;
disp('Start speaking.')
%recordblocking(recObj, 5);
recordblocking(recObj,5);
disp('End of Recording.');
% 回放录音数据
axes(handles.axes1);%表示的是将上面的坐标轴做为当前坐标轴,在其上做图.
play(recObj);
% 获取录音数据
myRecording = getaudiodata(recObj);
% 绘制录音数据波形
plot(myRecording);
%存储语音信号
filename = './data1.wav';
audiowrite(filename,myRecording,8000);
% ##############################################################
% FFT频谱图
%###############################################################
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
fs=22050;
% 读取音频文件
filename=strcat('data1.wav');
[x,fs]=audioread(filename);
ainfo = audioinfo(filename);
bits = ainfo.BitsPerSample;
p=audioplayer(x,fs,bits);
sound(x,fs,bits);
y1=fft(x,1024);%对信号做1024点FFT变换
f=fs*(0:511)/1024;
%--------------------------
[H,w]=freqz(x) ;%绘制原始语音信号的频率响应图
Hf=abs(H); %取幅度值实部
Hx=angle(H); %取相位值对应相位角
%clf
% %-----------------------------------
global h1 h2 h3 h4;
h=0;
if ishandle(h1) %判断h1是否为句柄
delete(h1);
h=1;
end
if ishandle(h2) %判断h2是否为句柄
delete(h2);
h=1;
end
if ishandle(h3) %判断h3是否为句柄
delete(h3);
h=1;
end
if ishandle(h4) %判断h4是否为句柄
delete(h4);
h=1;
end
if h
axes('parent',handles.uipanel2) %重建一个axes
end
%------------------------------------------------
%axes(handles.axes1);
%axes('parent',handles.uipanel3)
subplot(221);
plot(x);
title('原始语音信号时域图')
xlabel('时间/S');
ylabel('幅度');
%figure(1)
%axes(handles.axes1);
%axes('parent',handles.uipanel2) %重建一个axes
%绘制频率响应图
%--------------------------------------------
% %subplot(2,1,1);
% % axes(handles.axes1);
% % axes('parent',handles.uipanel1)
subplot(222);
plot(w,20*log(Hf)); %幅值变换为分贝单位
title('离散系统幅频特性曲线')
xlabel('频率/HZ');
ylabel('幅度');
% % %----------------------
% axes(handles.axes4);
% axes('parent',handles.uipanel6)
subplot(223);
plot(w,Hx)
title('离散系统相频特性曲线')
xlabel('频率/HZ');
ylabel('相角');
% %figure(1)
% %freqz(x);
% %title('频率响应图');
% %---------------------------------------------
% %原始信号频谱
% axes(handles.axes3);
% axes('parent',handles.uipanel5)
% %figure(2)
subplot(224);
plot(f,abs(y1(1:512)));
%title('原始信号频谱','color','b');
title('原始语音信号频谱');
xlabel('频率/HZ');
ylabel('幅度/dB');
% ##############################################################
% 叠加噪声
%###############################################################
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%fs=22050;
% 读取音频文件
filename=strcat('data1.wav');
[x,fs]=audioread(filename);
ainfo = audioinfo(filename);
bits = ainfo.BitsPerSample;
p=audioplayer(x,fs,bits);
sound(x,fs,bits);
y1=fft(x,1024); %对信号做1024点FFT变换
f=fs*(0:511)/1024;
% %-------------------------------------------------------------
%加噪声
L=length(x); %计算音频信号的长度
%x1=rand(1,length(x)); %产生与x长度一致的随机信号
x1=0.1*randn(L,2);
x2=x1+x;
sound(x2);
y2=fft(x2,1024);
% %------------------------------------------------------------
global h1 h2 h3 h4;
h=0;
if ishandle(h1) %判断h1是否为句柄
delete(h1);
h=1;
end
if ishandle(h2) %判断h2是否为句柄
delete(h2);
h=1;
end
if ishandle(h3) %判断h3是否为句柄
delete(h3);
h=1;
end
if ishandle(h4) %判断h4是否为句柄
delete(h4);
h=1;
end
if h
axes('parent',handles.uipanel2) %重建一个axes
end
%------------------------------------------------
%axes(handles.axes1);
subplot(221);
plot(x);
title('原始语音信号时域图')
% %-----------------------------
subplot(222);
plot(x2);
title('加高斯噪声后的语音信号时域图')
xlabel('时间');
ylabel('幅度');
%-----------------------------
subplot(223);
plot(abs(y1));
title('原始语音信号频谱')
xlabel('HZ');
ylabel('幅度');
% %-----------------------------
subplot(224);
plot(abs(y2));
title('加噪声后的语音信号频谱')
xlabel('HZ');
ylabel('幅度');
% ##############################################################
% butterworth模拟滤波器
%###############################################################
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% 双线变换法设计巴特沃斯低通滤波器
% 读取音频文件
filename=strcat('data1.wav');
[x,fs]=audioread(filename);
ainfo = audioinfo(filename);
bits = ainfo.BitsPerSample;
p=audioplayer(x,fs,bits);
sound(x,fs,bits);
y1=fft(x,1024); %对信号做1024点FFT变换
f=fs*(0:511)/1024;
% %-------------------------------------------------------------
%加噪声
L=length(x); %计算音频信号的长度
%x1=rand(1,length(x)); %产生与x长度一致的随机信号
x1=0.1*randn(L,2);
x2=x1+x;
sound(x2);
y2=fft(x2,1024); %滤波处理前
%--------------------------------------------------------------
wp=0.1*pi;
disp(wp)
ws=0.4*pi;
disp(ws)
Rp=1;
Rs=15;
Fs=22050;
Ts=1/Fs;
%将模拟指标转换成数字指标
wp1=2/Ts*tan(wp/2);
ws1=2/Ts*tan(ws/2);
%选择滤波器的最小阶数
%[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');
%[N,Wn]=cheb2ord(wp1,ws1,Rp,Rs,'s'); %切比雪夫2
[N,Wn]=ellipord(wp1,ws1,Rp,Rs,'s'); %椭圆
disp(N)
disp(Wn)
%创建butter worth模拟滤波器
[Z,P,K]=buttap(N);
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
%用双线形变换法实现模拟滤波器到数字滤波器的转换
[bz,az]=bilinear(b,a,Fs);
f1=filter(bz,az,x2);
%----------------------------------------------------
%绘制频率响应曲线
[H,W]=freqz(bz,az);
%grid
%----------------------------------------------------
global h1 h2 h3 h4;
h=0;
if ishandle(h1) %判断h1是否为句柄
delete(h1);
h=1;
end
if ishandle(h2) %判断h2是否为句柄
delete(h2);
h=1;
end
if ishandle(h3) %判断h3是否为句柄
delete(h3);
h=1;
end
if ishandle(h4) %判断h4是否为句柄
delete(h4);
h=1;
end
if h
axes('parent',handles.uipanel2) %重建一个axes
end
%------------------------------------------------
%axes(handles.axes1);
subplot(2,2,1);
plot(x2);
title('滤波前的时域波形')
%-------------------------
subplot(2,2,2);
plot(f1);
title('滤波后的时域波形')
%-------------------------
%播放滤波后的信号
sound(f1);
F0=fft(f1,1024); %对信号做1024点FFT变换
f2=fs*(0:511)/1024;
%-------------------------
subplot(2,2,3);
plot(f2,abs(y2(1:512)));
title('滤波前的频谱')
xlabel('HZ');
ylabel('幅度');
%-------------------------
subplot(2,2,4);
plot(f2,abs(F0(1:512)));
title('滤波后的频谱')
xlabel('HZ');
ylabel('幅度');
%--------------------------
figure(1);
plot(W*Fs/(2*pi),abs(H))
title('椭圆滤波器频率响应曲线')
xlabel('频率/HZ');
ylabel('幅度/dB');
% ##############################################################
% 小波分解去噪
%###############################################################
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% 读取音频文件
filename=strcat('data1.wav');
[x,fs]=audioread(filename);
ainfo = audioinfo(filename);
bits = ainfo.BitsPerSample;
p=audioplayer(x,fs,bits);
sound(x,fs,bits);
y1=fft(x,1024); %对信号做1024点FFT变换
f=fs*(0:511)/1024;
% %-------------------------------------------------------------
%加噪声
%x0= x( : ,1) ;
l=length(x); %计算音频信号的长度
%x1=rand(1,length(x)); %产生与x长度一致的随机信号
x1=0.1*randn(l,2);
%x1=0.05*randn(1,l);
x2=x1+x;
x0= x2( : ,1) ;
%---------------------------------------------------
%利用小波函数bd6对信号进行3层分解
[C,L]=wavedec(x0',3,'db6');
%估计尺度1的噪声标准偏差
sigma=wnoisest(C,L,1);
alpha=2;
%获取消噪过程中的阈值
thr=wbmpen(C,L,sigma,alpha);
keepapp=1;
% 对信号进行消噪
yb=wdencmp('gbl',C,L,'db6',3,thr,'s',keepapp);
%------------------------------------------------
global h1 h2 h3 h4;
h=0;
if ishandle(h1) %判断h1是否为句柄
delete(h1);
h=1;
end
if ishandle(h2) %判断h2是否为句柄
delete(h2);
h=1;
end
if ishandle(h3) %判断h3是否为句柄
delete(h3);
h=1;
end
if ishandle(h4) %判断h4是否为句柄
delete(h4);
h=1;
end
if h
axes('parent',handles.uipanel2) %重建一个axes
end
%------------------------------------------------
%axes(handles.axes1);
subplot(2,1,1);
plot(x);
title('原始语言信号');
xlabel('时间');
ylabel('幅度');
subplot(2,1,2);
plot(yb);
title('去噪后的语言信号');
xlabel('时间');
ylabel('幅度');
[1]俞一彪,孙兵. 数字信号处理[M].南京东南大学出版社:, 201709.277.
[2]Ashok Kumar Konduru,J. L. Mazher Iqbal. Multidimensional feature diversity based speech signal acquisition[J]. International Journal of Speech Technology,2020,23(prepublish).
[3]林丽君,吴巧玲.基于LabVIEW和MATLAB的语音信号采集系统设计[J].成都大学学报(自然科学版),2019,38(04):405-408.
[4]Zhang Tao,Jiang Peipei,Zhang Yajuan. [Parkinson’s disease diagnosis based on local statistics of speech signal in time-frequency domain].[J]. Sheng wu yi xue gong cheng xue za zhi = Journal of biomedical engineering = Shengwu yixue gongchengxue zazhi,2021,38(1).
[5]何颖,边倩,张宝琪.车辆音频信号的时域特征方法分析研究[J].电子制作,2021(07):61-63.
[6]郑宇凡.浅谈FFT(快速傅里叶变换)算法及其应用[J].科技展望,2015,25(29):144.
[7]刘迪,胡美.高斯白噪声下非对称单稳态能量采集系统的随机响应分析[J/OL].山西大学学报(自然科学版):1-7[2021-07-03].https://doi.org/10.13451/j.sxu.ns.2021040.
[8]S. YAMAGUCHI,K. OIMATSU,T. SAEKI. A PRACTICAL PROBABILITY EXPRESSION FOR TRANSMITTED SOUND POWER OF A SINGLE WALL IN UNDERWATER TO NON-STATIONARY GAUSSIAN RANDOM NOISE[J]. Journal of Sound and Vibration,2001,240(5).
[9]Anirban Bhowmick,Mahesh Chandra. Speech enhancement using voiced speech probability based wavelet decomposition[J]. Computers and Electrical Engineering,2017,62.
[10]陆振宇,卢亚敏,夏志巍,黄现云.基于变分模态分解和小波分析的语音信号去噪方法[J].现代电子技术,2018,41(13):47-51.
[11]Arman Kheirati Roonizi,Christian Jutten. Improved smoothness priors using bilinear transform[J]. Signal Processing,2020,169.
[12]许志敏,魏海峰,陆彦如.基于Code Composer Studio的无限冲激响应滤波器(IIR)的设计[J].计算机与数字工程,2021,49(04):818-821.
[13]赵晓群,张洁.巴特沃斯低通滤波器的实现方法研究[J].大连民族学院学报,2013,15(01):72-75.
[14]MacCallum Julia K,Olszewski Aleksandra E,Zhang Yu,Jiang Jack J. Effects of low-pass filtering on acoustic analysis of voice.[J]. Journal of voice : official journal of the Voice Foundation,2011,25(1).
[15]Alemami Yahia,Mohamed Mohamad Afendee,Atiewi Saleh,Mamat Mustafa. Speech encryption by multiple chaotic map with fast fourier transform[J]. International Journal of Electrical and Computer Engineering (IJECE),2020,10(6).
[16]王涛,全海燕.低信噪比下联合训练生成对抗网络的语音分离[J].计算机工程与科学,2021,43(06):1088-1094.
[17]Muthumari Arumugam,Mala Kaliappan. Feature selection based on MBFOA for audio signal classification under consideration of Gaussian white noise[J]. IET Signal Processing,2018,12(6).
[18]Zhou Xiaohui,Gu Guiding. An algorithm of generating random number by wavelet denoising method and its application[J]. Computational Statistics,2021(prepublish).
[19]N. Arumugam,B. Paramasivan. An integrated FIR adaptive filter design by hybridizing canonical signed digit (CSD) and approximate booth recode (ABR) algorithm in DA architecture for the reduction of noise in the sensor nodes[J]. Multidimensional Systems and Signal Processing,2021(prepublish).
[20]Mohammadi Ali,Zahiri Seyed Hamid,Razavi Seyyed Mohammad,Suganthan Ponnuthurai Nagaratnam. Design and modeling of adaptive IIR filtering systems using a weighted sum-variable length particle swarm optimization[J]. Applied Soft Computing,2021(prepublish).
[21]杨旭,田潇颖,孙宏凯.基于MATLAB对含噪语音信号的降噪处理[J].中国新通信,2020,22(11):72.
[22]李静.基于MATLAB的语音信号采集和处理系统的设计[J].山西大同大学学报(自然科学版),2016,32(02):30-33.
[23]张芬.基于MATLAB的切比雪夫Ⅰ型语音滤波的实现[J].信息通信,2013(03):29-30.
[24]Ohnmar Win. IIR Filter Design for De Nosing Speech Signal using Matlab[J]. Journal of Trend in Scientific Research and Development,2019,3(3).
[25]Li Ping Zhen,Shao Wei Si. Research of Chebyshev Equivalent Ripple Approximation Filter Based on DSP[J]. Applied Mechanics and Materials,2012,1618.
[26]梁炯.5阶椭圆函数低通滤波器的仿真与应用[J].科技创新与应用,2021,11(16):83-87+91.
[27]李晴晴,汤振华,姜艳娜,蒋洁.基于椭圆逼近算法的低通IIR滤波器设计与实现[J].制导与引信,2021,42(01):1-5.
[30]胡航,语音信号处理 [M]. 哈尔滨工业大学出版社,2000 年 5 月
[31]李建文,王咿卜.多项式函数拟合实现汉语声调的语音合成[J].西安科技大学学报,2021,41(03):506-515.
[32]李昊璇,师宏慧,乔晓艳.融合声门波信号频谱特征的语音情感识别[J].测试技术学报,2017,31(01):8-16.
[33]赵改华,周彬,张雄伟.修正的基于广义Gamma语音模型语音增强算法[J].计算机工程与应用,2014,50(18):230-235.
[34]Jinghua Ou,Sam-Po Law. Induced gamma oscillations index individual differences in speech sound perception and production[J]. Neuropsychologia,2018,121.
[35]Shifeng Ou,Peng Song,Ying Gao. Laplacian Speech Model and Soft Decision Based MMSE Estimator for Noise Power Spectral Density in Speech Enhancement[J]. Chinese Journal of Electronics,2018,27(6).
[36]帅晓勇,陶黄林,吕敬祥.基于SPCE061A单片机的嵌入式语音识别系统设计[J].井冈山大学学报(自然科学版),2015,36(02):48-53.
[37]李建成,邴锐,赵有石.基于GUI的数字信号处理课程演示系统研究[J].电子科技,2015,28(04):76-79.
[38]卢正鼎,丰洪才.基于分段线性频谱弯折函数的说话人归一化方法[J].小型微型计算机系统,2004(12):2232-2236.
[39]Lauri Juvela,Bajibabu Bollepalli,Vassilis Tsiaras,Paavo Alku. GlotNet—A Raw Waveform Model for the Glottal Excitation in Statistical Parametric Speech Synthesis[J]. IEEE/ACM Transactions on Audio, Speech and Language Processing (TASLP),2019,27(6).
[40]Toya Teruki,Birkholz Peter,Unoki Masashi. Measurements of Transmission Characteristics Related to Bone-Conducted Speech Using Excitation Signals in the Oral Cavity.[J]. Journal of speech, language, and hearing research : JSLHR,2020,63(12).
[41]李建磊,马震,陈延萍.变阶数全极点声道模型及其在MPLPC中的应用仿真[J].声学与电子工程,2007(04):35-37+47.
[42]Lasota Martin,Šidlof Petr,Kaltenbacher Manfred,Schoder Stefan. Impact of the Sub-Grid Scale Turbulence Model in Aeroacoustic Simulation of Human Voice[J]. Applied Sciences,2021,11(4).
[43赵毅,尹雪飞,陈克安.一种新的基于倒谱的共振峰频率检测算法[J].应用声学,2010,29(06):416-424.
[44]韩芳,郑晶晶.基于LPC的共振峰检测改进算法[J].电子设计工程,2017,25(17):85-89.
[45]Guasch Oriol,Arnela Marc,Pont Arnau. Resonance tuning in vocal tract acoustics from modal perturbation analysis instead of nonlinear radiation pressure[J]. Journal of Sound and Vibration,2020(prepublish).
[46]吴树兴,刘新红.语音短时分析与合成的滤波器实现[J].信息与电脑(理论版),2019(15):50-52.
[47]罗海涛.语音信号的前期处理[J].福建电脑,2018,34(05):91-92.
[48]何卫国,饶金涛,李军,李雨励,黄金金.一种基于短时时域分析的侧信道信号预处理方法[J].通信技术,2020,53(06):1495-1498.
[49]Sopon Wiriyarattanakul,Nawapak Eua-anant. Pitch segmentation of speech signals based on short-time energy waveform[J]. International Journal of Speech Technology,2017,20(4).
[50]孙慧芳,龙华,邵玉斌,杜庆治.基于过零率及频谱的语音音乐分类算法[J].云南大学学报(自然科学版),2019,41(05):925-931.
[51]Qingyun Wang,Xin Chen,Ruiyu Liang,Haicheng Liu. A frequency-domain nonlinear echo processing algorithm for high quality hands-free voice communication devices[J]. Multimedia Tools and Applications,2021(prepublish).
[52]Jalal Karam. Theory and practice of wavelets in signal processing[J]. Int. J. of Machine Intelligence and Sensory Signal Processing,2014,1(2).
[53]林竞连.IIR滤波器的分析及音频提取[J].电子世界,2021(08):67-68.
[54]王为.《数字信号处理》课程中的数字滤波器实验设计[J].科技风,2021(02):61-62.
【非相关专业,理解不深,实为满足课程需要而作,仅供参考】
【原创不易,转载请标明出处:https://blog.csdn.net/xx970829/article/details/118443280】