基于MATLAB的语音信号的频谱分析
基于MATLAB语音信号频谱分析
基于MATLAB语音信号频谱分析-语谱图(2012-03-01 15:48:00)转载▼分类:信号处理标签:语音信号语谱图频谱分析matlab杂谈目前已经有成熟的MATLAB程序(参考文献1)进行语音信号的频谱分析,但是该程序中对信号分帧的部分采用的算法有一些复杂,为了更方便大家理解,降低编程的难度,我利用标准的语音工具箱voicebox中的enframe分帧命令替换了原来的程序。
我的程序如下:首先,编写一个频谱分析的函数,其中Winsiz: 定义帧长, 一般应取2 的幂次, 其目的是适合FFT 的要求。
通过对Winsiz的选值可实现宽带频谱或窄带频谱的选择。
Shift: 定义帧移值。
一般此值小于或等于Winsiz。
Shift 值越小, 时域分辨率越高。
Base: 基准电平值。
注意, 此值的设定需根据实际经验, 可以通过在多次运行此程序中给出不同的Base 值, 观察所获得的频谱图的视觉和分辨率效果, 选择一个合适的Base 值, 如果没有特别要求, 可取默认值Base=0。
Mode: 定义显示模式。
1 伪彩色映射, 0 为灰度映射function sogram1(Winsiz,Shift,Base,Mode,Gray);[x,Fs]=wavread('npu.wav');n=fix((length(x)-Winsiz)/Shift)+1;A=zeros(1+Winsiz/2,n);s=enframe(x,Winsiz,Shift);fori=1:nz=fft(s(i,:));z=z(1:(Winsiz/2)+1);z=z.*conj(z);z=10*log10(z);A(:,i)=z;endL0=(A>Base);L1=(A<Base);B=A.*L0 +Base*L1;L=(B- Base)./(max(max(B))- Base);y=[0:Winsiz/2]*Fs/Winsiz;x=[0:n-1]*Shift;if Mode==1colormap('jet' );elsemymode =gray;mymode =mymode (Gray: - 1:1,:);colormap(mymode);endimagesc(x,y,L);axisxy;然后,编写主程序,输入相应的参数,得到语谱图:close all;sogram1(2048,128,0,1,64);文献中得程序得到的语谱图如图一所示:图-1修改后得到语谱图如图2图-2可以明显看出,改进后的程序更加清晰,且能够分析出更加细微的高频成分。
实验二基于MATLAB分析语音信号频域特征
实验二 基于MATLAB 分析语音信号频域特征一、实验目的信号的傅立叶表示在信号的分析与处理中起着重要的作用。
因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。
另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项物理现象。
由于语音信号是随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源激励的线性系统的输出。
输出频谱是声道系统频率响应与激励源频谱的乘积。
声道系统的频率响应及激励源都是随时间变化的,因此一般标准的傅立叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。
由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。
本实验要求掌握傅里叶分析原理,会利用已学的知识,编写程序估计短时谱、倒谱,画出语谱图,并分析实验结果,在此基础上,借助频域分析方法所求得的参数分析语音信号的基音周期或共振峰。
二、实验原理1、短时傅立叶变换由于语音信号是短时平稳的随机信号,某一语音信号帧的短时傅立叶变换的定义为:()()()jwjwmn m X e x m w n m e∞-=-∞=-∑ (1.1)其中w(n-m)是实窗口函数序列,n 表示某一语音信号帧。
令n-m=k',则得到(')'()(')(')jwjw n k n k X e w k x n k e∞--=-∞=-∑ (1.2)于是可以得到()()()jw jwnjwkn k X e ew k x n k e∞-=-∞=-∑ (1.3)假定()()()jwjwkn k X e w k x n k e∞=-∞=-∑ (1.4)则可以得到()()jw jwn jw n n X e e X e -= (1.5)同样,不同的窗口函数,将得到不同的傅立叶变换式的结果。
由上式可见,短时傅立叶变换有两个变量:n 和ω,所以它既是时序n 的离散函数,又是角频率ω的连续函数。
基于matlab实现语音信号频谱分析
目录第1章课题的设计要求、目的、意义 (3)1.1课题的设计要求: (3)1.1.1.信号采集 (3)1.1.2.构造受干扰信号并对其进行FFT频谱分析 (3)1.1.3.数字滤波器设计 (3)1.1.4.信号处理 (3)1.1.5.设计图形用户界面 (3)1.2课题的设计目的与意义: (3)第2章课程设计报告内容 (4)2.1理论依据 (4)2.2信号采集 (4)2.3构造一个正弦干扰信号来干扰语音信号 (4)2.4数字滤波器设计 (4)2.5信号处理 (4)2.6具体指标 (4)2.7设计图形用户界面 (4)第3章设计理论依据 (5)3.1采样定理 (5)3.2采样频率 (5)第4章图形用户界面制作及Matlab实现 (6)4.1 按钮、静态文本和编辑器的使用 (6)4.1.1打开guide (6)4.2 按钮与程序的联系 (8)第5章调试及分析 (8)5.1打开信号。
(8)5.2声音播放,同时显示波形。
(9)5.3语音信号的频谱、幅度和相位。
(10)5.3.1频谱。
(10)5.3.2幅度。
(10)5.3.3相位。
(11)5.4加噪声后的语音信号波形。
(12)5.5加噪声后的语音信号的频谱、幅度和相位。
(12)5.5.1频谱。
(12)5.5.2幅度。
(13)5.5.3相位。
(13)5.6信号通过FIR滤波器后的波形。
(14)5.7信号通过FIR滤波器后的频谱、幅度和相位。
(15)5.7.1频谱。
(15)5.7.2幅度。
(16)5.7.3相位。
(16)5.8信号通过IIR滤波器后的波形。
(17)5.9 信号通过IIR滤波器后的频谱、幅度和相位。
(18)5.9.1频谱。
(18)5.9.2幅度。
(18)5.9.3相位。
(19)5.10信号通过巴特沃斯滤波器后的波形。
(20)5.11 信号通过巴特沃斯滤波器后的频谱、幅度和相位。
(21)5.11.1频谱。
基于Matlab的DFT及FFT频谱分析
基于Matlab的DFT及FFT频谱分析基于Matlab的DFT及FFT频谱分析一、引言频谱分析是信号处理中的重要任务之一,它可以揭示信号的频率特性和能量分布。
离散傅里叶变换(DFT)及快速傅里叶变换(FFT)是常用的频谱分析工具,广泛应用于许多领域。
本文将介绍通过Matlab进行DFT及FFT频谱分析的方法和步骤,并以实例详细说明。
二、DFT及FFT原理DFT是一种将时域信号转换为频域信号的离散变换方法。
它将信号分解成若干个正弦和余弦函数的叠加,得到频率和幅度信息。
FFT是一种高效的计算DFT的算法,它利用信号的对称性和周期性,将计算复杂度从O(N^2)降低到O(NlogN)。
FFT通过将信号分解成不同长度的子序列,递归地进行计算,最终得到频谱信息。
三、Matlab中的DFT及FFT函数在Matlab中,DFT及FFT可以通过内置函数进行计算。
其中,DFT使用函数fft,FFT使用函数fftshift。
fft函数可直接计算信号的频谱,fftshift函数对频谱进行频移操作,将低频移到频谱中心。
四、Matlab中DFT及FFT频谱分析步骤1. 读取信号数据首先,将待分析的信号数据读入到Matlab中。
可以使用内置函数load读取文本文件中的数据,或通过自定义函数生成模拟信号数据。
2. 时域分析通过plot函数将信号数据在时域进行绘制,以观察信号的波形。
可以设置合适的坐标轴范围和标签,使图像更加清晰。
3. 信号预处理针对不同的信号特点,可以进行预处理操作,例如去除直流分量、滤波等。
这些操作可提高信号的频谱分析效果。
4. 计算DFT/FFT使用fft函数计算信号数据的DFT/FFT,并得到频谱。
将信号数据作为输入参数,设置采样频率和点数,计算得到频谱数据。
5. 频域分析通过plot函数将频谱数据在频域进行绘制,观察信号的频率特性。
可以设置合适的坐标轴范围和标签,使图像更加清晰。
6. 结果解读根据频谱图像,分析信号的频率成分、幅度分布和峰值位置。
基于MATLAB实现对语音信号频谱分析
的起点移至 处截取信号 ,再做傅里叶变换而得到
的一个频谱函数。这是直接将频率轴方向来理解的。
另一种解释是从时间轴方向来理解,当频率固定时,
例如
,则
可以看作是信号经过一个中心频
率为 的带通滤波器产生的输出。这是因为窗口函数
通常具有低通频率响应,而指数 对语音信号
有调制的作用,使频谱产生移位,即将 频谱中
对应于频率 的分量平移到零频。
3、短时傅里叶反变换(倒谱分析)
傅里叶变换建立了信号从时域到频域的变换桥
梁,而傅里叶反变换则建立了信号从频域到时域的
变换桥梁这两个域之间的变换为一对一映射关系。
我们知道,
可以看作是加窗后函数的傅里叶变
换,为了实现反变换,将
进行频率采样,即令
图2 频谱分析过程
,则有
2、短时傅里叶变换(频谱分析)
公司推出的一种面向工程和科学计算的交互式计算软 的录音机功能可以用麦克风直接录制一段女声“世界
件,它以矩阵运算为基础,把计算、可视化、程序设 上最遥远的距离不是生与死,而是我就站在你面前
计融合到了一个简单易用的交互式工作环境中。同时 你确不知道我爱你”,并保存为WAV 格式文件,供
由于Matlab是一个数据分析和处理功能十分强大的工程 MATLAB 相关函数直接读取、写入或播放。本文以
三、语音信号分析及MATLAB的实现 1、语音信号的频谱分析过程 傅里叶频谱分析是语音信号频域分析中广泛采用的 一种方法。语音波是一个非平稳过程,因此适用于周 期、瞬变或平稳随机信号的标准傅里叶变换不能直接 表示语音信号,而应该用短时傅里叶变换对语音信号 的频谱进行分析,相应的频谱称为“短时谱”。 进行频谱分析时,在时域数据进行短时FFT处理之 前都要进行加窗处理。在FFT处理之后,普通频谱分析 可以进行频域上的滤波处理,从而使频谱更加平滑。 最后IFFT处理观察恢复后的时域信号图形,频谱分析过 程(如图2所示)。
matlab对语音信号的频谱分析及滤波资料
一.综合实验题目应用MatLab对语音信号进行频谱分析及滤波二.主要内容录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;课程设计应完成的工作:1、语音信号的采集;2、语音信号的频谱分析;3、数字滤波器的设计;4、对语音信号进行滤波处理;5、对滤波前后的语音信号频谱进行对比分析;三.具体要求1、学生能够根据设计内容积极主动查找相关资料;2、滤波器的性能指标可以根据实际情况作调整;3、对设计结果进行独立思考和分析;4、设计完成后,要提交相关的文档;1)课程设计报告书(纸质和电子版各一份,具体格式参照学校课程设计管理规定),报告内容要涵盖设计题目、设计任务、详细的设计过程、原理说明、频谱图的分析、调试总结、心得体会、参考文献(在报告中参考文献要做标注,不少于5篇)。
2)可运行的源程序代码(电子版)四.进度安排在基本要求的基础上,学生可根据个人对该课程设计的理解,添加一些新的内容。
五.成绩评定(1)平时成绩:无故旷课一次,平时成绩减半;无故旷课两次平时成绩为0分,无故旷课三次总成绩为0分。
迟到15分钟按旷课处理(2)设计成绩:按照实际的设计过程及最终的实现结果给出相应的成绩。
(3)设计报告成绩:按照提交报告的质量给出相应的成绩。
课程设计成绩=平时成绩(30%)+设计成绩(30%)+设计报告成绩(40%)目录第一节实验任务 (3)第二节实验原理 (3)2.1 采样频率、位数及采样定理 (3)2.2 时域信号的FFT分析 (4)2.3 IIR数字滤波器设计原理 (4)2.4 FIR数字滤波器设计原理 (4)第三节实验过程 (5)3.1原始语音信号采样后的时域、频域分析 (5)3.2采样后信号的FFT变换分析 (7)3.3双线性变换法设计IIR数字滤波器 (8)3.4窗函数法设计FIR数字滤波器 (11)第四节心得体会 (14)第五节参考文献 (15)应用MatLab对语音信号进行频谱分析及滤波第一节实验任务录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号。
应用Matlab对含噪声语音信号进行频谱分析及滤波
应用Matlab对含噪声语音信号进行频谱分析及滤波频谱分析是对信号的频率特性进行研究和描述的一种方法,而滤波是对信号进行去除或者强调特定频率成份的处理。
在语音信号处理中,频谱分析及滤波常用于去除噪声、增强语音信号的清晰度和可听度。
Matlab作为一种强大的科学计算软件,提供了丰富的工具和函数用于频谱分析和滤波。
下面将详细介绍如何使用Matlab对含噪声语音信号进行频谱分析及滤波的步骤和方法。
1. 导入语音信号首先,我们需要将含噪声的语音信号导入到Matlab中进行处理。
可以使用Matlab提供的`audioread()`函数读取语音文件,并将其存储为一个向量。
```matlab[y, Fs] = audioread('noisy_speech.wav');```其中,`y`是读取到的语音信号向量,`Fs`是采样率。
如果语音文件的采样率不是默认的16kHz,可以使用`resample()`函数调整采样率。
2. 绘制时域波形为了对语音信号有一个直观的了解,可以绘制其时域波形图。
使用Matlab的`plot()`函数可以实现这一目标。
```matlabt = (0:length(y)-1)/Fs;plot(t, y);xlabel('Time (s)');ylabel('Amplitude');title('Time Domain Waveform');```这段代码将绘制出含噪声语音信号的时域波形图,横轴表示时间,纵轴表示信号的幅值。
3. 进行频谱分析频谱分析可以匡助我们了解语音信号在不同频率上的能量分布情况。
在Matlab 中,可以使用`fft()`函数对语音信号进行傅里叶变换,得到其频谱。
```matlabN = length(y);Y = fft(y);P = abs(Y).^2/N;f = Fs*(0:(N/2))/N;plot(f, 10*log10(P(1:N/2+1)));xlabel('Frequency (Hz)');ylabel('Power (dB)');title('Power Spectrum');```上述代码将绘制出含噪声语音信号的功率谱图,横轴表示频率,纵轴表示功率(以分贝为单位)。
利用MATLAB软件对音频信号进行频谱分析与处理
利用MATLAB软件对音频信号进行频谱分析与处理一、简介频谱分析是通过对信号的频率成分进行分析,它允许我们了解信号的特性,计算信号的能量分布,同时还可以用来定位造成干扰的频率组件,以及检测和分析信号的变化。
MATLAB是一种编程语言和科学计算软件,它可以非常便捷地实现对音频信号的频谱分析和处理。
二、实现方法1.导入音频信号在使用MATLAB进行频谱分析时,首先需要先将音频信号导入MATLAB环境中。
可以使用audioplayer和audioread函数来完成这一步骤,示例代码如下:[audioData, fs] = audioread(‘AudioFile.wav’);player = audioplayer(audioData, fs);play(player);其中audioData表示从wav文件中读取的音频数据,fs表示采样率,player表示存储audioData和fs的audioplayer实例,play函数可以播放音频文件。
2.信号预处理针对所记录的音频信号,需要进行一些基本的信号处理操作,包括去噪、均衡、时域平均等。
去噪可以用MATLAB内置的函数完成,例如:audioData_NoiseRemoved = denoise(audioData,‘meanspectrum’);均衡是指将频谱的一些区域调整到更好的水平,可以用equalizer函数实现:audioData_Equalized = equalizer(audioData, ‘bandwidth’, 0.2);时域平均则可以使用conv函数实现:audioData_Meaned = conv(audioData, [1/N 1/N ... 1/N]);3.频谱分析频谱分析的主要工作是计算信号的谱密度,也就是每一个频率分量的能量。
应用Matlab对语音信号进行频谱分析及滤波
数字信号处理课程设计报告书应用Matlab对语音信号进行频谱分析及滤波题目:应用Matlab 对语音信号进行频谱分析及滤波一、课程设计内容录制一段个人自己的语音信号,画出此语音信号的时域波形和频谱图;给定滤波器的性能指标,设计IIR 和FIR 滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。
二、课程设计目的1、进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;2、增强应用Mat lab 语言编写数字信号处理的应用程序及分析、解决实际问题的能力。
三、设计内容及步骤1、语音信号的采集利用matlab 的内置函数,设计一个录音器,录制一段自己的话音,时间在1s 内。
然后在Matlab 软件平台下,利用函数w avread 提取录制的语音信号,记住采样频率和采样点数。
说明:由于录音程序录制后用w avwrite 和w avrec ord 时一直出现错误,无法运行,在这里用[filen ame,filepath]=uig etfile('.w av','Open w av file'); [y,fs,nbits]=w avread([filepath,filen ame]);格式打开本地一个已录制好的w av 文件进行分析。
2 、语音信号的频谱分析首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。
3、设计数字滤波器和画出其频率响应用窗函数法和双线性变换法设计下面要求的3种滤波器。
(1)低通滤波器性能指标通带截止频率c f =1000Hz ,阻带截止频率st f =1200 Hz ,通带最大衰减1δ=1dB ,阻带最小衰减2δ=100d B 。
(2)高通滤波器性能指标通带截止频率c f =5000Hz ,阻带截止频率st f =3000 通带衰减1δ≤1dB ,阻带衰减2δ≥100d B 。
基于matlab语音信号频谱分析
第三章 图形用户界面设计
3.1 图形用户界面概念
图形用户界面或图形用户接口(Graphical User Interface,GUI)是指采用 图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行界面相 比,图形界面对于用户来说更为简便易用。
GUIDE 是 Matlab 提供的图形用户界面开发环境,提供了一系列用于创建图 形用户界面的工具,从而简化界面布局和编程工作。
2
计指标,FIR 滤波器所要求的阶数可以比 IIR 滤波器高 5~10 倍,结果,成本较 高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则 IIR 滤波 器就必须加全通网络进行相位较正,同样要大增加滤波器的节数和复杂性。
整体来看,IIR 滤波器达到同样效果阶数少,延迟小,但是有稳定性问题, 非线性相位;FIR 滤波器没有稳定性问题,线性相位,但阶数多,延迟大
3.2 图形用户界面设计
1.GUI 设计模板 在 MATLAB 主窗口中,选择 File 菜单中的 New 菜单项,再选择其中的 GUI 命令,就会显示图形用户界面的设计模板。 MATLAB 为 GUI 设计一共准备了 4 种模板,分别是 Blank GUI(默认) 、GUI with Uicontrols(带控件对象的 GUI 模板) 、GUI with Axes and Menu(带坐标轴与菜 单的 GUI 模板)与 Modal Question Dialog(带模式问话对话框的 GUI 模板)。 当用户选择不同的模板时,在 GUI 设计模板界面的右边就会显示出与该模板 对应的 GUI 图形。 2.GUI 设计窗口 在 GUI 设计模板中选中一个模板,然后单击 OK 按钮,就会显示 GUI 设计窗 口。选择不同的 GUI 设计模式时,在 GUI 设计窗口中显示的结果是不一样的。 GUI 设计窗口由菜单栏、工具栏、控件工具栏以及图形对象设计区等部分组 成。GUI 设计窗口的菜单栏有 File、Edit、View、Layout、Tools 和 Help 6 个 菜单项,使用其中的命令可以完成图形用户界面的设计操作。 3.GUI 设计窗口的基本操作 在 GUI 设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性
MATLAB的语音信号频谱分析报告
. . . .幅值时间(s )信号波形信号频谱数字角频率幅度123-1-0.500.51幅度时间(s )2:1减抽样信号波形00.51 1.521000200030002:1减抽样信号频谱数字角频率w幅度0.51 1.5幅度时间(s )5:1减抽样信号波形00.51 1.525:1减抽样信号频谱数字角频率w幅度实验一[y,fs,bit]=wavread<'I do'>%读取音乐片段,fs 是采样率 size<y>%求矩阵的行数和列数y1=y<:,1>;%对信号进行分列处理n1=length<y1>;%取y 的长度t1=<0:n1-1>/fs;%设置波形图横坐标 figuresubplot<2,1,1>;plot<t1,y1>; %画出时域波形图 ylabel<'幅值'>; xlabel<'时间〔s'>; title<'信号波形'>;subplot<2,1,2>;Y1=fft<y1>;w1=2/n1*<0:n1-1>;%设置角频率 plot<w1,abs<Y1>>;%画频谱图 title<'信号频谱'>; xlabel<'数字角频率'>; ylabel<'幅度'>; grid on ;sound<y,fs>;实验二[y,fs,bit]=wavread<'I do'> y1=y<:,1>; n1=length<y1>; D=2;%设置抽样间隔 y2=y1<1:D:n1>;%减抽样n2=length<y2>;%减抽样后信号长度 t2=<0:n2-1>/fs;%设置横坐标 figuresubplot<2,2,1>;plot<t2,y2>; %绘制减抽样信号波形图 ylabel<'幅度'>; xlabel<'时间〔s'>;title<'2:1减抽样信号波形'>;Y2=fft<y2>; %对y2进行n2点fft 谱分析 w2=2/n2*[0:n2-1]; subplot<2,2,3>;plot<w2,abs<Y2>>;%绘制减抽样信号频谱图 title<'2:1减抽样信号频谱'>; xlabel<'数字角频率w'>; ylabel<'幅度'>;246-1-0.500.51时间(s)幅度调制后信号246时间(s)幅度调制后信号100020003000数字角频率w幅度调制后信号的频谱(高频率调制)数字角频率w幅度调制后信号的频谱(低频率调制)grid on ;sound<y2,fs/D>; D=5;%设置抽样间隔 y3=y1<1:D:n1>;%减抽样n3=length<y3>;%减抽样后信号长度 t3=<0:n3-1>/fs;%设置横坐标 subplot<2,2,2>;plot<t3,y3>; %绘制减抽样信号波形图 ylabel<'幅度'>; xlabel<'时间〔s'>;title<'5:1减抽样信号波形'>;Y3=fft<y3>; %对y2进行n2点fft 谱分析 w3=2/n3*[0:n3-1]; subplot<2,2,4>;plot<w3,abs<Y3>>;%绘制减抽样信号频谱图 title<'5:1减抽样信号频谱'>; xlabel<'数字角频率w'>; ylabel<'幅度'>; grid on ;sound<y3,fs/D>实验三[y,fs,bit]=wavread<'I do'> y1=y<:,1>; n1=length<y1>; n3=0:n1-1;b1=cos<0.75*pi*n3>;%设置调制信号 b2=cos<0.5*pi*n3>;c1=b1'.*y1;%对原信号进行调制 c2=b2'.*y1; lc1=length<c1>; t=<0:lc1-1>/fs;figure %用载波对信号进行调制,并对其做fft 变换 subplot<2,2,1> %获取频谱,从图中可以观察到,调制后的 plot<t,c1>; %信号频谱发生搬移 xlabel<'时间<s>'>; ylabel<'幅度'>;title<'调制后信号'>;subplot<2,2,2> %获取频谱,从图中可以观察到,调制后的 plot<t,c2>; %信号频谱发生搬移 xlabel<'时间<s>'>; ylabel<'幅度'>;title<'调制后信号'>;w1=2/lc1*[0:lc1-1];%设置角频率W-1-0.50.51音频时间幅度0120200040006000频谱频率/pi 幅度AM 调制音频信号时间幅度12AM 调制频谱频率/pi幅度x 105-1-0.500.51时间幅度AM 解调音频信号012100020003000AM 解调频谱频率/pi幅度C1=fft<c1>; C2=fft<c2>; subplot<2,2,3> plot<w1,abs<C1>>;xlabel<'数字角频率w'>; ylabel<'幅度'>;title<'调制后信号的频谱<高频率调制>'>; grid on ;subplot<2,2,4> plot<w1,abs<C2>>;xlabel<'数字角频率w'>; ylabel<'幅度'>;title<'调制后信号的频谱<低频率调制>'>; grid on ;sound<c1,fs>;实验四clear all ;cla;close all [a,fs,bit]=wavread<'I do'>; y1=a<:,1>;%去单列数据进行分析 f1=fft<y1>; n=length<f1>; tn=<0:n-1>/fs; w=2/n*[0:n-1]; %sound<y1,fs>; figure<1>subplot<2,3,1>;plot<tn,y1>;grid on ;title<'音频'>;xlabel<'时间'>; ylabel<'幅度'>; subplot<2,3,4>;plot<w,abs<f1>>; grid on ; title<'频谱'>; xlabel<'频率/pi'>;ylabel<'幅度'>; t=[0:n-1]; y2=cos<pi*1/2*t>;%载波函数 y3=y1.*y2';%信号调制 ty3=<0:length<y3>-1>/fs; subplot<2,3,2>;plot<ty3,y3>;%绘制调制后信号波形图 grid on ;title<'AM 调制音频信号'>; xlabel<'时间'>;H 低通滤波器波形ylabel<'幅度'>;f3=fft<y3>;n2=length<f3>;w2=2/n2*[0:n2-1];subplot<2,3,5>;plot<w2,abs<f3>>;%绘制调制后信号频谱图grid on;title<'AM调制频谱'>;xlabel<'频率/pi'>;ylabel<'幅度'>;%解调后信号n3=length<y3>t2=0:n3-1;y4=cos<pi*1/2*t2>y5=y3.*y4';%解调后的信号函数subplot<2,3,3>;plot<t2,y5>;grid on;xlabel<'时间'>;ylabel<'幅度'>;title<'AM解调音频信号'>;f5=fft<y5>;w3=2/n3*[0:n3-1];subplot<2,3,6>;plot<w3,abs<f5>>;%绘制解调后信号频谱图grid on;title<'AM解调频谱'>;xlabel<'频率/pi'>;ylabel<'幅度'>;%设计巴特沃斯滤波器进行滤波去噪[N1,wc1]=buttord<0.05,0.17,1,15>;%确定低通滤波器的阶数和截止频率;[b,a]=butter<N1,wc1>;%确定低通滤波器分子分母系数[H,W]=freqz<b,a>;figure<2>plot<W,abs<H>>;%低通滤波器波形xlabel<'w'>;ylabel<'H'>;title<'低通滤波器波形'>;m=filter<b,a,y5>;wavplay<m,fs>;lm=length<m>;%滤波后信号长度tm=<0:lm-1>/fs;%设置横坐标wm=2/lm*[0:lm-1];M=fft<m>;figure<3>subplot<2,1,1>;plot<tm,m>;grid on;矩形窗滤波后音频0100020003000矩形窗滤波后频谱布莱克曼窗滤波后音频布莱克曼窗滤波后频谱x 10-4-0.100.10.20.3矩形窗时域矩形窗频域-0.100.10.20.3布莱克曼窗时域布莱克曼窗频域0123456t 幅度00.20.40.60.81 1.2 1.4 1.6 1.82100020003000滤波后波形频谱图w/pi 幅度title<'滤波后波形'>; xlabel<'t'>; ylabel<'幅度'>;subplot<2,1,2>;plot<wm,abs<M>>;title<'滤波后波形频谱图'>;xlabel<'w/pi'>; ylabel<'幅度'>;%矩形窗和布莱克曼窗 N=33;wc=0.3*pi;%基于经验的指标,其中N hd=ideal<N,wc>;%调用理想低通滤波器函数 w1=boxcar<N>;%产生各种窗函数 w2=blackman<N>;h1=hd.*w1';%加窗设计各种FIR 滤波器h2=hd.*w2'; th1=<0:32>/fs; th2=<0:32>/fs; M=21184; fh1=fft<h1,M>;%矩形窗频谱函数 w=2/M*[0:M-1]; fh2=fft<h2,M>;%布莱克曼窗频谱函数 figure<4>subplot<2,2,1>;plot<th1,h1> title<'矩形窗时域'>;subplot<2,2,2>;plot<w,abs<fh1>>; title<'矩形窗频域'>; subplot<2,2,3>;plot<th2,h2>; title<'布莱克曼窗时域'>;subplot<2,2,4>;plot<w,abs<fh2>>; title<'布莱克曼窗频域'> %解调后信号n3=length<y3>t2=0:n3-1; y4=cos<pi*1/2*t2>y5=y3.*y4';%调制后的信号函数figure %滤波处理y6=conv<h1,y5>;%用矩形窗对调制后信号进行滤波f6=fft<y6>;n4=length<f6>; ty6=<0:n4-1>/fs; w3=2/n4*[0:n4-1];%sound<y6,fs>;figure<5> subplot<2,2,1>;plot<ty6,y6>;100200时间(s )幅值三余弦信号音谱012W噪声频谱12200040006000W加噪信号频谱0510-2-1012时间(s )幅值加噪信号音谱0510-1-0.500.51t(s)信号幅值去噪后信号波形012200040006000w/pi幅度kIIR 滤波器滤波后信号频谱title<'矩形窗滤波后音频'>subplot<2,2,2>;plot<w3,abs<f6>>; title<'矩形窗滤波后频谱'>y7=conv<h2,y5>;%用布莱克曼窗进行滤波 f7=fft<y7>; n5=length<f7>; ty7=<0:n5-1>/fs; w4=2/n5*[0:n5-1]; %sound<y7,fs>;subplot<2,2,3>;plot<ty7,y7>; title<'布莱克曼窗滤波后音频'> subplot<2,2,4>;plot<w4,abs<f7>>; title<'布莱克曼窗滤波后频谱'>实验五clc;clear;close;[y,fs,bit]=wavread<'I do'>; y0=y<:,1>; l=length<y0>; %加三余弦混合噪声 t0=<0:l-1>/fs;d0=[0.05*cos<2*pi*3000*t0>]'; t1=<0:l-1>/fs;d1=[0.05*cos<2*pi*5000*t1>]'; t2=<0:l-1>/fs;d2=[0.05*cos<2*pi*8000*t2>]'; noise=d2+d1+d0; y1=y0+noise; %sound<y1,fs>;a=length<noise>;%绘制三余弦噪声音频图 wa=2/a*[0:a-1]; Noise=fft<noise>; figure<1>subplot<2,3,4>;plot<noise<1:150>>; xlabel<'时间〔s'> ylabel<'幅值'>title<'三余弦信号音谱'>subplot<2,3,1>;%绘制三余弦噪声频谱图 plot<wa,abs<Noise>>; grid on ; xlabel<'W'>title<'噪声频谱'>w0=2/l*[0:l-1];%绘制加噪信号音频Y1=fft<y1>;subplot<2,3,5>plot<w0,abs<Y1>>;grid on;xlabel<'W'>title<'加噪信号频谱'>ly1=length<y1>;ty1=<0:ly1-1>/fs;subplot<2,3,2>;plot<ty1,y1>;xlabel<'时间〔s'>ylabel<'幅值'>title<'加噪信号音谱'>m=rand<l,1>-0.5; %产生幅度为0.5的随机信号lm=length<m>;y2=m+y0;%将噪声信号与原声音信号叠加wm=2/lm*[0:lm-1];M=fft<m>;figure<2>subplot<2,2,3>;plot<m<1:150>>xlabel<'时间〔s'>ylabel<'幅值'>title<'白噪信号音谱'>subplot<2,2,1>;plot<wm,abs<M>>;grid on;xlabel<'W'>title<'噪声频谱'>l=length<y2>;ty2=<0:l-1>/fs;w=2/l*[0:l-1];Y2=fft<y2>;subplot<2,2,4>plot<w,abs<Y2>>;grid on;xlabel<'W'>title<'加噪信号频谱'>subplot<2,2,2>;plot<ty2,y2>;xlabel<'时间〔s'>ylabel<'加噪信号幅值'>title<'加噪信号音谱'>;%设计滤波器进行滤波去噪[N1,wc1]=buttord<0.04,0.17,1,30>;%确定低通滤波器的阶数和截止频率;[b,a]=butter<N1,wc1>; %确定低通滤波器分子分母系数2400.511.5wH 低通滤波器波形0510n信号幅值低通滤波后波形012200040006000数字角频率w 幅度低通滤波后频谱02400.511.5w1H 1高通滤波器波形0510n信号幅值m高通滤波后波形0120200400600数字角频率w幅度kIIR 高通滤波后频谱0123456音乐信号的波形ty 1音乐信号的频谱wf 1m=filter<b,a,y1>;%用滤波器滤除三余弦噪声 sound<m,fs>;lm=length<m>;%滤波后信号长度tm=<0:lm-1>/fs;%设置横坐标figure<1>;subplot<2,3,3>;plot<tm,m>;%绘制滤波后的波形 xlabel<'t<s>'>ylabel<'信号幅值'>title<'去噪后信号波形'>;k=fft<m>; %滤波后的波形做离散傅里叶变换 w=2*[0:length<k>-1]/length<k>; subplot<2,3,6>plot<w,abs<k>>; xlabel<'w/pi'>ylabel<'幅度k'>title<'IIR 滤波器滤波后信号频谱'>;实验六.一clear all ;clc [y,fs,bit]=wavread<'I do'>; size<y>%查看读取信号的声道类型 y1=y<: ,1>;%对信号进行分列处理 n=length<y1>;%求信号y1的的长度t1=<0:n-1>/fs;f1=fft<y1>;%对y1进行fft 谱分析 w=2/n*[0:n-1];%w 为连续频谱的数字角频率横坐标%sound<y,fs>;%播放音乐信号figure<1>subplot<2,1,1>;plot<t1,y1>; title<'音乐信号的波形'>;xlabel<'t'>; ylabel<'y1'>; subplot<2,1,2>;plot<w,abs<f1>>; title<'音乐信号的频谱'>; xlabel<'w'>; ylabel<'f1'>; %用IIR 滤波器滤波〔低[n2,wc2]=buttord<0.15,0.20,1,15>;%确定低通滤波器的阶数和截止频率; [B2,A2]=butter<n2,wc2>; %确定低通滤波器分子分母系数 [H,W]=freqz<B2,A2>; figure<2>subplot<2,3,1>;plot<W,abs<H>>;%低通滤波器波形-0.50.5音乐信号1的波形ty 100.20.40.60.81 1.21.4 1.6 1.82200040006000%音乐信号1的频谱wf 1xlabel<'w'> ylabel<'H'>title<'低通滤波器波形'>; m2=filter<B2,A2,y1>;%滤波 lm2=length<m2>; tm2=<0:lm2-1>/fs; subplot<2,3,2>plot<tm2,m2>;xlabel<'n'>ylabel<'信号幅值'> title<'低通滤波后波形'>;k2=fft<m2>;%滤波后的波形做离散傅里叶变换 l2=length<k2>; w2=2*[0:l2-1]/l2;subplot<2,3,3>; plot<w2,abs<k2>>;xlabel<'数字角频率w'> ylabel<'幅度'> title<'低通滤波后频谱'>; %解调滤波后的频谱 %用IIR 滤波器滤波〔高[N,WC]=buttord<0.15,0.20,1,15>;%确定高通滤波器的阶数和截止频率; [B,A]=butter<N,WC,'high'>; %确定高通滤波器分子分母系数 [H1,W1]=freqz<B,A>; subplot<2,3,4>;plot<W1,abs<H1>>;%高通滤波器波形 xlabel<'w1'> ylabel<'H1'>title<'高通滤波器波形'>; m=filter<B,A,y1>; %滤波 lm=length<m>; tm=<0:lm-1>/fs; subplot<2,3,5>; plot<tm,m>; xlabel<'n'>ylabel<'信号幅值m'>title<'高通滤波后波形'>; k=fft<m>;l2=length<k>; w2=2*[0:l2-1]/l2; subplot<2,3,6>; plot<w2,abs<k>>;xlabel<'数字角频率w'> ylabel<'幅度k'>title<'IIR 高通滤波后频谱'>;0123456-2-1012音乐1的幅度与音乐2的相位交叉组合后的波形t X 1200040006000音乐1的幅度与音乐2的相位交叉组合后的频谱w F1-0.4-0.200.20.4音乐信号2的波形ty 200.20.40.60.81 1.2 1.4 1.6 1.82100020003000音乐信号2的频谱wf 2实验六.二clear all ;clc[a,fs1,bit1]=wavread<'I do'>;[b,fs2,bit2]=wavread<'风声'>; size<b>%查看读取信号的声道类型y2=b<:,1>;%对信号进行分列处理 n2=length<y2>;%求信号y2的的长度t2=<0:n2-1>/fs2; f2=fft<y2>;w2=2/n2*[0:n2-1];%wavplay<y2,fs2>;size<a>%查看读取信号的声道类型y1=a<: ,1>;%对信号进行分列处理n1=length<y1>; t1=<0:n1-1>/fs1;f1=fft<y1>;w1=2/n1*[0:n1-1];%w 为连续频谱的数字角频率横坐标 %wavplay<y1,fs1>;Fy1=abs<f1>;%音乐1的幅度 Ay1=angle<f1>;%音乐1的相位 Fy2=abs<f2>;%音乐2的幅度 Ay2=angle<f2>;%音乐2相位F1=Fy1.*exp<j*Ay2>;%音乐1的幅度与音乐2的相位交叉组合 X1=ifft<F1>; n3=length<X1>;tx1=<0:<n3-1>>/fs1; w3=2/n3*[0:n3-1];%wavplay<real<X1>,fs1>;F2=Fy2.*exp<j*Ay1>;%幅度相位交叉组合 X2=ifft<F2>;n4=length<X2>; tx2=<0:<n4-1>>/fs2;w4=2/n4*[0:n4-1]%wavplay<real<X2>,fs2>;figure<1> subplot<2,1,1>;plot<t1,y1>;%绘制信号1波形title<'音乐信号1的波形'>; xlabel<'t'>;ylabel<'y1'>;subplot<2,1,2>;plot<w1,abs<f1>>;%绘制音乐信号1的频谱title<'%音乐信号1的频谱'>; xlabel<'w'>;.12 / 11 0123456-0.500.5音乐2的幅度与音乐1的相位交叉组合后的波形tX 20100020003000音乐2的幅度与音乐1的相位交叉组合后的频谱w F 2ylabel<'f1'>;figure<2>subplot<2,1,1>;plot<t2,y2>;title<'音乐信号2的波形'>;xlabel<'t'>;ylabel<'y2'>;subplot<2,1,2>;plot<w2,abs<f2>>;title<'音乐信号2的频谱'>;xlabel<'w'>;ylabel<'f2'>;figure<3>subplot<2,1,1>;plot<tx1,X1>;title<'音乐1的幅度与音乐2的相位交叉组合后的波形'>; xlabel<'t'>;ylabel<'X1'>;subplot<2,1,2>;plot<w3,abs<F1>>;title<'音乐1的幅度与音乐2的相位交叉组合后的频谱'>; xlabel<'w'>;ylabel<'F1'>;figure<4>subplot<2,1,1>;plot<tx2,X2>;title<'音乐2的幅度与音乐1的相位交叉组合后的波形'>; xlabel<'t'>;ylabel<'X2'>;subplot<2,1,2>;plot<w4,abs<F2>>;title<'音乐2的幅度与音乐1的相位交叉组合后的频谱'>; xlabel<'w'>;ylabel<'F2'>;。
应用Matlab对含噪声的语音信号进行频谱分析及滤波
应用Matlab对含噪声的语音信号进行频谱分析及滤波实验目的1.巩固所学的数字信号处理理论知识,理解信号的采集、处理、传输、显示和存储过程;2.综合运用专业及基础知识,解决实际工程技术问题的能力;3.学习资料的收集与整理,学会撰写课程设计报告。
实验环境1.微型电子计算机(PC);2.安装Windows 10操作系统,MATLAB7.0,FormatFactory等开发工具。
实验原理:在MATLAB环境中,有关声音(wave)录制、播放、存储和读取的函数有:●y=wavrecord(N,fs,Dtype)利用系统音频输入设备录音,以fs为采样频率,默认值为11025,即以11025Hz 进行采样。
Dtype为采样数据的存储格式,用字符串指定,可以是:‘double’、‘single’、’int16’、‘int8’其中只有int8是采用8位精度进行采样,其它三种都是16位采样结果转换为指定的MATLAB数据;●wavplay(y,fs)利用系统音频输出设备播放,以fs为播放频率,播放语音信号y;●wavwrite(y,fs,wavfile)创建音频文件;●wavread()读取wav格式的音频文件。
例如:[x,fs,bits]=wavread('myrecordsound.wav')x=x(:,1); %假设声音是双声道,只取单声道作分析上述语句表示读入存放在当前工作目录下的声音文件myrecordsound.wav,并以fs 为采样频率进行采样后存储在数组x中。
其中nbit是采样精度,比如16就是指16位精度的采样。
取单声道后,得到的数值x是一个列向量。
●sound();该函数的输入参量是音频数据向量、采样频率和转换位数。
例如:sound(sin(2*pi*25*(1:4000)/100));响两声就是:sound(sin(2*pi*25*(1:4000)/100));sleep(1);sound(sin(2*pi*25*(1:4000)/100));实验内容和任务要求1.采集语音信号并进行频谱分析2.对加入噪声的语音信号进行频谱分析3. 设计数字滤波器对加入噪声的语音信号进行滤波问题分析本实验要求设计IIR和FIR两种形式的滤波器对带有噪音的信号进行滤波。
基于MATLAB的信号的频谱分析
基于MATLAB的信号的频谱分析信号的频谱分析是一种重要的信号处理技术,广泛应用于通信、声音处理、图像处理等领域。
MATLAB作为一种功能强大且易于使用的数学软件工具,也提供了丰富的信号频谱分析函数和工具箱,方便进行频谱分析的研究和实践。
在本文中,我们将详细介绍MATLAB在信号频谱分析方面的应用,并通过几个实例来说明其使用方法和结果分析。
首先,我们需要了解频谱是什么。
频谱是对信号在频率域上的表示,描述了信号在各个频率上的强度分布情况。
频谱分析是将信号从时域转换到频域的过程,可以通过多种方法实现,其中最常用的是快速傅里叶变换(FFT)。
MATLAB提供了fft函数来完成信号的快速傅里叶变换,并得到信号的频谱。
以音频信号为例,我们可以使用MATLAB读取音频文件,并进行频谱分析。
具体步骤如下:1. 使用audioread函数读取音频文件,将其转换为数字信号。
```matlab[y,Fs] = audioread('audio.wav');```其中,y是音频信号的数据向量,Fs是采样率。
2.对信号进行快速傅里叶变换,得到信号的频谱。
```matlabY = fft(y);```3.计算频谱的幅度谱,即频谱的绝对值。
```matlabP = abs(Y);```4.根据采样率和信号长度计算频率轴。
```matlabL = length(y);f=Fs*(0:(L/2))/L;```5.绘制频谱图。
```matlabplot(f,P(1:L/2+1));xlabel('Frequency (Hz)');ylabel('Amplitude');```通过以上步骤,我们可以得到音频信号的频谱图像。
从频谱图中可以看出信号在各个频率上的强度分布情况,有助于我们对信号进行分析和处理。
除了音频信号,我们还可以对其他类型的信号进行频谱分析,比如图像信号。
MATLAB提供了imread函数用于读取图像文件,并通过fft2函数进行二维快速傅里叶变换。
Matlab对语音信号进行频谱分析及滤波
实验报告(题目)信号处理算法课程设计专业电子信息科学与技术班级电子09-1班学生陈年兴学号 09 指导教师刘利民完成时间 2012 年 6 月 14 日信号处理算法课程设计一、设计内容设计一:Matlab对语音信号进行频谱分析及滤波1、语音信号的采集录制了一段声音,在C盘保存为WAV格式(也可以利用已有的音乐)。
然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。
2、语音信号的频谱分析首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在Matlab 中,我们利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性性。
3、设计数字滤波器和画出其频谱响应设计一个数字滤波器:F c =1000 Hz,Fb=1200 Hz,Ap= 1dB,As=15dB,利用Matlab中的函数freqz画出了该滤波器的频率响应。
4、对滤波前后的信号进行对比,分析信号的变化,并回放语音信号。
一、处理程序如下所示:[y, Fs, nbits] =wavread('E:\yinpin\luyin.wav'); %读取语音信号的数据sound(y,Fs); %播放语音信号y1=fft(y,1024); %对信号做1024点FFT变换f=Fs*(0:511)/1024;figure(1);plot(y) %做原始语音信号的时域图形title('原始语音信号');xlabel('时间t');ylabel('幅度n');figure(2);subplot(2,1,1);plot(f,abs(y(1:512)));title('原始语音信号频谱'); xlabel('频率');ylabel('幅度');subplot(2,1,2);plot(abs(y1(1:512))) %做原始语音信号的FFT频谱图title('原始语音信号FFT频谱'); xlabel('频率');ylabel('幅度');figure(3);freqz(y); %绘制原始语音信号的频率响应图title('频率响应图');二、设计一个数字滤波器:F c =1000 Hz,F b =1200 Hz,Ap= 1dB ,As=15dB 。
在Matlab下实现语音信号的频谱分析(论文正文)
毕业设计(论文)基于MATLAB实现对语音信号的频谱分析学生姓名:张彦利学号:所在系部:信息工程学院专业班级:指导教师:日期:二○一贰年五月基于MATLAB实现对语音信号的频谱分析摘要MATLAB是一个数据分析和处理功能十分强大的工程实用软件,运用它来进行信号的分析和处理相当便捷。
本文介绍了在Matlab环境中如何采集语音信号和语音信号采集后的频谱分析处理,并通过实例分析了语音信号处理的Matlab。
并以理想正弦分布的纹理图像的 Matlab仿真和正弦纹理图像的频谱特征分析为例,叙述了基于傅立叶能量谱的纹理图像分析的基本原理和基本过程。
编写了程序,获得了具有理想正弦分布的空域纹理图像,并对其频谱特征进行了分析。
并且根据离散傅里叶变换DFT的定义,推导出一种用 DFT计算离散信号幅值谱的方法,通过 MATLAB 仿真验证了该方法的有效性。
关键词:MATLAB;频谱分析;傅里叶变换;语音信号;信号分析Analysis of Signal Spectrum Based on MATLABAbstractMATLAB is very powerful and practical engineering software which is used in data analysis and processing fraction,and use it to analysis and process voice signal,which is very convenient.This paper describes the Matlab enviironment,how to collect and process speech signal,and through example analysis of the speech signal processing in Matlab.Then take the Matlab simulation of ideal sinusoid texture image and analysis of its spectrum characteristics for example; basic principles and process of analyzing the texture image based on Fourier energy spectrum were described. The program was written for obtaining spatial domain texture image with ideal sinusoid distribution. And its spectrum characteristics were analyzed.Moreover, according to the definition of DFT, a calculation method of amplitude spectrum for periodic signal is derived in this paper. Through simulation of amplitude spectrum calculation in MATLAB, the efficiency of the method is validated to satisfy the need for project.In the end, the problems of spectrum leakage and picket fence effect are explained and the corresponding solution is proposed.Keywords: MATLAB; Spectrum Analysis;FFT; Speech signal; signal analysis目录1. 绪论 11.1 课题背景 11.2 研究意义 11.3 本文研究内容 12. 频谱分析及MATLAB简介 22.1 频谱分析技术 22.1.1 时域抽样定理[7] 22.1.2 离散傅立叶变换(DFT)[8] 22.1.3 快速傅立叶变换(FFT)[9] 32.1.4 频谱分析原理[10] 32.2 MATLAB简介 42.2.1 MATLAB软件的发展 42.2.2 MATLAB组成 52.3 本章小结 53. 程序与算例 63.1 声音信号频谱分析 63.2 图像信号频谱分析 73.3 离散信号/序列 93.4 本章小结 11结论 12致谢 13参考文献 141. 绪论1.1 课题背景随着信息时代和数字世界的到来,数字信号处理己成为当今一门极其重要的学科和技术领域,数字信号处理在通信、语音、图像、自动控制、医疗和家用电器等众多领域得到了广泛的应用。
MATLAB的语音信号频谱分析
MATLAB的语音信号频谱分析MATLAB是一个功能强大的数学软件环境,它可以用于语音信号的频谱分析。
频谱分析是通过计算信号在不同频率上的能量分布来了解信号的频域特性。
在语音信号处理中,频谱分析可以用于声音的特征提取、语音识别、音频信号处理等各个方面。
要进行语音信号的频谱分析,我们需要首先将语音信号加载到MATLAB环境中。
这可以通过读取音频文件或者录制声音来实现。
然后,我们可以使用MATLAB中的信号处理工具箱中的函数来进行频谱分析。
下面是进行语音信号频谱分析的主要步骤:1.加载语音信号首先,我们需要将语音信号加载到MATLAB环境中。
可以使用`audioread`函数读取音频文件,或者使用`audiorecorder`函数录制声音。
```matlab[x, fs] = audioread('speech.wav');%或者recorder = audiorecorder(fs, 16, 1);recordblocking(recorder, 5); % 录制5秒声音x = getaudiodata(recorder);```2.预处理语音信号在进行频谱分析之前,通常需要对语音信号进行预处理。
这包括去除静音段、去除噪声等操作。
常用的预处理方法有均衡增强、滤波、语音端点检测等。
3.计算幅度谱幅度谱是频谱分析的最基本形式,它描述了信号在不同频率上的幅度分布。
可以使用`fft`函数对语音信号进行傅里叶变换,然后取幅度谱的绝对值。
```matlabX = abs(fft(x));```4.计算功率谱密度功率谱密度是幅度谱的平方值,它表示了信号在不同频率上的功率分布。
可以通过幅度谱的平方值来计算功率谱密度。
```matlabP=X.^2;```5.均衡化谱图为了更好地可视化频谱分析结果,可以对频谱图进行均衡化处理。
可以使用`db`函数将功率谱密度转换为分贝尺度。
```matlabdB = 10 * log10(P);```6.绘制谱图最后,可以使用`plot`函数绘制频谱图。
基于MATLAB对语音信号进行分析和处理
基于MATLAB对语音信号进行分析和处理一、设计目的1.学会MATLAB的使用,掌握MA TLAB的程序设计方法;2.掌握在Windows环境下语音信号采集的方法;3.掌握数字信号处理的基本概念、基本理论和基本方法;4.掌握MATLAB设计FIR和IIR数字滤波器的方法;5.学会用MA TLAB对信号进行分析和处理。
二、设计过程1、语音信号采集与分析运用windows下的录音机,录制一段自己的话音,时间为两秒。
然后在MATLAB 软件平台下,利用函数wavread对语音信号进行采样,再运用plot函数画出语音信号的时域波形,最后在语音信号频谱分析时运用fft对信号进行快速傅里叶变换,得到频谱特性图形。
人为设计一个固定频率5500Hz的噪声干扰信号。
噪声信号通常为随机序列,在本设计中用正弦序列代替,干扰信号构建命令函数为d=[Au*sin(2*pi*5500*t)]',给出的干扰信号为一个正弦信号,针对上面的语音信号 ,采集了其中一段。
再对噪音信号进行频谱变换得到其频谱图。
2、滤波器设计和运用滤波器进行滤波1 )窗函数和等波纹逼近法设计FIR滤波器及滤波首先根据阻带最小衰减选定窗口类型,然后调用fir1函数设计线性相位FIR数字滤波器,再用freqz函数画出其频谱图形,最后运用fftfilt函数对信号进行滤波。
而等波纹逼近法中则运用remez和remezord直接设计FIR滤波器,然后运用fftfilt函数对信号进行滤波。
2 )双线性变换法社设计IIR数字滤波器及滤波首先将数字滤波器的技术指标运用预畸校正法转换成模拟滤波器的设计指标:Ωph=2/T*tan(wp/2),然后用butter、cheby1设计各种模拟滤波器,再用bilinear函数进行模拟滤波器和数字滤波器之间的转换,最后用filter函数对语音信号进行滤波,并运用函数sound播放滤波后语音。
三、结果及分析1、用MATLAB对原始语音信号进行分析,画出它的时域波形和频谱时域波形和频谱:图1 原始语音信号图2 语音信号频率响应图图3 原始语音信号FFT与信号频谱2、给原始的语音信号加上一个高频余弦噪声,频率为5500hz。
基于MATLAB的语音信号分析和处理
摘要本文主要描述的是基于MATLAB的一般声音信号的频谱分析过程包括:用电脑声卡录音、从WAV文件输入、从标准信号发生器输入;信号波形分析,包括幅值、频率、周期、相位的估计,以及统计量峰值、均值、均方值和方差的计算;信号频谱分析,频率、周期的估计,图形显示幅值谱、相位谱、实频谱、虚频谱和功率谱的曲线。
关键词:MATLAB,频谱分析,误差目录前言 (1)一、设计原理 (2)1.1系统整体设计原理 (2)1.2频谱分析原理 (3)1.3 频谱图 (4)1.4 模块划分 (4)二、详细设计步骤 (5)2.1语音信号的采集 (5)2.2采样分帧 (6)2.3 短时能量和短时平均幅度 (6)2.4短时过零率 (8)2.5短时自相关函数 (9)2.6语音信号的滤波 (11)三、设计结果及分析 (12)3.1语音信号的录入与打开 (12)3.2时域信号的FFT分析与加噪后的波形比较 (12)3.3滤波并比较滤波前后语音信号的波形 (14)3.4频率响应分析 (15)总结 (17)参考文献 (18)致谢 (19)附录 (20)前言随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向。
虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。
基于计算机软硬件平台的虚拟仪器可代替传统的测量仪器,如示波器、逻辑分析仪、信号发生器、频谱分析等。
从发展史看,电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器,由于计算机性能的飞速发展,已把传统仪器远远抛到后面,并给虚拟仪器生产厂家不断带来连锅端的技术更新速率。
目前已经有许多较成熟的频谱分析软件,如SpectraLAB、RSA Vu、dBFA等。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令。
本文将给出基于声卡与MATLAB的声音信号频谱分析的设计原理与实现方法。
基于MATlab GUI信号与系统-声音信号频谱分析概要
目录第1章绪论 (1)1.1声音信号频谱分析仪概述 (1)1.2声音信号频谱分析仪功能 (1)1.3声音信号频谱分析仪的发展 (1)第2章 MATLAB相关知识 (3)2.1 MATLAB软件知识 (3)2.1.1 MATLAB 语言简介 (3)2.1.2 Matlab的优势和特点 (3)2.2 图形用户界面(GUI)知识 (6)2.2.1 GUI简介 (6)2.2.2 GUI的特点 (6)2.2.3 GUI的组成部分 (6)第3章设计原理 (9)3.1波形分析原理 (9)3.1.1 信号频率、幅值和相位估计 (9)3.1.2 数字信号统计量估计 (9)3.2频谱分析原理 (11)3.2.1 DFT与FFT (11)3.2.2 频率、周期的估计 (12)3.2.3 频谱图 (12)3.3. 模块划分 (12)第4章系统程序设计 (14)4.1界面设计 (14)4.2输入模块的实现 (16)4.3分析模块 (19)第5章软件运行及结果分析 (22)第6章总结 (24)参考文献 (25)致谢 (26)第1章绪论1.1声音信号频谱分析仪概述信号处理几乎涉及到所有的工程技术领域,而频谱分析又是信号分析仪处理中一个非常重要的分析手段。
一般的频谱分析都依靠传统频谱分析仪来完成,价格昂贵,体积庞大,不便于工程技术人员的携带。
声音信号频谱分析仪改变了原有频谱分析仪的整体设计思路,用软件代替了硬件,使工程技术人员可以用一部笔记本电脑到现场就可轻松完成信号的采集、处理及频谱分析。
在工程领域中, MATLAB是一种倍受程序开发人员青睐的语言,对于一些需要做大量数据运算处理的复杂应用以及某些复杂的频谱分析算法MATLAB显得游刃有余。
本文将重点介绍基于MATLAB的声音信号频谱分析仪的设计。
1.2声音信号频谱分析仪功能(1) 音频信号输入,输入的途径包括从声卡输入、从WAV文件输入、从信号发生器输入;(2) 信号波形分析,包括幅值、频率、周期、相位的估计,并计算统计量的峰值、均值、均方值和方差等信息;(3) 信号频谱分析,频率、周期的估计,图形显示幅值谱、相位谱等信息的曲线。
基于MATLAB的语音信号的频谱分析
数字信号处理结课报告设计题目:基于MATLAB的语音信号的频谱分析姓名:专业班级:学号:成绩:指导教师:日期: 2013 年 11 月 30 日1.课程设计目的综合运用数学信号处理的理论知识进行语音信号的频谱分析,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
2.理解设计基本要求1)熟悉离散信号和系统的时域特性。
2)熟悉线性卷积和相关的计算编程方法。
3)掌握序列傅里叶变换的计算机实现方法,利用序列傅里叶变换对离散信号、系统和系统的响应进行频域分析。
4)学会MATLAB的使用,掌握MATLAB的程序设计方法。
5)利用MATLAB对wav文件进行频谱分析。
6)分别用不同的滤波器对加噪语音信号进行滤波,选择最佳滤波器。
3.课程设计内容选择一个wav文件作为分析的对象,或录制一段语音信号,对其进行频谱分析,分别对加噪前后的语音信号进行频谱分析,再通过不同滤波器根据信号的频谱特点重构语音信号,选出最佳滤波方案。
4.课程设计实现步骤(1)语音信号的获取选择一个wav文件作为分析的对象,可以利用Windows下的录音机或其他软件,录制一段自己的话音,在MATLAB中,[y,fs,bits]=wavread('Blip',[N1 N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
[N1 N2]表示读取的值从N1点到N2点的值。
sound(y);用于对声音的回放。
向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。
下面是语音信号在MATLAB中的语言程序,它实现了语音的读入与打开,并绘出了语音信号时域波形,然后对语音信号进行频谱分析。
在MATLAB中,可以利用函数fft对信号进行快速傅里叶变化,得到信号的频谱特性。
在频谱特性中分析最大值的位置(可能有几个),它代表的频率和时域的采样时间有关,相邻的两点之间的距离为。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理结课报告设计题目:基于MATLAB的语音信号的频谱分析姓名:专业班级:学号:成绩:指导教师:日期:2013 年11 月30 日1.课程设计目的综合运用数学信号处理的理论知识进行语音信号的频谱分析,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
2.理解设计基本要求1)熟悉离散信号和系统的时域特性。
2)熟悉线性卷积和相关的计算编程方法。
3)掌握序列傅里叶变换的计算机实现方法,利用序列傅里叶变换对离散信号、系统和系统的响应进行频域分析。
4)学会MATLAB的使用,掌握MATLAB的程序设计方法。
5)利用MATLAB对wav文件进行频谱分析。
6)分别用不同的滤波器对加噪语音信号进行滤波,选择最佳滤波器。
3.课程设计内容选择一个wav文件作为分析的对象,或录制一段语音信号,对其进行频谱分析,分别对加噪前后的语音信号进行频谱分析,再通过不同滤波器根据信号的频谱特点重构语音信号,选出最佳滤波方案。
4.课程设计实现步骤(1)语音信号的获取选择一个wav文件作为分析的对象,可以利用Windows下的录音机或其他软件,录制一段自己的话音,在MATLAB中,[y,fs,bits]=wavread('Blip',[N1 N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
[N1 N2]表示读取的值从N1点到N2点的值。
sound(y);用于对声音的回放。
向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。
下面是语音信号在MATLAB中的语言程序,它实现了语音的读入与打开,并绘出了语音信号时域波形,然后对语音信号进行频谱分析。
在MATLAB中,可以利用函数fft对信号进行快速傅里叶变化,得到信号的频谱特性。
在频谱特性中分析最大值的位置(可能有几个),它代表的频率和时域的采样时间有关,相邻的两点之间的距离为。
其中,N是离散傅里叶变换用的点数,是采样的时间,前面在读取wav文件时得到了采样频率。
既然知道了该声波的频谱,按频率就可以反演它的时域值,利用以上分析的主要峰值来重构声波。
由于没有考虑相位和其他的频谱分量,所以波形和原来的波形相差甚大,但大体的频率是没有错的。
fs=25600; %语音信号采样频率为25600[x,fs,bits]=wavread('C:\windows\system32\config\systemprofile\Desktop\mayue.w av');sound(x,fs,bits); %播放语音信号y1=fft(x,4096); %对信号做2048点FFT变换f=fs*(0:2047)/4096;figure(1)magy1=abs(y1);angy1=angle(y1);subplot(3,1,1),plot(x);title('原始信号波形')subplot(3,1,2),plot(magy1);title('原始信号幅值')subplot(3,1,3),plot(angy1);title('原始信号相位')figure(2)freqz(x) %绘制原始语音信号的频率响应图title('频率响应图')figure(3)plot(f,abs(y1(1:2048)));title('原始语音信号频谱')xlabel('Hz');ylabel('fudu');axis([0 4500 0 400])图1.1原始信号波形、幅值和相位图图1.2频率响应图图1.3原始语音信号频谱(2)wav语音信号加噪声在MATLAB软件平台下,给原始的语音信号叠加上噪声,噪声类型分为如下几种:1)单频噪色(正弦干扰);2)高斯随机噪声。
绘出加噪声后的语音信号时域和频谱图,在视觉上与原始语音信号图形对比,也可通过Windows播放软件从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。
本实验采用正弦干扰。
clc;clear;fs=22050; %语音信号采样频率为22050[x,fs,bits]=wavread('C:\windows\system32\config\systemprofile\Desktop\mayue.w av'); %读取语音信号的数据,赋给变量xy1=fft(x,4096); %对信号做4096点FFT变换f=fs*(0:511)/4096;t=(0:length(x)-1)/22050;x1=[0.05*sin(2*pi*10000*t)]';x0=x(:,1);x2=x1+x0;sound(x2,fs,bits);figure(1)subplot(2,1,1)plot(x) %做原始语音信号的时域图形title('原语音信号时域图')subplot(2,1,2)plot(x2) %做原始语音信号的时域图形title('加高斯噪声后语音信号时域图')xlabel('time n');ylabel('fudu');y2=fft(x2,4096);figure(2)subplot(2,1,1)plot(abs(y1))title('原始语音信号频谱');xlabel('Hz');ylabel('fudu');subplot(2,1,2)plot(abs(y2))title('加噪语音信号频谱');xlabel('Hz');ylabel('fudu');axis([0 4500 0 300]);wavwrite(x2,fs,'C:\windows\system32\config\systemprofile\Desktop\加噪.wav');图1.4语音信号时域图图1.5语音信号频谱图(3)IIR数字滤波器的设计:分别利用巴特沃斯滤波器、切比雪夫I型和II型滤波器、椭圆滤波器进行滤波,写出详细的分析结果。
巴特沃斯低通滤波对加入高斯随机噪声和正弦噪声的语音信号进行滤波。
用双线性变换法设计了巴特沃斯数字低通IIR滤波器对两加噪语音信号进行滤波,并绘制了巴特沃斯低通滤波器的幅度图和两加噪语音信号滤波前后的时域图和频谱图。
clear all;fb = 1000;fc = 1200;fs = 22050;wp=0.1*pi;ws=0.4*pi;Rp=1;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'); %选择滤波器的最小阶数[Z,P,K]=buttap(N); %创建butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bd,ad]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[h,w]=freqz(bd,ad);figure(1)subplot(111);plot(w*fs/(2*pi),abs(h))grid;title('滤波器的性能分析');pause;figure(2)[x,fs,bits]=wavread('C:\windows\system32\config\systemprofile\Desktop\加噪.wav');n=length(x);f=fs*(0:(n/2-1))/n;z=filter(bd,ad,x);subplot(211);plot(x);title('原始信号的波形');subplot(212);plot(z);title('滤波后信号的波形');pause;figure(3)sound(z,fs,bits);subplot(211);plot(f,abs(X(1:n/2)));title('原始信号的频谱');xlabel('Hz');Z=fft(z);subplot(212);plot(f,abs(Z(1:n/2)));title('滤波后的信号频谱');xlabel('Hz');wavwrite(z,fs,C:\windows\system32\config\systemprofile\Desktop\巴滤.wav');图1.6滤波器的性能分析图1.7滤波前后信号分析波形图图1.8滤波前后信号频谱图(4)FIR数字滤波器的设计:分别利用矩形窗、三角形窗、汉明窗、哈明窗进行滤波,写出几种滤波器的优缺点,写出详细的分析结果。
汉明窗的FIR低通滤波使用窗函数法,选用海明窗设计了数字FIR低通滤波器对加了正弦噪声的语音信号进行滤波,并绘制了滤波器滤波后的语音信号时域图和频谱图。
%FIR滤波fs=22050;[x,fs,bits]=wavread('C:\windows\system32\config\systemprofile\Desktop\加噪.wav');wp=0.25*pi;ws=0.3*pi;wdelta=ws-wp;N=ceil(6.6*pi/wdelta); %取整t=0:(size(x)-1);wn=(0.2+0.3)*pi/2;b=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率f1=fftfilt(b,x);figure(1)freqz(b,1,512)[h1,w1]=freqz(b,1);plot(w1*fs/(2*pi),20*log10(abs(h1)));figure(2)subplot(2,1,1)plot(t,x)title('滤波前的时域波形');subplot(2,1,2)plot(t,f1);title('滤波后的时域波形');sound(f1); %播放滤波后的语音信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x,1024);subplot(2,1,1);plot(f,abs(y2(1:512))); %画出滤波前的频谱图title('滤波前的频谱')xlabel('Hz');ylabel('fuzhi');subplot(2,1,2)F1=plot(f,abs(F0(1:512))); %画出滤波后的频谱图title('滤波后的频谱')xlabel('Hz');ylabel('fuzhi');wavwrite(f1,fs,'C:\windows\system32\config\systemprofile\Desktop\F滤.wav');图1.9语音信号波形图1.10滤波前后时域波形图1.11滤波前后频谱图5.课程设计心得体会本设计采用了高效快捷的开发工具——MATLAB,实现了语音信号的采集,对语音信号加噪声及设计滤波器滤除噪声的一系列工作。