
- 类 型
- 模拟信号处理,数字信号处理
- 应用学科
- 通信
- 中文名
- 信号处理
- 外文名
- signal processing
-
数字信号处理考试要点
2019-01-06 11:48:07数字信号处理考点整理试卷框架
一、填空题
10个空,每个2分,10x2=20
二、计算
三、设计
四、问答
一题(5分)至多两道复习要点
复习知识点
考点分类
1.IIR低通数字滤波器设计
脉冲响应不变法
双线性变换步骤
1.巴特沃思低通滤波器设计思路,基本步骤
1.1确定数字性能指标,频率指标
1.2求出模拟域的性能指标,边缘频率指标
1.3根据巴特沃思型幅度平方函数求模拟滤波器阶数N
1.4求通带截止频率wc
1.5求归一化巴型滤波器模拟域表征系统函数Han(s)
1.6由双线性变换把Han(s)变换到数字域系统函数h(z)2.双线性设计原理及优缺点
原理 数字滤波器频率响应和模拟滤波器频率响应做相似变换,使得角频率之间是单极映射,可以避免频率响应的混叠失真,其中omg=2/T tan(w/2),s=2/T*(z-1)/(z+1)
优点 可以避免频率响应的混叠失真
缺点 频率之间的变换是非线性的,计算复杂度高
A
B
C
步骤要清晰
2.FIR低通数字滤波器设计
各种窗函数
设计
①理想Hd(ejw)→hd(n)
②截短hd(n)
h(n)=hd(n)w(n) 窗函数
N 合适窗函数
③h(n)→H(ejw)→Hd(ejw)例题
3.FFT 8点 DIT 原理 信号流图 (8分)
4.DFT 与 DTFT 关系及z变换关系
几大公式 物理含义
w → k
DFT和DTFT关系:
一个序列的DFT,实际上就是这个序列的频谱(DTFT)在一个周期内等间隔抽样的样点值。
通过这种方法,我们可以通过DFT来观察序列频谱(DTFT)在一个周期内的样点,从而分析信号的频谱。
DFT和IDFT实际上就是DFS在一个周期上的取值。
5.系统函数,频率响应
幅频特性、相频特性、差分方程
重点解题知识
典型题
离散LTI系统的系统函数
6.数字信号系统流图直接型画法(符号+、-)
7.稳定、因果、左边、右边、双边
因果、稳定:
通过求单位脉冲响应h[k]
因果性:判断h[k]=0,k<0是否成立
稳定性:
化简难题:
左边、右边、双边:
8.z变换求解 z的反变换(部分分式,留数法)
h(n) H(z) x(t)/z x(z)z^n-1
9.时间分辨率,频率分辨率,信号最高截止频率
To、N、w、f、N、k 量纲
-
基于MATLAB的语音信号处理
2018-07-15 01:21:20基于MATLAB的语音信号处理摘要:语音信号处理是目前发展最为迅速的信息科学研究领域中的一个,是目前极为活跃和热门的研究领域,其研究成果具有重要的学术及应用价值。语音信号处理的研究,对于机器语言、语音识别、...基于MATLAB的语音信号处理
摘要:语音信号处理是目前发展最为迅速的信息科学研究领域中的一个,是目前极为活跃和热门的研究领域,其研究成果具有重要的学术及应用价值。语音信号处理的研究,对于机器语言、语音识别、语音合成等领域都具有很大的意义。MATLAB软件以其强大的运算能力可以很好的完成对语音信号的处理。通过MATLAB可以对数字化的语音信号进行时频域分析,方便地展现语音信号的时域及频域曲线,并且根据语音的特性对语音进行分析。本文主要研究了基于MATLAB软件对语音信号进行的一系列特性分析及处理,帮助我们更好地发展语音编码、语音识别、语音合成等技术。本文通过应用MATLAB对语音信号进行处理仿真,包括短时能量分析、短时自相关分析等特性分析,以及语音合成等。
关键词:语音信号;MATLAB;特性分析;语音合成
引言
人类交换信息最方便的、最快捷的一种方式是语言。在高度发达的信息社会中,用数字化的方法进行语音的识别、合成、增强、传送和储存等是整个数字化通信网中最重要、最基本的组成部分之一。数字电话通信、高音质的窄带语音通信系统、智能机器人、声控打字机、语言学习机、自动翻译机等,都要用到语音信号处理技术,随着现在集成电路和微电子技术的飞速发展,语音信号处理系统逐步走向实用化[1]。
语音信号处理是一个新兴的交叉学科,是语音和数字信号处理两个学科的结合产物。与认知科学、心理学、语言学、计算机科学、模式识别和人工智能学科有着密切的联系。语音信号处理技术的发展依赖于这些学科的发展,语音信号处理技术的进步也将促进这些领域的进展。语音信号处理目的是得到一些语音特征参数,以便高效的传输或存储,或通过某种处理以达到特定目的,如语音合成,辨识出讲话者、识别出讲话的内容等。随着现代科学技术和计算机技术的发展,除了人与人的自然语言的沟通,人机对话和智能机领域也开始使用语言。这些人造的语言拥有词汇,语法,语法结构和语义内容等。
语音信号处理的研究可以追溯到1876年贝尔电话的发明,其在真正意义上首次用声电,电声转换技术实现了远距离语音传输。 1939年Homer Dudley提出并研制成功第一个声码器,奠定了语音产生模型的基础,其在语音信号处理领域具有划时代的意义。在20世纪40年代,一种语言声学的专用仪器语谱图仪问世。它可以让你把语音的时变频谱用语图表示出来,得到一个“可见的语言”。 1984年哈斯金斯实验室研制成功语音回放机,此仪器可以自动转换手工绘制的语谱图成为语言,并进行语音合成。随着计算机的出现,语音分析技术可以在计算机上进行。此时语音信号处理无论是在基础研究或在技术应用,都已取得了突破性进展。现在语音信号可分为三个主要分支,即语音编码,语音识别和语音合成技术[10]。
语音编码技术。语音编码的目的就是在保证一定语音质量的前提下,尽可能降低编码比特率来节省频率资源。语音编码技术的研究开始于1939年, Homer Dudley提出并实现了在低带宽电话电报上传输语音信号的通道声码器,第一个研制成功了语音编码技术。到20世纪70年代,国际电联于1972年发布了64kbit/s脉冲编码调制(PCM)语音编码算法的G.711建议,它被广泛应用于数字交换机、数字通信等领域,从而占据统治地位。在1995年11月ITU-T SG15全会上共轭代数码激励线性预测(CS-ACELP)的8kbit/s语音编码G.729建议被通过,并于1996年6月ITU-T SG15会议上通过G.729附件A:减少复杂度的8kbit/s CS-ACELP语音编解码器,正式成为国际标准[1]。
语音识别技术。语音识别的研究开始于20世纪50年代贝尔实验室的Audry系统,它是第一个可以识别10个英文数字的语音识别系统, 1959年Fry和Denes等人采用频谱分析和模式匹配来进行识别决策构建音素识别器来辨别9个辅音和4个元音。20世纪60年代末单语音识别的研究取得实质性进展,并将其作为一个重要的课题。一方面是因为计算机的计算能力有了迅速的提高,计算机能够提供实现复杂算法的硬件、软件;另一方面,数字信号处理在当时有了蓬勃发展,从而自20世纪60年代末开始引起了语音识别的研究热潮。
语音合成技术。第一个合成器是在1835年由W.von Kempelen发明,经过Weston改进的机械讲话机。机器完全模仿人的生理过程,分别应用了特别设计的哨和软管模拟肺部空气动力和口腔。Homer Dudley在1939年发明了第一台电子语音合成器,它不是一个简单的生理过程的模拟,而是在电子电路基础上来实现语音产生源。本文关于语音信号处理方面主要研究了语音合成。语音合成已经在许多方面得到了实际应用,方便了人们的生活,创造了很好的经济效益和社会效益,如公共交通中的自动报站、各种场合的自动报警、电话自动查询服务、文本校对中的语音提示等。综观语言合成技术的研究,语音合成发展方向为提高合成语音的自然度、丰富合成语音的表现力、降低语音合成技术的复杂度等。
一、语音信号处理基本知识与仿真环境介绍
1.1 语音信号处理基本知识
1.1.1语音信号分析技术
语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理。而且,语音合成的音质好坏,语音识别率的高低,也都取决于对语音信号分析的准确性和精确性。因此语音信号分析在语音信号处理应用中具有举足轻重的地位。
贯穿于语音分析全过程的是“短时分析技术”。语音信号从整体来看其本质特征的参数是随时间而变化的,所以它是一个非稳态过程,不能用处理稳态信号的数字信号处理技术对其进行分析处理。但是,由于不同的语音是由人的口腔肌肉运动构成声道某种形状而产生的响应,而这种口腔肌肉运动相对于语音频率来说是非常缓慢的,所以从另一方面看,虽然语音倍号具有时变特性,但是在一个短时间范围内(一般认为在10~30ms的短时间内),其特性基本保持不变即相对稳定,因此可以将其看作是一个准稳态过程,即语音信号具有短时平稳性。所以任何语音信号的分析和处理必须建立在“短时”的基础上.即进行“短时分析”,将语音信号分为一段一段来分析其特征参数,其中每一段称为一“帧”,帧长一般取为10~30ms。这样,对于整体的语音信号来讲,分析出的是由每一帧特征参数组成的特征参数时间序列[4]。
根据所分析参数的性质的不同,可将语音信号分析分为时域分析、频域分析、倒领域分析等;时域分析方法具有简单、计算量小、物理意义明确等优点,但由于语音信号最重要的感知特性反映在功率谱中,而相位变化只起着很小的作用,所以相对于时域分析来说频域分析更为重要。
1.1.2语音信号处理理论依据
采样定理。在进行模拟/数字信号的转换过程中,当采样频率大于信号中最高频率的2倍时,采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍。采样定理又称奈奎斯特定理。
采样位数。采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。
采样频率。样频率是指计算机每秒钟采样多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。采样频率与声音频率之间有一定的关系,根据奈奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。
采样位数与采样频率的关系。采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度,每增加一个采样位数相当于力度范围增加了6dB,采样位数越多则捕捉到的信号越精确,对于采样率来说你可以想象它类似于一个照相机,44.1khz意味着音频流进入计算机时计算机每秒会对其拍照达441000次。显然采样率越高,计算机提取的图片越多,对于原始音频的还原也越加精确。
1.2 实现平台MATLAB 7.0介绍
1.2.1 MatLab软件基本介绍
MATLAB产生于1982年,是一种效率高、功能强的数值计算和可视化计算机高级语言,它将信号处理、数值分析和图形显示结合一体,形成了一个极其方便又强大的操作环境,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,代表了当今国际科学计算软件的先进水平[7]。
MATLAB7.0是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB 7.0 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
1.2.2 MatLab与语音处理的关系
MATLAB软件以其强大的运算能力可以很好的完成对语音信号的处理。通过MATLAB可以对数字化的语音信号进行时频域分析,方便地展现语音信号的时域及频域曲线,并且根据语音的特性对语音进行分析。例如,请浊音的幅度差别、语音信号的端点、信号在频域中的共振峰频率、加不同窗和不同窗长对信号的影响、LPC分析、频谱分析等[3]。
同时,通过MATLAB可以对数字化的语音信号进行估计和判别。例如,根据语音信号的短时参数,一级不同语音信号的短时参数的性质对一段给定的信号进行有无声和请浊音的判断、对语音信号的基音周期进行估计等。另外,通过利用MATLAB编程可以对语音信号进行各种处理。由于MATLAB是一种面向科学和工程计算的高级语言,允许用数学形式的语言编程,又有大量的库函数,所以编程简单、编程效率高、易学易懂,我们可以对信号进行加噪去噪、滤波、截取语音等,也可进行语音编码、语音识别、语音合成的处理等。总之,对于语音信号进行分析处理,MATLAB软件是当今比较高效的平台。
二、语音信号的特点与采集
2.1语音信号的特点分析
语音信号的特点可以分为时域方面和频域方面。
在时域内,语音信号具有“短时性”的特点,即在总体上,语音信号的特征是随着时间而变化的,但在一段较短的时间间隔内,语音信号保持平稳。
在频域内,语音信号的频谱分量主要集中在300~3400Hz的范围内。利用这个特点,可以按8kHz的采样率对语音信号进行采样,得到离散的语音信号。语音信号的这两种特点均可通过MATLAB软件表现出来,如图2.1和图2.2所示。
图2.1 语音信号时域图
图2.2 语音信号频域分析
2.2语音信号的采集
2.2.1语音信号的量化编码采样
在将语音信号进行数字化前,必须先进行防混叠预滤波,预滤波的目的有两个,一是抑制输入信导各领域分量中频率超出/2的所有分量(为采样频率),以防止混叠干扰;二是抑制50Hz的电源工频干扰。这样,预滤波器必须是一个带通滤波器,设其上、下截止颜率分别是和,则对于绝人多数语音编译码器,=3400Hz、=60~100Hz、采样率为=8kHz;而对于语音识别而言,当用于电话用户时,指标与语音编译码器相同。当使用要求较高或很高的场合时=4500Hz或8000Hz、=60Hz、=10kHz或20kHz。
为了将原始模拟语音信号变为数字信号,必须经过采样和量化两个步骤,从而得到时间和幅度上均为离散的数字语音信号。采样也称抽样,是信号在时间上的离散化,即按照一定时间间隔△t在模拟信号x(t)上逐点采取其瞬时值。采样时必须要注意满足奈奎斯特定理,即采样频率必须以高于受测信号的最高频率两倍以上的速度进行取样,才能正确地重建波它是通过采样脉冲和模拟信号相乘来实现的。
在采样的过程中应注意采样间隔的选择和信号混淆:对模拟信号采样首先要确定采样间隔。如何合理选择△t涉及到许多需要考虑的技术因素。一般而言,采样频率越高,采样点数就越密,所得离散信号就越逼近于原信号。但过高的采样频率并不可取,对固定长度(T)的信号,采集到过大的数据量(N=T/△t),给计算机增加不必要的计算工作量和存储空间;若数据量(N)限定,则采样时间过短,会导致一些数据信息被排斥在外。采样频率过低,采样点间隔过远,则离散信号不足以反映原有信号波形特征,无法使信号复原,造成信号混淆。根据采样定理,当采样频率大于信号的两倍带宽时,采样过程不会丢失信息,利用理想滤波器可从采样信号中不失真地重构原始信号波形。量化是对幅值进行离散化,即将振动幅值用二进制量化电平来表示。量化电平按级数变化,实际的振动值是连续的物理量。具体振值用舍入法归到靠近的量化电平上。
语音信号经过预滤波和采样后,由A/D变换器变换为二进制数字码。这种防混叠滤波通常与模数转换器做在一个集成块内,因此目前来说,语音信号的数字化的质量还是有保证的。市面上购买到的普通声卡在这方面做的都很好,语音声波通过话筒输入到声卡后直接获得的是经过防混叠滤波、A/D变换、量化处理的离散的数字信号。
2.2.2利用Windows录音器采集语音信号
在本次设计中,可以利用Windows自带的录音机录制语音文件,图2.3是基于PC机的语音信号采集过程,声卡可以完成语音波形的A/D转换,获得WAV文件,为后续的处理储备原材料。调节录音机保存界面的“更改”选项,可以存储各种格式的WAV文件。
图2.3 基于PC机的语音采集过程
第三章 语音信号的分析
3.1 语音信号的短时能量分析
一定时宽的语音信号,其能量的大小随时间有明显的变化。清音信号和浊音信号之间的能量差别相当显著。其中清音段(以清音为主要成份的语音段),其能量比浊音段小得多[10]。因此,对语音的短时能量进行分析,可以描述语音的这种特征变化情况。定义短时能量为如式(3-1)所示。
(3-1)
其中N为窗长。特殊地,当采用矩形窗时,可简化为如式(3-2)所示。
(3-2)
也可以从另外一个角度来解释。令
(3-3)
则 可表示为如式(3-4)所示。
(3-4)
可以理解为,首先语音信号各个样点值平方,然后通过一个冲击响应为h(n)的滤波器,输出为由短时能量构成的时间序列。
短时能量的计算直接受冲击响应的选择即窗函数的选择的影响。如果冲击响应的幅度是恒定的,它的序列长度N(即窗长)会很长,将其等效为非常窄的低通滤波器,这时冲击响应对 产生的平滑的作用比较明显,使短时能量基本没有很大的变化,将不能表现出语音的时变的特性。相反,如果冲击响应的序列长度过于小,等效窗就不能提供出够用的平滑,以导致语音的振幅在瞬时的变化的许多细节仍被留了下来,进而不能看出振幅包络变化的规律,一般我们要求窗长是几个基音周期的数量级。
图3.1为采样率8000kHZ,16位,单声道的一个语音信号(单词“earth”)在不同矩形窗长时的短时能量函数,我们会发现:语音信号的幅度变化在被短时能量所反映时,窗长的长短都有影响。图3.1 不同矩形窗长的短时能量函数我们知道,单词earth前半部分是浊音,后半部分是清音。由以上分析结果可知,浊音部分的能量较之清音部分要大得多,而清音部分的能量相当小,几乎为零。
对语音信号进行短时能量函数运算,可实现以下三点应用:
(1)可用于区分清音段与浊音段。En值大对应于浊音段,En值小对应于清音段。
(2)可用于区分浊音变为清音或清音变为浊音的时间(根据En值的变化趋势)。
(3)对高信噪比的语音信号,也可以用来区分有无语音(语音信号的开始点或终
止点)。无信号(或仅有噪声能量)时,En值很小,有语音信号时,能量显著增大。
3.2短时自相关分析
对于确定性信号序列,自相关函数定义如式(3-5)所示。
(3-5)
对于随机性信号序列或周期性信号序列,自相关函数的定义如式(3-6)所示。
(3-6)
自相关函数具有以下几项性质:
(1)若序列是周期性的,假设序列周期为 ,那么其自相关函数也是具有相同周期的周期函数,即
(2)自相关函数是偶函数,即R(k)=R(-k);
(3)当k=0时,自相关函数有极大值,即;
(4)R(0)为随机性序列的平均功率或确定性信号序列的能量。
自相关函数的上述性质,完全可以适用于语音信号的时域分析中。例如,浊音语音波形序列具有周期性,因此可用自相关函数求出这个周期,即是基音周期。此外,自相关函数也可用在语音信号的线性预测分析中。
短时自相关函数的定义如式(3-7)所示。
(3-7)
令 ,并且 ,可以得到如下式子,如(3-8)所示。
(3-8)
如图3.2是在不同的矩形窗窗长条件下单词earth的语音自相关的函数的波形。
对两图分析可得:清音信号的短时自相关函数的波形不具有周期性,也没有明显的峰值,且随着延时k的增大迅速变小,因此其接近于随机噪声;浊音是具有周期性的信号,浊音信号的周期为自相关函数的周期,由此可知,语音信号的性质是浊音还是清音,如果是浊音,还可以得出它的基音周期,它的基音周期可由自相关函数波形中的第一个峰值的位置来估计。所以,自相关函数常用作一下两种作用:
(1) 区分语音信号是清音还是浊音;
(2) 估计浊音语音信号的基音周期[4]。图3.2 不同的矩形窗窗长下短时自相关
第四章 语音合成
4.1 语音合成技术概述
4.1.1 语音合成技术的意义
语音合成技术涉及声学、语言学、数字信号处理技术、多媒体技术等多个领域, 是当今世界强国竞相研究的热门技术之一。语音合成技术可分为参数合成和波形拼接两种方法。早期的研究主要是采用参数合成方法, 它是计算发音器官的参数, 从而对人的发音进行直接模拟。语音合成已经在许多方面得到了实际应用,方便了人们的生活,创造了很好的经济效益和社会效益,如公共交通中的自动报站、各种场合的自动报警、电话自动查询服务、文本校对中的语音提示等[8]。
本文主要利用载波调制技术进行语音合成。基于载波调制的语音信号合成是以语音信号处理技术、数字信号处理技术为基础,依托于电子计算机、Windows操作系统、MATLAB处理软件等工具将两个信号合成为一个信号。具有较强的实用性、可操作性等特点。
4.1.2 基于载波调制语音合成的基本原理
语音信号合成是一个“分析—存储—合成”的过程。一般是选择合适的基本单元,将基本单元用一定的参数编码方式或波形方式进行存储,形成一个语音库。合成时,根据待合成语音信号,从语音库中取出基本单元进行合成,并将其还原成语音信号。在语音合成中,为了便于存储和后续分析,必须先将语音信号进行预分析、预处理、波形变换等一系列操作。其中,基元是语音合成处理的最小单元,待合成的语音库就是所有语音基元的某中集合。根据基元的选择方式以及其存储形式的不同,可以将合成方法笼统的分为波形合成方法和参数合成方法。
波形合成是一种相对简单的语音合成技术。它把人的发音波形直接存储或者进行进行简单的波形编码后存储,组成一个合成的语音库;合成时,根据待合成的信息,在语音库中取出相应单元的波形数据,拼接或编辑到一起,经过解码还原成语音。该语音合成技术具有一定的局限和不足,但对语音信号具有数据量庞大的特点,这种误差在某种范围内是可以接受的。
基于载波调制的语音信号合成是基于信号的振幅调制原理而实现的。将低频信号加载到高频载波信号的过程,或者说把信息加载到信息载体上以便传输的处理过程,称为调制。所谓“加载”,其实质是使高频载波信号(信息载体)的某个特性参数随信息信号幅值的大小程线性变化。基于载波调制的语音信号合成是以语音一信号作为调制信号,语音二信号为载波信号来进行合成一种以语音二信号声色表述语音一内容的新信号。这种调制方式是用传递的低频信号(如代表语言、音乐、图像的电信号)去控制作为传送载体的高频振荡波(称为载波)的幅度,是已调波的幅度随调制信号的大小线性变化,而保持载波的角频率不变。
4.2 基于载波调制的语音合成基本知识
4.2.1 关键函数希尔伯特变换介绍
本文语音合成的设计思路是用一个语音信号的包络去调制另一个语音信号,实现语音的合成。这就用到了一个关键的函数,希尔伯特变换。在数学与信号处理的领域中,一个实值函数的希尔伯特变换是将信号s(t)与1/(πt)做卷积,以得到s'(t)。因此,希尔伯特变换结果s'(t)可以被解读为输入是s(t)的线性时不变系统的输出,而此系统的脉冲响应为1/(πt)。这是一项有用的数学工具,用在描述一个以实数值载波做调制的信号之复数包络,出现在通讯理论中发挥着重要作用[9]。
希尔伯特变换的频域数学表达式如式(4-1)所示。
(4-1)
其中F是傅里叶变换,i是虚数单位,ω是角频率。
希尔伯特变换等效于 π/2的相移,对正频率产生-π/2的相移,对负频率产生π/2相移,或者说,在时域信号每一频率成分移位1/4波长,因此,希尔伯特变换又称为90度移相器。
MATLAB提供了计算Hilbert变换的函数,其格式为y=Hilbert(x)。但需注意的是,该函数计算出的结果是序列的解析信号,其虚部才是序列的Hilbert变换。
希尔伯特变换在语音信号处理中具有两个性质: 序列x(n)通过Hilbert变换器后,信号频谱的幅度不发生变化,这是因为Hilbert变换器是全通滤波器,引起频谱变化的只是其相位; 序列x(n)与其Hilbert变换是正交的[6]。
4.2.2 信号调制
所谓调制,就是将调制信号加载在三个参数中的某一个参数上,或幅值、或频率、或相位,随调制信号大小成线性或非线性变化的过程。主要有三种基本调制方法,第一种是把调制信号加载在载波信号的幅值上,称为幅度调制 ,简称AM;第二种是把调制信号加载在载波的频率上,称为频率调制,简称FM。 第三种是把调制信号装载在载波的相位上,称为相位调制,简称PM[10]。 本设计采用的是第一种方法,用采集到的语音二信号去对语音一信号进行幅度调制,实现语音合成的目的。
采用调幅调制是因为其以下特点在语音信号处理中得到很好的应用。一是调幅波的振幅(包络)随调制信号变化,而且包络的变化规律与调制信号波形一致,表明调制信号(信息)记载在调幅波的包络中;二是调制系数反应了调幅的强弱程度,一般情况下,调制系数越大调幅度越深。
当调制系数为0时,表示未调幅,即无调幅作用;
当调制系数为1时,此时包络的振幅最小值为0;
当调制系数大于1时,已调波的包络与调制信号不一样,产生严重的包络失真,称为过量调幅。
4.3 语音信号合成过程
4.3.1 语音信号合成流程图
用MATLAB 处理音频信号的基本流程是:先将WAV 格式音频信号经wavread 函数转换MATLAB 列数组变量;再用MATLAB 强大的运算能力进行数据分析和处理,如时域分析、频域分析、数字滤波、信号合成、信号变换、识别和增强等等;处理后的数据如是音频数据,则可用wavwrite函数 转换成WAV 格式文件或用sound、wavplay 等函数直接回放。本设计的语音合成流程图如图4.1所示。图4.1 语音信号合成流程图4.3.2 语音信号的采集
分析和处理音频信号,首先要对声音信号进行采集,MATLAB 的数据采集工具箱提供了一整套命令和函数,通过调用这些函数和命令,可直接控制声卡进行数据采集。Windows 自带的录音机程序也可驱动声卡来采集语音信号,并能保存为WAV 格式文件,供MATLAB 相关函数直接读取、写入或播放。本文以WAV 格式音频信号作为分析处理的输入数据。
4.3.3 语音信号的合成
声音信号是一种非平稳信号,如果采用简单的时变系统的分析方法,将会产生很大的失真,但是在一小段时间内声音信号完全可以视为平稳信号。因此必须对语音信号做预处理。在本次语音信号合成中采用加窗截断,分帧处理将非平稳信号近似转换为平稳信号。
声音信号特征量提取。声音信号特征量提取包括语音一声音信号声色(频率)的提取和语音二声音信号包络的提取。语音二声音信号包络的提取采用希尔伯特变换实现,得到语音二声音信号的复数包络。
获取语音信号起始位置。在录音过程中控制两段声音从相同的起点开始录取并不是一件容易的事,但是如果不确定语音信号的起始位置直接对语音信号进行合成既存在数据量大又会带来较大的误差。本设计语音合成中拟定连续四个时间点的语音信号强度不为0,则认为语音信号开始,也即找到信号起始位置。
语音信号合成。语音信号合成即是一个调幅载波的过程,是以语音一信号作为载波信号,语音二信号包络作为调幅信号来实现语音合成。实际的载波是一个物理可实现的复杂过程,本语音合成中采用语音一信号点乘包络信号,实际的载波是一个物理可实现的复杂过程,并非简单地乘积运算,然而,得到的合成声音信号效果并不理想,但其波形仍能反应载波过程的实质。
4.4 语音信号合成结果及分析
4.4.1 语音信号预处理结果及分析
该处理过程以语音一信号和语音二声音信号为分析样本。使用Windows系统自带录音器分别录下语音一和语音二,分别命名为one和two,保存为WAV格式。通过MATLAB对所录语音进行采样,采样频率 为16000Hz,获取语音信号并进行加窗。语音一和语音二的时域波形图如图4.2所示,时域图反映出了语音信号的非平稳性。
对采集到的语音信号分别做傅里叶变换进行频谱分析,并显示频谱图,观察各自的幅频谱特性。语音一和语音二的声音信号幅频特性如图4.3所示,语音一和语音二的声音FFT图如图4.2和图4.3。该频谱图横坐标并未进行对应关系处理,但仍不失其频谱特性的本质,由频谱图可清楚地看到样本声音主要以低频为主。人的语音信号频率一般集中在1kHz之前,从声音频谱的包络来看, 根据采样定理,信号宽度近似取为1kHz,重放语音后仍可较清晰的听出原声, 不存在声音混叠现象。图4.2 信号预处理之后时域图图4.3 信号预处理之后频域图4.4.2 合成语音信号结果及分析
合成语音信号的实质是用语音二信号的包络调制语音一信号振幅的结果。语音二信号包络提取结果如图4.4,该图是语音二信号经希尔伯特—黄变换的虚部显示,因为希尔伯特—黄变换是一个时域信号与1/(πt)的卷积,其结果是载波做调制信号之复数包络,必然蕴含虚部成分,取其虚部的结果必然与时域信号有着直观上的差别,但仍是信号的包络成分。图4.4 语音二信号包络图合成信号的时域显示结果如图4.5所示,该合成信号是以语音一信号的特性和语音二信号的幅度变化的,由其快速傅里叶变换的结果更证实了这一点,其幅频特性与语音一信号的幅频特性更接近。图4.5 合成语音信号的时域波形图4.6 合成语音信号的幅频特性图4.7 合成语音信号快速傅里叶变换结果
结 论
随着语音技术的逐渐成熟,语音信号处理技术也在不断发展,不断完善。本文主要研究了通过对语音信号短时能量、短时自相关等特性参数的分析,使我进一步了解了语音信号的特性,明白了只有准确分析并提取出语音信号的特征参数,才能够利用这些参数进行语音编码、语音合成等处理。另外在语音处理方面,我选择了语音合成这一处理方式。基于载波调制的语音处理实现简单,运用广泛,研究这一语音合成方法及特性,对于更加深入地进行各种语音处理有着重要的意义。这次设计我是通过了MATLAB这一平台,MATLAB软件以其强大的运算能力可以很好的完成对语音信号的处理,因此,近一步的加强对MATLAB的研究对我以后的学习会起到很大的帮助。
至此,设计基本符合要求。但是由于个人能力的有限,采集的语音信号清、浊音区分不明显,导致对语音进行短时自相关得出的波形特征不明显。考虑解决方案是通过专业的设备采集语音信号。除此之外,本设计必有其他欠妥之处,请各位老师给予指正!参考文献
[1] 张雪英.数字语音处理[M].北京:电子工业出版社, 2010.
[2] 郑君里,应启绗,杨为理.信号与系统[M].北京:高等教育出版社,2000.
[3] 薛年喜.MATLAB在数字信号处理中的应用[M].北京:清华大学出版社,2003.
[4] 胡航.语音信号处理[M].哈尔滨:哈尔滨工业大学出版社, 2000.
[5] 易克初,田斌,付强.语音信号处理[M].北京:国防工业出版社, 2000.
[6] 万永革.数字信号处理的MATLAB实现[M].北京:科学出版社,2007.
[7] 刘卫国. MATLAB程序设计与应用[M].北京:高等教育出版社,2006.
[8]王嘉梅.基于MATLAB的数字信号处理与时间开发[J].西安:西安电子科技大学出版社,2007:10-14.
[9] 程佩青.数字信号处理教程(第二版)[M].北京:清华大学出版社,2010.
[10] 韩纪庆 张磊 郑铁然.语音信号处理[M].北京:清华大学出版社,2004.
[11] 徐明远,邵玉斌. Matlab仿真在通信与电子工程中的应用[M].西安:西安电子科技大学出版社,2005.
[12] 邓华. Matlab通信仿真及应用实例详解[M].北京:人民邮电出版社,2005.
[13] 张照明,刘政波,刘斌等. 应用Matlab实现信号分析处理[C].北京:科学出版社,2006.
[14] 徐守时. 信号与系统理论方法和应用[M].合肥:中国科学技术大学出版,1999.[15] 高俊斌. Matlab语言与程序设计[M].武汉:华中理工大学出版社,1998.
附 录
附录A 语音信号特性分析程序
%语音信号时域频域显示% [y,Fs,bits]=wavread('biye.wav');%读出信号、采样率和采样位数 y=y(:,1);%取单声道 sigLength=length(y); Y=fft(y,sigLength); Pyy=Y.* conj(Y) / sigLength; halflength=floor(sigLength/2); f=Fs*(0:halflength)/sigLength; figure;plot(f,Pyy(1:halflength+1)); xlabel('Frequency(Hz)'); t=(0:sigLength-1)/Fs; figure; plot(t,y); xlabel('Time(s)'); %语音信号短时能量% x=wavread('biye.wav'); %x=fscanf(fid,'% f'); %fclose(fid); s=fra(50,25,x) s2=s.^2; energy=sum(s2,2) subplot(2,2,1) plot(energy); xlabel('帧数') ylabel('短时能量 E') legend('N=50') %axis({0,1500,0,10*10^5}) s=fra(100,50,x) s2=s.^2; energy=sum(s2,2) subplot(2,2,2) plot(energy); xlabel('帧数') ylabel('短时能量 E') legend('N=100') %axis({0,750,0,2*10^6}) s=fra(400,200,x) s2=s.^2; energy=sum(s2,2) subplot(2,2,3) plot(energy); xlabel('帧数') ylabel('短时能量 E') legend('N=400') %axis({0,190,0,7*10^6}) s=fra(800,400,x) s2=s.^2; energy=sum(s2,2) subplot(2,2,4) plot(energy); xlabel('帧数') ylabel('短时能量 E') legend('N=800') %axis({0,95,0,14*10^6}) %语音信号短时自相关% x=wavread('biye.wav'); s1=x(1:320); N=320; %选择的窗长,加N=320的矩形窗 A=[]; for k=1:320; sum=0; for m=1:N-(k-1); sum=sum+s1(m)*s1(m+k-1); %计算自相关 end A(k)=sum; end for k=1:320 A1(k)=A(k)/A(1); %归一化A(k) end N=160; %选择的窗长,%加N=160的矩形窗 B=[]; for k=1:320; sum=0; for m=1:N-(k-1); sum=sum+s1(m+k-1); %计算自相关 end B(k)=sum; end for k=1:320 B1(k)=B(k)/B(1); %归一化B(k) end N=70; %选择的窗长,加N=70的矩形窗 C=[]; for k=1:320; sum=0; for m=1:N-(k-1); sum=sum+s1(m)*s1(m+k-1); %计算自相关 end C(k)=sum; end for k=1:320 C1(k)=C(k)/C(1); %归一化C(k) end s2=s1/max(s1) figure(1) subplot(4,1,1) plot(s2) title('语音信号') xlabel('样点数') ylabel('幅值') axis([0,320,-2,2]) subplot(4,1,2) plot(A1) xlabel('延时k') ylabel('R(k)') axis([1,320,-2,2]); legend('N=320') subplot(4,1,3) plot(B1); xlabel('延时k') ylabel('R(k)') axis([1,320,-2,2]); legend('N=160') subplot(4,1,4) plot(C1); xlabel('延时k') ylabel('R(k)') axis([0,320,-2,2]); legend('N=70') 附录B 语音合成主程序 [y1,fs,bits]=wavread('one'); %读取语音一信号 [y2,fs,bits]=wavread('two'); %读取语音二信号 L1=length(y1); %测定语音一信号长度 L2=length(y2); %测定语音二信号长度 a1=y1.*hamming(L1); %加窗预处理 a2=y2.*hamming(L2); %加窗预处理 L1=length(a1); %测定语音一信号长度 L2=length(a2); %测定语音二信号长度 %采样信号的时域显示 figure(1); subplot(211); plot(a1); title('语音一载波信号时域波形'); subplot(212); plot(a2); title('语音二调幅信号时域波形'); %傅里叶频谱绘制 F1=fft(a1,L1); F2=fft(a2,L2); AF1=abs(F1); AF2=abs(F2); figure(2); subplot(211); plot(AF1); title('语音一载波信号幅频特性显示'); subplot(212); plot(AF2); title('语音二调幅信号幅频特性显示'); figure(3); freqz(F1); title('语音一载波信号FFT频谱显示'); figure(4); freqz(F2); title('语音二载波信号FFT频谱显示'); %获取语音一信号的开始位置 for i=1:L1-4 g(i)=a1(i).*a1(i+1).*a1(i+2).*a1(i+3).*a1(i+4);%认为连续4个幅值不为0的信号即为开始 if g(i)~=0 break; else i=i+1; end end I=i; % 获取语音二信号开始位置 for j=1:L2-4 m(j)=a2(j).*a2(j+1).*a2(j+2).*a2(j+3).*a2(j+4); if m(j)~=0 break; else j=j+1; end end J=j; %语音二信号hilbert变换 H=hilbert(a2); figure(5); plot(abs(H)); title('语音二信号包络显示'); %信号对齐,语音二包络调制语音一振幅 max1=max(I,J); for k=1:L1-max1 N(k)=a1(i).*H(j); i=i+1; j=j+1; end %N=N'; N = N/(max(abs(N)) * 1.05); wavwrite(N,16000,16,'HC.wav'); figure(6); plot(imag(N)); title('合成信号时域显示'); pause(1); sound(10*N,fs); FN=fft(N); figure(7); freqz(FN); title('合成声音信号FFT显示'); figure(8); plot(abs(FN)); title('合成声音信号的幅频特性');
-
MATLAB信号处理之信号的采样
2018-08-14 11:10:43所谓模拟信号的数字信号处理方法就是将待处理模拟信号经过采样、量化、编码形成数字信号,并利用数字信号处理方法对采样得到的数字信号进行处理。 下面我们来看一下具体代码 f=200; %信号频率为200Hz t=(0:0.0001:...所谓模拟信号的数字信号处理方法就是将待处理模拟信号经过采样、量化、编码形成数字信号,并利用数字信号处理方法对采样得到的数字信号进行处理。
下面我们来看一下对模拟信号采样的具体代码f=200; %信号频率为200Hz t=(0:0.0001:0.1); %定义信号的时间范围 x=cos(2*pi*f*t); %生成信号 fs=800; %采样频率为800Hz N=80; %定义采样点数 dt=1/fs; %采样间隔,采样间隔其实就可以理解为是采样信号的周期,周期=1/频率 T=(0:N-1)*dt; %定义采样的每个时间点 x1=cos(2*pi*f*T); %对信号进行采样 subplot(311); plot(t,x); ylim([-1 1]) title('原始信号') subplot(312) plot(t,x,T,x1,'rp'); ylim([-1 1]); title('采样过程') subplot(313) plot(T,x1); ylim([-1 1]) xlabel('时间/s') title('采样后的信号')
上面我们设定的采样频率和采样点数分别为800和80,他俩比值为10,在这里设定比值为10是为了在绘制采样过程那个图形时,让采样信号的最后一个采样点等于原始信号的最后一个时间点,以便显示的图形更加美观,我们也可以这样写fs=800; %采样频率为800Hz dt=1/fs; %采样间隔,采样间隔其实就可以理解为是采样信号的周期,周期=1/频率 T=0:dt:0.1; %定义采样的每个时间点 x1=cos(2*pi*f*T); %对信号进行采样
在这里我们略去了采样点数,直接让采样的最后一个时间点和原始信号的最后一个时间点一样,以便绘图更加美观
其实关于采样频率和采样点数的关系还是有一点门道的,他俩的比值决定了频率的分辨率,等我再深入了解一下再专门写一篇博客介绍一下。注:上图中所画的第三个图,也就是采样后的信号图,它不是由采样信号恢复到原信号所形成的信号,它只不过是把各个采样点给连接了起来而已,对于上面代码而言,原始信号为200Hz,采样信号为800Hz,800>200*2,由采样定理可知,我们所采取的采样频率可以恢复出原信号的波形,只不过在这里我们并没有写由采样信号恢复原信号的代码。
当然我们也可以用stem()函数来绘制采样图
f=20; %信号频率为20Hz t=(0:0.0001:0.1); %定义信号的时间范围 x=cos(2*pi*f*t); %生成信号 fs=400; %采样频率为400Hz dt=1/fs; %采样间隔,采样间隔其实就可以理解为是采样信号的周期,周期=1/频率 T=0:dt:0.1; %定义采样的每个时间点 x1=cos(2*pi*f*T); %对信号进行采样 subplot(211) plot(t,x) subplot(212) stem(T,x1)
-
数字信号处理--语音信号处理
2017-02-15 11:58:29在Matlab平台上语音信号处理摘 要
语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科。语音信号处理的目的是得到某些参数以便高效传输或存储,或者是用于某种应用。本设计利用计算机Windows下的录音机录入一句语音信号,在Matlab平台上对其进行时域分析和频域分析,并对所采集的语音信号加入干扰噪声,对加噪语音信号进行时域和频域分析,以确定加噪信号的频率分布情况,从而确定滤波器的相关参数。进一步用双线性变换法设计切比雪夫Ⅱ型的滤波器,然后对加噪的语音信号进行滤波处理。比较滤波前后的语音信号的时域和频域特性,回放加噪语音信号和去噪语音信号,从而分析滤波性能。
关键词:
Matlab,语音信号,时域分析,频域分析,滤波器
语音信号处理系统设计
一、课程设计的目的
1、学会MATLAB的使用,掌握基本MATLAB程序设计方法;
2、掌握数字信号处理的一些基本概念、基本理论和基本方法;
3、掌握在Windows环境下采集语言信号的方法;
4、掌握MATLAB设计IIR数字滤波器的方法;
5、掌握用MATLAB对信号进行分析和处理的方法;
二、设计要求及任务
-
语音信号的采集
本设计利用计算机Windows下的录音机录入一句语音信号,然后在Matlab软件平台下,利用函数waveread对语音信号进行采样,记住采样频率和采样点数。
-
语音信号的频谱分析
在Matlab中,可以利用函数FFT对信号进行快速傅里叶变换,得到信号的频谱特性,然后加入一干扰信号,要求画出语音信号干扰前后的时域波形,并对其频谱进行分析。
-
设计数字滤波器,给出性能指标(参考指标)
(1)低通滤波器的性能指标:fp=1000Hz,fs=1200Hz,As=100dB, Ap=1dB
(2)高通滤波器的性能指标:fs=4800Hz,fp=5000Hz,As=100dB, Ap=1dB
(3)带通滤波器的性能指标:fp1=1200Hz,fp2=3000Hz,fs1=1000Hz,
fps2=3200Hz,As=100dB,Ap=1dB;
采用双线性变换法设计上面一种类型的数字滤波器,要求使用切比雪夫II型滤波器。
-
用滤波器对信号进行滤波
画出滤波后信号的时域波形及频谱,并对滤波前后的信号进行对比,分析信号的变化。
-
回放语音信号,分析滤波前后的语音变化
在熟悉数字信号处理课程理论的基础上,通过MATLAB仿真实现语音信号的采集与处理,进一步加深对数字信号处理理论和技术的掌握。
三、课程设计平台
计算机、MATLAB6.5以上。
四、计原理与计算方法
-
卷积运算
卷积和乘积运算在频域和时域是一一对应的,两个信号在时域的卷积可以转化为求两者在频域的乘积后再反变换,同理在频域的卷积等时域的乘积。而信号的频域求解有快速傅里叶FFT算法。
卷积与傅里叶变换有着密切的关系。利用这一点性质,即两函数的傅里叶变换的乘积等于它们卷积后的傅里叶变换,能使傅里叶分析中许多问题的处理得到简化。
由卷积得到的函数f*g 一般要比f 和g 都光滑。特别当g 为具有紧支集的光滑函数,f 为局部可积时,它们的卷积f * g 也是光滑函数。利用这一性质,对于任意的可积函数f,都可以简单地构造出一列逼近于f 的光滑函数列,这种方法称为函数的光滑化或正则化。
卷积的概念还可以推广到数列、测度以及广义函数上去。
-
采样定理
采样定理,又称香农采样定理,奈奎斯特采样定理,是信息论,特别是通讯与信号处理学科中的一个重要基本结论。E.T.Whittaker(1915年发表的统计理论),克劳德·香农与Harry Nyquist都对它作出了重要贡献。另外,V.A.Kotelnikov也对这个定理做了重要贡献。
采样是将一个信号(即时间或空间上的连续函数)转换成一个数值序列(即时间或空间上的离散函数)。采样定理指出,如果信号是带限的,并且采样频率高于信号带宽的两倍,那么,原来的连续信号可以从采样样本中完全重建出来。
带限信号变换的快慢受到它的最高频率分量的限制,也就是说它的离散时刻采样表现信号细节的能力是有限的。采样定理是指,如果信号带宽不到采样频率的一半(即奈奎斯特频率),那么此时这些离散的采样点能够完全表示原信号。高于或处于奈奎斯特频率的频率分量会导致混叠现象。大多数应用都要求避免混叠,混叠问题的严重程度与这些混叠频率分量的相对强度有关。
-
双线性变换法设计IIR低通数字滤波器的基本原理
双线性变换法设计数字滤波器,采用了二次映射的方法,就是先将整个s平面压缩到s1平面的一个
的横形条带范围内,然后再将这个条带映射到z平面上,就能建立s平面到z平面的一一对应关系。对于低通数字滤波器,映射关系为
(1)
其中T为抽样周期。
用双线性变换法设计低通IIR数字滤波器的基本步骤,首先根据设计要求确定相应的模拟滤波器的传递函数
,再应用(1)式得数字滤波器的传递函数
(2)
通常可以给定的参数为:低通数字滤波器通带边界频率
、阻带边界频率
和对应的通带衰减函数
、阻带衰减函数
。s1平面中的模拟角频率
与数字角频率
的关系为线性关系
,在计算模拟滤波器的阶数N、极点si和传递函数
之前,应作预畸变处理
(3)
模拟滤波器的阶数N、极点si和传递函数
的计算方法与冲激响应不变法相同,可以采用Butterworth逼近或Chebyshev逼近。
Chebyshev 滤波器则比Butterworth 滤波器的截止特性要好,在期望通带下降斜率大的场合,应使用椭圆滤波器或切比雪夫滤波器。在MATLAB下可使用cheby2函数设计出切比雪夫II型IIR滤波器。但阻带处的幅值有振荡。对于数字滤波器而言,可以采用不同阶数逼近相应滤波器,滤波器性能还与滤波器的阶数有关,一般而言,阶数越高,则逼近越精确,但计算代价也随之上升,所以性能与代价总需要寻求一个平衡点。本设计用Chebyshev 滤波器。
-
双线性变换法设计IIR高通、带通、带阻数字滤波器的基本原理
由于双线性变换法获得的数字滤波器频率响应特性中不会出现混叠现象,因此可以适用于高通、带通和带阻滤波器的设计。IIR数字滤波器的设计通常要借助于模拟低通滤波器的设计,由原型低通滤波器到其他形式(高通、带通、带阻)IIR数字滤波器的频带变换有模拟频带变换法和数字频带变换法。
(1)模拟频带变换法
首先将给定的对数字滤波器(DF)的技术要求转换为一个低通模拟滤波器(AF)的技术要求,根据这种要求用某种逼近设计出原型的低通模拟滤波器(LP AF),计算出模拟滤波器的阶数N、极点si和传递函数
,再按照双线性变换的变换关系,将模拟滤波器的传递函数
转换为数字滤波器的传递函数
。
(2)数字频带变换法
首先将给定的对数字滤波器(DF)的技术要求转换为一个低通模拟滤波器(AF)的技术要求,用双线性变换法将原型的低通模拟滤波器(LP AF)映射为低通数字滤波器,再将数字低通滤波器根据相应的变换公式经频带变换到各型数字滤波器。
(3)IIR数字滤波器的设计
可利用MATLAB提供的函数直接设计相应的数字滤波器。
五、实验论证方案
本次课程设计是要对生活中常见的语音信号进行分析处理。信号分析处理要经过语音信号的采集、时域和频域波形的分析,设计干扰信号,原始信号和干扰信号的融合,IIR滤波器的设计,滤波等几个步骤。
-
语音信号的录入与打开
方案一:在Matlab中,waveread函数用于录入语音,语音必须是.wav格式。
方案二:在高版本的Matlab中,也可以使用audioread函数来替换waveread函数,语音格式可以是.mp3格式。
本次设计中我们使用的是Matlab 2010版,所以使用方案一进行语音信号的采集。
语音打开所用的函数为sound(y,fs,bits),用于对声音的回放,向量y表示语音信号,fs表示采样频率,bits表示采样位数。
-
语音信号的频域分析
本次课程设计主要对语音信号进行快速傅里叶变换(FFT)来分析其频域特性。
Matlab的信号处理工具箱中的函数FFT可用于对序列的快速傅里叶变换分析,其调用格式是y=fft(x,N),其中,x是序列,y是序列的FFT变换结果,N为整数,代表做N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x长度大于N,则截断x使之长度为N。
一般FFT程序中所用数据点数与原含有信号数据点数相同,这样的频谱图具有较高的质量,可减小因补零或截断而产生的影响。
-
干扰噪声的设计
噪声可以是随机产生的白噪声或者是正余弦噪声。通过分析可以得到原始语音信号的频率范围,为便于后续滤波器的设计我们设计的滤波器频率为11000。幅度选择0.017V,幅度大小合适。
方案一:正弦和余弦噪声的频谱是规则的两条竖线,频率和幅度可根据自己设定的参数进行调整,信号容易产生切杂波容易滤去。
方案二:Matlab中,随机产生的噪声用y=rand(a,b)实现,其噪声频谱是不规则的,且滤除时较困难。
为方便后续滤波器的设计,我们采用方案一的干扰噪声设计方法。
-
数字滤波器的设计
-
模拟滤波器原理
方案一:采用巴特沃斯滤波器。巴特沃斯滤波器的频率特性曲线,无论在通带内还是阻带内都是频率的单调函数。因此,当通带的边界处满足指标要求时,通带内肯定会有裕量。巴特沃斯滤波器通带、阻带均无波动,结构简单,阻带衰减速度较慢。同等条件下巴特沃斯滤波器的阶数最高。
方案二:采用切比雪夫滤波器。切比雪夫滤波器的幅频特性具有等波纹特性。有两种形式:在通带内等波纹、在阻带内单调的是切比雪夫I型滤波器,在通带内单调、在阻带内等波纹的是切比雪夫II滤波器。切比雪夫滤波器通带有波动,边带仍为单调上升函数,结构复杂,边带截止率可以做的较陡峭。切比雪夫滤波器和理想滤波器的频率响应曲线之间的误差最小。
本次设计我们选择阶数小,阻带等波纹的切比雪夫Ⅱ型的数字滤波器。
-
模拟滤波器数字化原理
模拟滤波器转化为数字滤波器在工程上常用的有冲激响应不变法和双线性变换法。
方案一:冲激响应不变法是一种时域上的转换方法,它是数字滤波器的单位取样响应在抽样点上等于模拟滤波器的单位冲激响应,这种方法s和z的关系是:。该方法的优点是频率坐标变换时线性的数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,时域特性逼近好;缺点是会产生频谱混叠现象,适合低通、带通滤波器的设计,不适合高通、带阻滤波器的设计。
方案二:双线性变换法为了克服频谱混叠现象,采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到π/T之间,再用转换到Z平面上。双线性变换法中,s和z的关系是:。该方法克服了频谱混叠现象,但带来了频率坐标变换的非线性:。
本次设计中需要分析频谱特性,为避免产生频谱混叠现象而且需要设计带阻滤波器,因而我们采用了方案二。
-
滤波器参数设计方案
按照之前的原始语音信号频谱图和所加入的噪声频率,对滤波器进行设计以及参数的确定。包括通带截止频率wp、阻带截至频率ws、通带最小衰减增益Ap,阻带最大衰减增益As。
本次设计的低通、带通、带阻三种滤波器加以分析: 其中带通滤波器是由高通滤波器和低通滤波器组成,带阻滤波器是由低通滤波器和高通滤波器组成,我们的原始语音信号主要集中在低频,所以三种滤波器都可以有效的滤除噪声。
六、实验结果及分析
利用MATLAB软件对语音信号进行频谱分析、对加入噪声的信号进行频谱分析、设计合适的滤波器滤除噪声。
-
语音信号的录入和分析
-
音频信号采样
用电脑所带的录音工具录制一段录音,使用waveread函数读取语音信号的数据,用sound函数播放语音。
程序如下:
%音频信号采样
[y1,fs,bit] = wavread('zhou.wav');
figure(1);
subplot(2,1,1);plot( y1 );
title( '原语音信号时域波形图' );
xlabel( '单位/t' );ylabel( '幅度' );
-
频谱特性分析:
利用MATLAB对语音信号进行FFT分析,并画出原语音信号的时域波形图和频谱特性图。
%采样后进行fft得到频域
N= length(y1);
f1= (0:N-1)*fs/N;
y2 = fft (y1,N);
subplot(2,1,2);plot( f1, abs(y2) );
axis([-10000 20000 0 15000]);
title( '原语音信号频域波形图' );
xlabel('单位/hz');ylabel('幅度');
-
运行结果如下:
图1-1原始语音信号频谱图及FFT频谱图
-
结果分析如下:
从图1-1可以看出,原始语音信号的频率基本上集中在5kHz以内。其中原始语音信号FFT频谱和原始语音信号频谱的区别是:前者是频率为1递增的频谱,而后者是以f1= (0:N-1)*fs/N递增,后者是在"不小于原始信号的频率(采样定理)"上完全展开的频谱。
-
加入噪声信号
-
干扰信号设计:
选取余弦函数产生一个噪声信号,其频率为1.1kHz。对加噪后的语音信号进行播放。
程序如下:
%所加的干扰信号
t=0:1/fs:(N-1)/fs;
y3=0.17*cos(2*pi*11000*t);
figure(2); subplot(2,1,1);plot(y3);
title( '干扰信号时域波形图' );
xlabel( '单位/t' ); ylabel( '幅度' );
-
干扰信号和原始信号的融合
程序如下:
%加噪后的语音信号
y1=y1(:,1); %将有y12维向量转化成1维向量
y3=y3'; %y1是行向量,y3是列向量,需转置
y5=y1+y3;
figure(3);subplot(2,1,1);plot(y5);
title( '加噪之后信号时域图' );
xlabel('单位/t');ylabel('幅度');
-
加噪后信号频域分析
对其做FFT,进行时域和频域的分析,比较加噪前后语音信号的波形及频谱。
程序如下:
y6= fft (y5);
subplot(2,1,2);plot( f1, abs(y6) );
axis([-10000 20000 0 50000 ]);
title( '加噪之后信号频谱图' );
xlabel('单位/hz');ylabel('幅度');
-
运行结果如下:
图2-1 加噪后的信号时域波形图
-
结果分析:
在加入频率为1.1kHz的余弦噪声后,绘制其时域波形图和频谱图,比较图1-1和图2-1可发现,频谱图可以直观的看出所加噪声的频率和谱线。在播放音频时可以明显听到有刺耳的噪声。
-
滤波器的设计
用双线性变换法设计了切比雪夫Ⅱ型低通、带阻、带通IIR滤波器,并分别绘制滤波器的幅频图。
-
切比雪夫Ⅱ型低通滤波器:
设计低通滤波器时所取通带截止频率取fp=4kHz,阻带截止频率取fs=8kHz,通带最大衰减波纹Rp=1,阻带最小衰减As=80。确定参数后用双线性变换法转换为数字低通滤波器 。
程序如下:
% 低通滤波器设计
wp=2*pi*4000/fs;ws=2*pi*8000/fs;
omegap=2*fs*tan(wp/2);
omegas=2*fs*tan(ws/2);
rp=1;as=80;
[N,omegaC]=cheb2ord(omegap,omegas,rp,as,'s');
[b,a]=cheby2(N,as,omegas,'s');
[bz,az]=bilinear(b,a,fs);
[h,w]=freqz(bz,az);
w0=[omegap,omegas];
hx=freqz(bz,az,w0);
dbhx=-20*log10(abs(hx));
figure(4);
subplot(2,1,1);plot(w/(2*pi)*fs,20*log10(abs(h)));
title('切比雪夫ii型低通滤波器幅频响应');
y7=filter(bz,az,y5);
figure(5);subplot(2,1,1);plot(y7);
title( '切比雪夫ii型低通滤波器滤波后之后信号时域图' );
xlabel('单位/t'); ylabel('幅度');
y8 = fft (y7);
subplot(2,1,2);plot(f1,abs(y8));
axis([-10000 20000 0 15000 ]);
title( '切比雪夫ii型低通滤波器滤波后之后信号频域图' );
图3-1 低通滤波器
图3-2 低通滤波器滤波后语音信号的频谱图
-
切比雪夫Ⅱ型带阻滤波器:
设计带阻滤波器时通带上截止频率取fp1=3kHz,通带下截止频率取fp2=20kHz阻带下截止频率取fs1=6kHz,阻带上截止频率取fs2=1.5kHz,,通带最大衰减波纹Rp=1,阻带最小衰减As=100。确定参数后做频率预畸变化,用双线性变换法转换为数字带阻滤波器。
程序如下:
%带阻滤波器
wp1=2*pi*3000/fs;wp2=2*pi*20000/fs;
ws1=2*pi*6000/fs;ws2=2*pi*15000/fs;
Rp=1;As=100;
T=1/fs;
omegap1=(2/T)*tan(wp1/2);
omegap2=(2/T)*tan(wp2/2);
omegap=[omegap1,omegap2];
omegas1=(2/T)*tan(ws1/2);
omegas2=(2/T)*tan(ws2/2);
omegas=[omegas1,omegas2];
[N,omegac]=cheb2ord(omegap,omegas,Rp,As,'s');
[b,a]=cheby2(N,As,omegas,'stop','s');
[bz,az]=bilinear(b,a,fs);
[H,w]=freqz(bz,az);
w0=[omegap,omegas];
hx=freqz(bz,az,w0);
dbhx2=-20*log10(abs(hx));
figure(8);
subplot(2,1,1);plot(w/(2*pi)*fs,20*log10(abs(H)));
title('切比雪夫ii型带阻滤波器幅度响应');
xlabel('单位/hz');ylabel('幅度/db');
y11=filter(bz,az,y5);
figure(9);subplot(2,1,1);plot(y11);
title( '切比雪夫ii型带阻滤波器滤波后之后信号时域图' );
xlabel('单位/t');ylabel('幅度');
y12 = fft (y11);
subplot(2,1,2);plot(f1,abs(y12));
axis([-10000 20000 0 15000 ]);
title( '切比雪夫ii型带阻滤波器滤波后之后信号频域图' );
xlabel('单位/t');ylabel('幅度');
程序运行结果如下:
图3-3 带阻滤波器
图3-4 带阻滤波器滤波后语音信号的频谱图
-
切比雪夫Ⅱ型带通滤波器:
设计带通滤波器时通带上截止频率取fp1=100Hz,通带下截止频率取fp2=4kHz,上阻带截止频率取fs1=10Hz,下阻带截止频率取fs2=10kHz,通带最大衰减波纹Rp=1,阻带最小衰减As=60。确定参数后做频率预畸变化,用双线性变换法转换为数字带通滤波器。
程序如下:
%带通滤波器
wp1=2*pi*100/fs;wp2=2*pi*4000/fs;
ws1=2*pi*10/fs;ws2=2*pi*10000/fs;
Rp=1;As=60;
T=1/fs;
omegap1=(2/T)*tan(wp1/2);
omegap2=(2/T)*tan(wp2/2);
omegap=[omegap1,omegap2];
omegas1=(2/T)*tan(ws1/2);
omegas2=(2/T)*tan(ws2/2);
omegas=[omegas1,omegas2];
[N,omegac]=cheb2ord(omegap,omegas,Rp,As,'s');
[b,a]=cheby2(N,As,omegas,'s');
[bz,az]=bilinear(b,a,fs);
[H,w]=freqz(bz,az);
w0=[omegap,omegas];
hx=freqz(bz,az,w0);
dbhx1=-20*log10(abs(hx));
figure(4);subplot(2,1,2);plot(w/(2*pi)*fs,20*log10(abs(H)));
title('切比雪夫ii型带通滤波器幅度响应');
xlabel('单位/hz');ylabel('幅度/db');
y9=filter(bz,az,y5);
figure(7);subplot(2,1,1);plot(y9);
title( '切比雪夫ii型带通滤波器滤波后之后信号时域图' );
xlabel('单位/t');ylabel('幅度');
y10 = fft (y9);
subplot(2,1,2);plot(f1,abs(y10));
axis([-10000 20000 0 15000 ]);
title( '切比雪夫ii型带通滤波器滤波后之后信号频域图' );
xlabel('单位/t');ylabel('幅度');
程序运行结果如下:
图3-5 带通滤波器
图3-6 带通滤波器滤波后语音信号频谱图
-
结果对比分析:
在切比雪夫Ⅱ型下设计的低通、带通、带阻三种滤波器中,分别将图3-2、3-4、3-6与图1-2比较后发现,三种滤波器都可以有效的达到滤波效果。其中滤波效果比较好的是带阻滤波器和低通滤波器,对原始语音影响最小,而带通滤波器效果是三种中最差的,因为带通滤波器的下阻带截止频率和通带下截止频率的取值会对原语音信号造成影响,使信号失真较多。
本次设计中Rp、As的取值是经过调试后能够使滤波器性能达到最优的值,通过调试可以得知,在设计滤波器中,阶数N越大,滤波器结构越复杂,精度越高,滤波效果越好。
七、课程设计中遇到的问题及解决方法
-
问题:对原始信号作频谱分析时,画出的频谱图关于横轴对称,且成镜像分布。
由于使用plot函数画图时没有使用abs(y)来取绝对值,所以频谱的幅值有正有负;而且没有设置横纵坐标轴的范围,所以横轴值过大,频谱成镜像分布。通过查阅plot函数使用格式,修改程序plot(f,abs(y)),添加坐标轴设置函数axis([x1 x2 y1 y2]);grid,解决问题。
-
问题:添加噪声时添加不上,且运行时有错误提示噪声不能直接与语音信号相加。
在Matlab中运行程序时,提示噪声与原语音不能直接使用"+"相加,上网查阅资料之后明白我们所录制的语音是二维的,而噪声是一维的,需要通过取原始语音信号的单声道信号和噪声信号相加,于是添加如下程序:
y1=y1(:,1);
y3=y3';
y5=y1+y3;
-
问题:在设置的余弦噪声中,频率与频谱图不相符,不清楚噪声的频率与频谱图是什么关系。
在频谱图中,按照理论噪声的频谱图应该与设置的频率相符,但我们最开始时设置的噪声频率与所画出的频谱图有较大差距,修改程序:f1= (0:N-1)*fs/N; 后所设置的频率即为频谱图上所显示的频率。
-
问题:设计带通滤波器时,下阻带截止频率和通带下截止频率始终会对原始信号造成影响。
调试参数时Rp、As与带阻和低通都有较大差距。将加噪后的语音信号经过带通滤波器,使滤波器滤除原始信号,留下噪声信号,再用加噪信号减去噪声信号可得到原始语音,多次调整fp1和fs1使其到最佳数值,尽量减少对原始噪声的影响。
八、课程设计总结
通过这次课设,使我对滤波器有了更深的认识,特别是滤波器参数对滤波器性能的影响,因为通带截止频率、阻带截止频率、通带衰减、阻带衰减都要影响滤波器的阶数,而滤波器的阶数越大,其选频特性就越好。并且不同的滤波器类型可达到的滤波效果也不同,要根据衰减系数选择合适的滤波器。
在做这次课设的过程中,也遇到了些困难,尤其是GUI界面的设计。由于起初对GUI界面设计不了解,花费了些时间在学习使用方面,例如希望可以在界面中播放滤波前后的信号,才知道不同的function是独立执行的,如果想在一个function中使用其他function中变量的值,则需要用save和load来分别保存和调用变量。
这次课设使我认识到matlab软件功能的强大,可以完成各类信号处理相关的功能,我的这个课题只是小小的一部分,今后我还需更加努力完善自己,用会,用精matlab来分析解决问题,将理论联系实际,获得更大提高。
这期间遇到了很多困难和问题,但是通过自己的探索也学到了很多东西,不仅重新复习了书本上滤波器部分的原理,对其有了新的理解,而且又学到了很多书上没有的知识。通过程序编写过程中产生的各种各样的错误提示,亲自动手去查资料才知道错误所在,也正是这个探索的过程让我有了更大的进步。但设计中还存在很多不足的地方,比如设计的滤波器方法和类型比较单一,没有做更多的滤波效果比较。
通过这次课程设计,我深刻体会到应用Matlab进行语音信号处理与我们所学课程及专业的紧密关联,也让我体会到理论与实际的结合的重要性和两者之间的差别,也学到了课堂上学不到的东西。
九、参考文献
[1] 高西全、丁玉美编著,数字信号处理。西安:西安电子科技大学出版社,2008.
[2]丁玉美、高西全编著,数字信号处理学习指导。西安:西安电子科技大学出版社,2001.
[3]郑君里等编,信号与系统。北京:高等教育出版社,2000.
[4]刘树棠译,数字信号处理——使用MATLAB。西安:西安交通大学出版社,2002.
[5]导向科技编著,MATLAB程序设计与实例应用。北京:中国铁道出版社,2001.
[6]罗军辉等编著,MATLAB7.0在数字信号处理中的应用。北京:机械工程出版社,2005.
[7]陈怀琛等编著,MATLAB及在电子信息课中的应用。北京:电子工业出版社,2002.
[8]胡广书编组,数字信号处理——理论、算法与实现。北京:清华大学出版社,2002.
[9]梁虹等编,信号与线性系统分析——机遇MATLAB的方法与实现。北京:高等教育出版社,2006.
[10]刘卫国主编,MATLAB程序设计与应用(第二版)。北京:高等教育出版社,2006.
-
-
语音信号处理
2019-05-27 01:16:01文章目录语音信号处理第一章 绪论第二章 语音信号处理基础知识语音和语言汉语语音学汉语的声母和韵母汉语音节的一般结构汉语声母的结构语音生成系统和语音感知系统语音信号生成的数学模型激励模型声道模型辐射模型 ... -
QML中的信号槽(信号与信号处理程序)
2019-02-26 21:53:55slots)是Qt框架的核心机制,Qt C++中的槽函数对应QML中的信号处理程序(signal handler)。 信号是事件(event),信号通过信号处理程序响应。发出信号时,将调用相应的信号处理程序。在处理程序中放置诸如脚本或... -
Linux — 信号 信号处理和信号处理函数详解(一)
2017-07-03 11:49:28信号处理(一)在Linux下当我们想强制结束一个程序的时候,我们通常会给它发送一个信号然后该进程捕捉到信号,再然后该进程执行一定操作最终被终止.信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号... -
C语言信号处理
2017-08-13 16:39:46C语言信号处理 -
数字信号处理-时域离散随机信号处理
2014-12-05 09:01:58谁有数字信号处理-时域离散随机信号处理 丁玉美的课后题的上机作业答案? 尤其是第二章 维纳滤波和卡尔曼滤波课后的上机作业题编程答案? 如有发到我的QQ邮箱:1621297486@qq.com或者给我地址我自己下载! 非常感谢! -
matlab信号处理
2016-08-31 12:00:57////////////////////////////////matlab信号处理//////////////// 数字信号处理基本理论 在计算机中,所有的信号都是离散信号,因此在使用 MATLAB 进行信号处理之前,首 先要了解离散时间信号处理的相关理论。 ... -
数字信号处理期末总复习
2020-05-30 10:59:10基于教材:《数字信号处理——原理、实现及应用(第3版)》 高西全等 编著 一、基本概念 1.1 信号 1.2 系统 1.3 卷积 1.4 差分方程 二、傅里叶变换 2.1 连续信号:CTFT和CTFS 2.2 时域离散信号:DTFT和DTFS 2.3 周期... -
信号处理中为什么用复信号——使信号处理中的频带减少一半
2018-03-21 18:10:03信号处理中为什么用复信号 (2013-03-24 18:25:55)标签: 杂谈分类: 信号处理 此文章已于 18:28:13 2013/3/24 重新发布到 senlinlaoren的博客信号处理中为什么用复信号 【何人(公司)所著】:Richard ... -
MATLAB信号处理
2018-09-18 20:54:45这周在学堂在线学习了MATLAB信号处理方面的知识,作以下总结: 1.小波分解与重构:(离散二进正交小波变换) a:逼近系数(平滑系数),d:细节系数(小波系数) 原信号s经1层小波分解:a1,d1;2层小波分解:a2... -
数字信号处理——绪论总结
2020-09-13 16:50:59数字信号处理绪论总结,包括介绍背景;信号处理、数字信号处理;数字信号处理学科概览;数字信号处理的特点;数字信号处理的局限性;数字信号处理的应用。 -
阵列信号处理综述
2018-01-03 14:14:51 阵列信号处理作为信号处理的一个重要分支,在通信、雷达、声纳、地震勘探和射电天文等领域内获得了广泛应用和迅速发展。阵列信号处理将一组传感器按一定方式布置在空间不同位置上,形成传感器阵列。用传感器阵列... -
医疗电生理信号处理 心电信号 脑电信号
2016-09-28 08:32:47数字医疗行业,人体电生理信号,一维信号处理 ,心电信号,血氧信号,脉搏波信号,脑电波信号,肌电信号,心音信号, 血氧容积波信号等等的初始及后期处理。 相关资料的深入探讨及共享。 +Q群 医疗生理信号处理 ... -
MATLAB数字信号处理(2)LFM脉冲雷达回波处理仿真
2019-03-13 15:41:24主要优点是脉冲压缩的形状和信噪比对多普勒频移不敏感,即在目标速度未知的情况下,用匹配滤波器仍可以实现回波信号的脉冲压缩,这将大大有利于雷达对目标的探测和信号处理效率的提高。本设计实现了对线性调频(LFM... -
信号处理为什么引入复信号
2019-01-20 16:46:24信号处理引入复信号的原因只是一个——方便数学处理和计算(不需要进行和差化积)。实际信号不存在复信号,只存在实信号,将复信号按照数学规律叠加即可 得到实信号。 对复数信号进行采样需要同时进行I、Q两路... -
阵列信号处理
2016-07-05 14:31:41阵列信号处理, 主要是计算多路信号之间相关性,来定位声源或者计算期望信号。 -
Linux信号处理
2017-02-24 14:01:48大家应该都了解当我们在Linux下面运行程序时,如果程序跑飞了,那我们可以通过Ctrl-C来终止掉跑飞的程序,其实,当我们按下Ctrl-C时,涉及到了信号的相关处理工作,所以,今天我们就来谈一谈Ctrl-C被后的信号处理吧... -
SIGPIPE信号处理
2018-01-11 20:10:27SIGPIPE信号处理 今天写程序遇到这个问题,搜索一番之后觉得该文较好,于是转了过来。 SIGPIPE信号详解 当服务器 close 一个连接时,若 client 继续向服务器发数据,根据 TCP 协议的规定,客户端会收到一个 RST... -
Linux中信号与信号处理
2017-01-02 13:50:26Linux中信号与信号处理 信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式。在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某种程序发生了什么事件... -
MATLAB语音信号处理
2019-10-05 07:12:34数字信号处理课设,我们使用MATLAB对语音信号进行了一系列处理,并将其所有功能集中于下图界面中: 这个界面涉及功能众多,其中包括语音信号的观察分析、音色变换、AM调制解调、减抽样、加噪去噪、相频分析和幅频... -
Python频域信号处理
2019-08-03 22:20:33FFT(快速傅立叶变换),是数字信号处理中一种很重要的方法。傅立叶原理表明:任何连续测量的时域或信号,都可以表示为不同频率的正弦信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以... -
数字信号处理框架
2019-10-04 15:23:19一、数字信号处理的系统框图 (1)前置滤波器:限制进入信道的频率(抗混叠滤波器)(低通滤波器) (2)A-D转换器:将模拟信号转换为数字信号:采样(严格的满足采样定理)、量化(一个值代替某一段的值)、编码 ... -
【信号处理】信号处理中的FFT后的意义及常用处理方法
2018-04-19 11:17:50信号处理的基础知识,备忘,真的是看了好多次忘了好多次!首先感谢一下forward博主,之前每次都看他《FFT结果的物理意义》这篇博文。----------------------------------------------------------------------------... -
数字信号处理概述(整理《学以致用·深入浅出数字信号处理》)
2018-09-29 21:42:23数字信号处理是什么 数字信号处理兴起和发展的起因: 计算机的发明:数字信号处理的任务就是用计算机来处理现实世界中的信号 FFT算法的出现:信号在时域和频域展现不同的特性,傅立叶变换就是信号从时域通向频域... -
嵌入式语音信号处理入门篇
2020-01-18 22:17:36刚接触语音信号处理,是从下面这几个概念开始的,这几个概念明白了,基本上也就明白原始的语音信号是什么,也就是知道我们要处理啥样的信号了。 等这篇文章的内容明白后,就可以开始进入正题。 PCM和WAV PCM(Pulse ... -
Labview心电信号处理
2020-05-11 11:03:41利用LabVIEW为开发平台,设计一套虚拟心电数据分析系统,该系统具有心电信号处理分析,波形显示、心率显示及报警等功能。 程序框图设计 1.数据文件的读取 MIT-BIH数据库中的数据有8种数据格式,而应用最多的是其中的...
-
Linux如何察看一个进程内存的信息.zip
-
linux 内存池三方库 用了他你就不需要自己编写内存池了.zip
-
(新)备战2021软考系统集成顺利通关套餐
-
(新)备战2021软考系统集成学习套餐
-
阿里巴巴开发手册-最新版.pdf
-
C/C++编程全家桶(Daozy极限编程)
-
(新)备战2021软考网络规划设计师终极解密套餐
-
【数据分析-随到随学】SPSS调查问卷统计分析
-
MySQL性能优化的最佳经验.zip
-
Mybatis2
-
Zabbix-分布式监控平台部署-2.LNMP部署
-
(新)备战2021软考网络工程师历年真题培训套餐
-
visual c++ vc内存池源代码,用于分配固定大小的内存,速度超快又方便.zip
-
CentOS 7 安装PHP 5.4.16
-
网页设计与制作实例教程源码.rar
-
python办公自动化技巧
-
阿里巴巴-大数据工程师必读手册.pdf
-
grbl 源代码 配置部分翻译中文
-
国家注册信息安全工程师体系课程(CISP-PTE)
-
残差