matlab声音信号的采集与滤波处理
基于matlab的语音信号滤波处理
一.实验目的:数字信号课程设计,屌丝们有福了综合计运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,培养发现问题、分析问题和解决问题的能力。
并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。
此外,还系统的学习和实现对语音信号处理的整体过程,从语音信号的采集到分析、处理、频谱分析、显示和储存。
二.实验环境:数字信号课程设计,屌丝们有福了Matlab7.0.1 WindowsXP系统三.实验内容:1、语音信号的采集数字信号课程设计,屌丝们有福了利用Windows下的录音机, 录制一段自己的话音, 时间在几秒内。
然后在Matlab软件平台下, 利用函数wavread对语音信号进行采样, 记住采样频率和采样点数。
[y,fs,bits]=wavread();2、语音信号的频谱分析首先画出语音信号的时域波形,然后对语音信号进行频谱分析。
在Matlab 中, 可以利用函数fft对信号进行快速傅里叶变换, 得到信号的频谱特性。
3、用滤波器对语音信号进行滤波设计滤波器对采集的信号进行滤波, 比较滤波前后语音信号的波形及频谱。
要求自己确定滤波器的性能指标,用冲激响应不变法、双线性变换法或窗函数法设计3种滤波器:低通、高通和带通滤波器。
4、回放语音信号在Matlab中, 函数sound 可以对声音进行回放,其调用格式:sound (x, fs, bits);四.实验原理:1.数字滤波器数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多维滤波等优点。
在信号的过滤、检测和参数的估计等方面,经典数字滤波器是使用最广泛的一种线性系统。
数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。
基于Matlab的对语音信号采集处理及滤波器的设计
目录摘要 (2)1 课程设计实现 (3)1.1整体设计思路 (3)1.2整体实现过程 (3)1.2.1 信号的采样 (3)1.2.2 语音信号的读取 (5)1.2.3 语音信号的频谱分析 (6)1.2.4 噪声信号的构建 (7)1.2.5 加入噪声的语音信号的频谱 (8)2 数字滤波器的设计 (9)2.1滤波器的设计原理 (9)2.2滤波器的性能指标 (10)2.3IIR数字滤波器设计 (10)2.4FIR数字滤波器设计 (12)2.5滤波器对信号滤波 (13)2.6语音信号回放 (17)3 心得体会 (17)4 主要参考资料.............................................................. 错误!未定义书签。
附录.................................................................................... 错误!未定义书签。
摘要MATLAB 语言是一种数据分析和处理功能十分强大的计算机应用软件 ,它可以将声音文件变换为离散的数据文件 , 然后利用其强大的矩阵运算能力处理数据 ,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等 , 信号处理是MATLAB 重要应用的领域之一。
本课程设计介绍了基于Matlab的对语音信号采集、处理及滤波器的设计,并使之实现的过程。
理解与掌握课程中的基本概念、基本原理、基本分析方法,用Matlab进行数字语音信号处理,并阐述了课程设计的具体方法、步骤和内容。
综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。
关键词: MATLAB 工具信号语音采集滤波器1 课程设计实现1.1整体设计思路Matlab 语言是一种数据分析和处理功能十分强大的计算机应用软件 ,它可以将声音文件变换为离散的数据文件 , 然后利用其强大的矩阵运算能力处理数据 ,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等 , 信号处理是 Matlab 重要应用的领域之一。
MAAB声音信的采集与滤波处理
Matlab 实验报告(题目二)(题目二)声音信号的采集与滤波处理(采用IIR滤波器或FIR滤波器)参考资料:信号的采集、数字信号处理及滤波实例要求:(1)采集声音信号或打开已录好的声音文件,并显示其信号图与频域图。
(2)根据信号的特点,选用合适的滤波器,给定滤波器的规一化性能指标(参考指标,实际中依据每个同学所叠加噪声情况而定)例如:通带截止频率wp=0.25*pi, 阻通带截止频率ws=0.3*pi; 通带最大衰减Rp=1 dB; 阻带最小衰减Rs=15 dB,对信号进行滤波。
在Matlab中,可以利用函数fir1设计FIR滤波器,可以利用函数butte,cheby1和ellip设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应,滤波器设计完后,用filter函数用这些数字滤波器对含噪语音信号分别进行滤波处理。
(3)还原音乐信号,并画出其时域图与频域图,并与原始信号比较,且回放音乐信号。
(1)打开一个自己录制的音乐文件进行实验,这是实验程序:fs=22050; %语音信号采样频率为22050x1=wavread('e:\威尼斯的泪.wav'); %读取语音信号的数据,赋给变量x1sound(x1,22050); %播放语音信号y1=fft(x1,1024); %对信号做1024点FFT变换f=fs*(0:511)/1024;figure(1)plot(x1) %做原始语音信号的时域图形title ('原始语音信号');xlabel('time n');ylabel('fuzhi n');figure(2)freqz(x1) %绘制原始语音信号的频率响应图title ('频率响应图')figure(3)subplot(2,1,1);plot(abs(y1(1:512))) %做原始语音信号的FFT频谱图title ('原始语音信号FFT频谱')subplot(2,1,2);plot(f,abs(y1(1:512)));title ('原始语音信号频谱')xlabel('Hz');ylabel('fuzhi');实验效果(2)实验程序clear;fs=22050;x1=wavread('e:\威尼斯的泪.wav');f=fs*(0:511)/1024;t=0:1/22050:(length(x1)-1)/22050; %将所加噪声信号的点数调整到与原始信号相同%Au=1d=[0.5*cos(2*pi*1000*t)]'; %噪声为1kHz的余弦信号x2=x1+d;%sound(x1,8000);%pause(50);sound(x2,22050); %播放加噪声后的语音信号y2=fft(x2,1024);figure(1)plot(t,x2)title('加噪后的信号');xlabel('time n');ylabel('fuzhi n');figure(2)subplot(2,1,1);plot(f,abs(x1(1:512)));title('原始语音信号频谱');xlabel('Hz');ylabel('fuzhi');subplot(2,1,2);plot(f,abs(x2(1:512)));title('加噪后的信号频谱');xlabel('Hz');ylabel('fuzhi');实验效果(3)实验程序fs=22050; x1=wavread('e:\威尼斯的泪.wav');t=0:1/22050:(length(x1)-1)/22050;Au=0.5; d=[Au*cos(2*pi*8000*t)]';x2=x1+d;wp=0.25*pi;ws=0.3*pi;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'); %选择滤波器的最小阶数[Z,P,K]=buttap(N); %创建butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az); %绘制频率响应曲线figure(1)plot(W*Fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('Butterworth')f1=filter(bz,az,x2);figure(2)subplot(2,1,1)plot(t,x2) %画出滤波前的时域图title('滤波前的时域波形');subplot(2,1,2)plot(t,f1); %画出滤波后的时域图title('滤波后的时域波形');sound(f1,22050); %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x2,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');实验结果:。
MATLAB处理语音信号
MATLAB处理语⾳信号⼀、实验项⽬名称语⾳信号的处理⼆、实验⽬的综合运⽤数字信号处理课程的理论知识进⾏频谱分析以及滤波器设计,通过理论推导得出相应结论,并进⾏计算机仿真,从⽽复习巩固了课堂所学的理论知识,提⾼了对所学知识的综合应⽤能⼒。
三、实验内容1. 语⾳信号的采集2. 语⾳信号的频谱分析3. 设计数字滤波器和画出频率响应4. ⽤滤波器对信号进⾏滤波5. ⽐较滤波前后语⾳信号的波形及频谱6. 回放语⾳信号四、实验具体⽅案1.语⾳信号采集录制⼀段语⾳信号并保存为⽂件,长度控制在1秒,并对录制的信号进⾏采样;录制时使⽤Windows⾃带的录⾳机。
采样是将⼀个信号(即时间或空间上的连续函数)转换成⼀个数值序列(即时间或空间上的离散函数)。
采样定理指出,如果信号是带限的,并且采样频率⾼于信号带宽的两倍,那么,原来的连续信号可以从采样样本中完全重建出来。
如果信号带宽不到采样频率的⼀半(即奈奎斯特频率),那么此时这些离散的采样点能够完全表⽰原信号。
⾼于或处于奈奎斯特频率的频率分量会导致混叠现象。
⼤多数应⽤都要求避免混叠,混叠问题的严重程度与这些混叠频率分量的相对强度有关。
⽤Windows⾃带录⾳机录⼊⼀段⾳乐,2秒钟,⽤audioread读取⾳频内容,这⾥不使⽤waveread是因为他要求⾳频⽂件格式为.wav ,并且我进⾏了尝试但没有成功,画出⾳频信号的时域波形图[y1,fs]=audioread('F:\MATLAB\ren.m4a');figure(1);plot( y1 );title('Ô原语⾳信号时域波形图');xlabel('单位');ylabel('幅度');2.语⾳信号频谱分析⾸先画出语⾳信号的时域波形,然后对语⾳信号进⾏频谱分析。
在matlab中利⽤fft对信号进⾏快速傅⾥叶变换,得到信号的频谱特性。
Matlab的信号处理⼯具箱中的函数FFT可⽤于对序列的快速傅⾥叶变换分析,其调⽤格式是y=fft(x,N),其中,x是序列,y是序列的FFT变换结果,N为整数,代表做N点的FFT,若x为向量且长度⼩于N,则函数将x补零⾄长度N;若向量x长度⼤于N,则截断x使之长度为N。
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进行信号处理和滤波的基本方法,并使用实例进行演示。
一、Matlab的信号处理工具箱Matlab的信号处理工具箱是一个强大的工具集,它包含了许多用于处理各种类型信号的函数和算法。
通过引入信号处理工具箱,我们可以方便地处理音频、图像和视频信号,并进行频域分析、滤波和解调等操作。
在Matlab中,可以使用命令"toolbox"来查看已安装的工具箱,对于信号处理,我们需要确保已经安装了"Signal Processing Toolbox"。
如果没有安装,可以通过访问Matlab官方网站下载并安装。
二、信号处理的基本操作1. 读取和显示信号在进行信号处理之前,首先需要将信号加载进Matlab中。
可以使用函数"audioread"来读取音频信号,例如读取一个.wav格式的音频文件:```[x,Fs] = audioread('audio.wav');```其中,x是音频信号的数据,Fs是信号的采样率。
读取完成后,可以使用函数"soundsc"来播放信号,并使用函数"plot"来绘制信号的波形图:```soundsc(x,Fs);plot(x);```2. 频谱分析频谱分析可以帮助我们了解信号的频率特性。
在Matlab中,可以使用函数"fft"进行快速傅里叶变换(FFT),将信号从时域转换到频域。
例如,对于上文中读取的音频信号x,可以使用以下代码计算其频谱:```X = fft(x);```频谱的结果是一个复数向量,表示信号在不同频率上的幅值和相位。
matlab语音信号采集与处理
matlab语音信号采集与处理Matlab是一种功能强大的数学软件,特别适合音频信号的处理和分析。
本文将介绍Matlab如何用于音频信号采集和处理的方法。
1. 音频信号采集Matlab可以在Windows和Mac OS X操作系统上直接访问音频硬件,比如麦克风。
Matlab的音频输入功能允许用户在Matlab中直接访问音频硬件,并处理输入的信号。
Matlab提供了许多函数和工具箱,方便用户采集和处理音频信号。
可以使用Matlab 的命令窗口和MATLAB代码框架,采集音频信号数据并保存为.mat文件。
以下是在Matlab中实现音频采集的示例代码:%% 定义音频采样率Fs和采样时间TFs = 8000; % HzT = 2; % s%% 创建一个录音器对象recorderrecorder = audiorecorder(Fs, 16, 1);%% 开始录制音频disp('开始录制音频...');recordblocking(recorder, T);%% 将信号保存为.mat文件disp('将信号保存为.mat文件...');filename = 'audioData.mat';save(filename, 'audioData', 'Fs');在这个示例代码中,定义音频采样率Fs和采样时间T。
开始录制音频,使用recordblocking函数,它采样时间为T。
使用getaudiodata函数获取录音器对象recorder的音频数据。
最后,使用save函数将音频数据保存为.mat文件。
Matlab是一种强大的工具,可用于处理和分析音频信号,例如过滤,时域和频域分析,频谱分析和语音识别等。
%% 加载.mat文件,分别为音频数据audioData和采样率Fsload('audioData.mat');%% 频谱分析disp('进行频谱分析...');N = length(audioData);xf = fft(audioData);Pxx = 1/(Fs*N) * abs(xf).^2;f = linspace(0, Fs/2, N/2+1);%% 滤波器设计disp('设计一个50Hz低通滤波器...');fc = 50; % HzWn = fc/(Fs/2);[b,a] = butter(4, Wn, 'low');%% 信号滤波disp('低通滤波信号...');y = filter(b, a, audioData);%% 绘图figure();subplot(2,1,1);plot(audioData);title('原始信号');xlabel('时间(s)')ylabel('幅值')在这个示例代码中,首先使用load函数加载以前保存的音频数据,分别为音频数据audioData和采样率Fs。
使用Matlab进行声音信号处理的基本技巧
使用Matlab进行声音信号处理的基本技巧声音信号处理是一门重要的领域,它涵盖了音频合成、语音识别、音频修复等多个应用方向。
Matlab是一款功能强大的数学软件,也可以用于声音信号处理。
本文将介绍使用Matlab进行声音信号处理的基本技巧,包括声音读取、时域分析、频域分析、滤波和音频合成等内容。
1. 声音读取首先,我们需要将声音文件读取到Matlab中进行处理。
Matlab提供了`audioread`函数用于读取声音文件。
例如,我们可以使用以下代码读取一个wav格式的声音文件:```matlab[y, Fs] = audioread('sound.wav');```其中,`y`是声音信号的向量,每个元素代表一个采样点的数值;`Fs`是采样率,即每秒采样的次数。
通过这个函数,我们可以将声音文件以数字信号的形式加载到Matlab中进行后续处理。
2. 时域分析在声音信号处理中,常常需要对声音信号在时域上进行分析。
我们可以使用Matlab的绘图函数来展示声音信号的波形。
例如,以下代码可以绘制声音信号的波形图:```matlabt = (0:length(y)-1)/Fs;plot(t, y);xlabel('Time(s)');ylabel('Amplitude');title('Sound waveform');```这段代码中,`t`是时间轴,通过除以采样率,我们可以得到每个采样点对应的时间。
`plot`函数用于绘制声音信号的波形图,横轴表示时间,纵轴表示振幅。
通过这种方式,我们可以直观地观察声音信号的时域特征。
3. 频域分析除了时域分析,频域分析也是声音信号处理中常用的方法。
通过对声音信号进行傅里叶变换,我们可以得到声音信号在频域上的表示。
Matlab提供了`fft`函数用于进行傅里叶变换。
以下代码可以绘制声音信号的频谱图:```matlabN = length(y);f = (-N/2:N/2-1)/N*Fs;Y = fftshift(fft(y));plot(f, abs(Y));xlabel('Frequency (Hz)');ylabel('Magnitude');title('Sound spectrum');```在这段代码中,`N`是声音信号的长度,`f`是频率轴,通过调整`f`的取值范围可以实现将零频移动到中心位置。
基于MATLAB的语音信号分析及滤波
基于MATLAB的语音信号分析及滤波MATLAB是一种强大的数值计算和数据分析工具,也可以用于语音信号的分析和滤波。
本文将介绍基于MATLAB的语音信号分析和滤波方法。
首先,我们需要将语音信号导入MATLAB中进行分析。
语音信号可以以.wav格式的文件保存,可以使用`audioread`函数将.wav文件导入MATLAB中。
例如:```matlab[x, fs] = audioread('speech.wav');```其中,`x`是导入的语音信号,`fs`是采样率。
接下来,我们可以通过绘制波形图和频谱图来对语音信号进行分析。
波形图可以用`plot`函数绘制,频谱图可以用`spectrogram`函数绘制。
```matlabsubplot(2, 1, 1);plot(x);title('Waveform');xlabel('Sample');ylabel('Amplitude');subplot(2, 1, 2);spectrogram(x, hann(256), 128, 512, fs, 'yaxis');title('Spectrogram');```绘制的波形图显示了语音信号的振幅随时间的变化,而频谱图显示了语音信号在不同频率上的能量分布。
在分析完语音信号的基本特征后,我们可以应用滤波器对语音信号进行滤波。
常用的语音信号滤波器包括低通滤波器、高通滤波器和带通滤波器。
可以使用MATLAB中的`filter`函数来应用这些滤波器。
例如,下面的代码展示了如何使用低通滤波器对语音信号进行滤波:```matlabfc = 4000; % 截止频率为4000 Hz[b, a] = butter(6, fc/(fs/2), 'low'); % 6阶Butterworth低通滤波器filtered_x = filter(b, a, x);figure;subplot(2, 1, 1);plot(x);title('Original Signal');xlabel('Sample');ylabel('Amplitude');subplot(2, 1, 2);plot(filtered_x);title('Filtered Signal');xlabel('Sample');ylabel('Amplitude');```通过调整截止频率和滤波器阶数,可以实现不同的滤波效果。
Matlab语音信号加噪、滤波处理及幅值幅频响应
课程设计二基于MATLAB的语音信号采集与处理一、实验目的和意义1. MATLAB软件功能简介MATLAB的名称源自Matrix Laboratory,1984年由美国Mathworks公司推向市场。
它是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。
MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。
其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。
该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。
目前,Mathworks公司已推出30多个应用工具箱。
MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。
MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。
由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需求。
例如解微分方程、傅里叶正反变换、拉普拉斯正反变换和z正反变换等。
MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。
数值计算仿真分析可以帮助学生更深入地理解理论知识,并为将来使用MATLAB进行信号处理领域的各种分析和实际应用打下基础。
利用Matlab进行声音信号处理的技术方法
利用Matlab进行声音信号处理的技术方法引言:在现代科技飞速发展的时代,声音信号处理成为一个热门的技术领域。
利用Matlab这一功能强大的软件工具,可以进行各种声音信号处理的研究和应用。
本文将介绍利用Matlab进行声音信号处理的技术方法,包括声音信号采集、预处理、频域分析、音频特征提取、降噪以及语音识别等方面的内容。
一、声音信号采集声音信号采集是声音信号处理的第一步,它的质量直接影响后续处理的效果。
在Matlab中,我们可以利用声音输入和录音功能来实现声音信号的采集。
声音输入函数可以从外部声卡、麦克风等设备录取音频数据,而录音函数则可以通过计算机内部的声卡进行录音。
要进行声音信号采集,首先要设置好采样率和采样位数。
采样率表示每秒采样的次数,常用的采样率有8kHz、16kHz和44.1kHz等。
采样位数表示每个采样值的位数,一般为8位或16位。
在Matlab中,可以使用audiorecorder函数设置采样率和采样位数。
二、声音信号的预处理声音信号预处理是为了去除噪声和提高信号质量,以便后续处理。
常用的声音信号预处理方法包括去噪、滤波、归一化等。
去噪是声音信号预处理的重要步骤。
常见的去噪方法有时域滤波和频域滤波。
时域滤波是通过卷积运算对声音信号进行滤波,可以去除特定频率范围内的噪声。
频域滤波则是将声音信号从时域转换到频域,利用频域上的滤波器对噪声进行滤波。
滤波是声音信号预处理的另一种常用方法,它可以去除声音信号中的杂音和干扰信号。
低通滤波器可以去除高频噪声,而高通滤波器则可以去除低频噪声。
在Matlab中,可以使用fir1函数设计滤波器,然后使用filter函数进行滤波。
归一化是将声音信号的振幅范围缩放到合适的范围内,以便后续处理。
通过归一化,可以消除不同音频文件之间的振幅差异。
三、频域分析频域分析是声音信号处理中常用的方法之一。
在Matlab中,可以通过使用快速傅里叶变换(FFT)函数对声音信号进行频谱分析。
利用matlab处理语音信号及滤波
数字信号处理课程设计摘要:语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前发展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息手段,所以对其的研究更显得尤为重要。
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。
这为我们的本次设计提供了强大并良好的环境!本设计要求自己录制一段自己的语音后,在MATLAB软件中采集语音信号、回放语音信号并画出语音信号的时域波形和频谱图。
再在Matlab中分别设计不同形式的FIR数字滤波器。
之后对采集的语音信号经过不同的滤波器(低通、高通、带通)后,观察不同的波形,并进行时域和频谱的分析。
对比处理前后的时域图和频谱图,分析各种滤波器对于语音信号的影响。
最后分别收听进行滤波后的语音信号效果,做到了解在怎么样的情况下该用怎么样的滤波器。
目录1.设计内容 (4)2.设计原理 (4)2.1语音信号的时域分析 (4)2.2语音信号的频域分析 (5)3.设计过程 (5)3.1实验程序源代码 (6)3.1.1原语音信号时域、频域图 (6)3.1.2低通滤波器的设计 (6)3.1.3高通滤波器的设计 (7)3.1.4带通滤波器的设计 (8)3.1.5语音信号的回放 (9)3.2调试结果描述 (10)3.3所遇问题及结果分析 (15)3.3.1所遇主要问题 (16)3.3.2结果分析 (16)4.体会与收获 (17)5.参考文献 (17)1.设计内容:1.首先录制好一段自己的语音。
2.用Matlab分别设计好3种类型的滤波器(指标自己确定):低通型、高通型、带通型。
3.用Matlab将语音信号进行采样,并分别将其通过所设计的3种滤波器。
4.用Matlab自带的语音返回函数收听滤波后的语音信号,分析并比较其与原语音信号的差异。
2.设计原理:语音信号时一种非平稳的时变信号,它带着各种信息。
使用MATLAB进行音频信号处理的技巧
使用MATLAB进行音频信号处理的技巧音频信号处理是一项重要的技术,它涉及到对音频信号的分析、处理和合成。
而MATLAB作为一种强大的数学计算软件,具备丰富的信号处理工具箱,可以帮助我们完成各种音频信号处理的任务。
在本文中,我们将介绍一些使用MATLAB 进行音频信号处理的技巧。
一、音频信号的读取与播放在进行音频信号处理之前,我们首先需要将音频文件读取到MATLAB中进行处理。
MATLAB提供了`audioread`函数来读取音频文件,例如:```matlab[x, fs] = audioread('audio.wav');```其中,`x`是读取到的音频信号,`fs`是采样率。
读取完成后,我们可以使用`sound`函数来播放音频信号:```matlabsound(x, fs);```二、音频信号的可视化了解音频信号的特征对于后续的处理非常重要。
MATLAB提供了多种绘图函数,可以帮助我们可视化音频信号。
例如,使用`plot`函数可以绘制音频信号的波形图:```matlab```此外,我们还可以使用`spectrogram`函数来绘制音频信号的频谱图:```matlabspectrogram(x, window, noverlap, nfft, fs);```其中,`window`是窗函数,`noverlap`是重叠的样本数,`nfft`是FFT的点数。
通过观察波形图和频谱图,我们可以对音频信号的特征有更深入的了解。
三、音频信号的滤波滤波是音频信号处理中常用的操作之一,它可以去除噪声、改变音频的频率响应等。
MATLAB提供了多种滤波函数,例如`fir1`和`filter`函数可以用于设计和应用FIR滤波器:```matlabb = fir1(n, Wn);y = filter(b, 1, x);```其中,`b`是滤波器的系数,`n`是滤波器的阶数,`Wn`是归一化的截止频率。
通过设计合适的滤波器,我们可以实现音频信号的降噪、均衡等效果。
如何使用MATLAB进行声音信号处理
如何使用MATLAB进行声音信号处理声音信号处理在现代通信、音频处理、语音识别等领域起着非常重要的作用。
MATLAB作为一款功能强大的科学计算软件,在声音信号处理方面具有广泛的应用。
本文将介绍如何使用MATLAB进行声音信号处理。
一、声音信号的基本概念和特征声音信号是一种通过空气、水等介质传播的机械波,具有振幅、频率和相位等特征。
在声音信号处理中,我们常用到的一些概念和特征包括频谱、语谱图、信噪比等。
频谱是声音信号在频域上的表现形式,可以通过傅里叶变换将时域信号转换为频域信号。
MATLAB提供了fft函数可以方便地进行傅里叶变换。
语谱图是声音信号在时间和频率上的三维表示,可以通过短时傅里叶变换(STFT)得到。
MATLAB的spectrogram函数可以实现语谱图的计算和绘制。
信噪比是衡量声音信号中有用信息和噪声之间比例的常用指标,可以通过计算信号的能量和噪声的能量比值得到。
MATLAB提供了snr函数可以计算信噪比。
二、声音信号的读取和保存在使用MATLAB进行声音信号处理之前,我们首先需要将声音信号读取到MATLAB中进行处理。
MATLAB的audioread函数可以实现读取常见音频格式的声音文件,例如.wav、.mp3等。
读取得到的声音信号可以保存在一个向量中,每个采样点的数值表示声音的振幅。
保存处理后的声音信号可以使用MATLAB的audiowrite函数。
我们可以指定保存的音频格式和保存的文件名。
三、声音信号的滤波处理滤波是声音信号处理中常用的技术,可以用来去除信号中的噪声或者增强信号中的某些频率成分。
MATLAB提供了fir1和butter函数可以用于设计和实现各种类型的滤波器。
fir1函数用于设计FIR滤波器,可以通过指定滤波器的阶数和截止频率来设计低通、高通、带通或带阻滤波器。
butter函数用于设计IIR滤波器,可以通过指定滤波器的阶数和截止频率来设计低通、高通、带通或带阻滤波器。
MATLAB声音信号的采集与滤波处理
Matlab 实验报告(题目二)(题目二)声音信号的采集与滤波处理(采用IIR滤波器或FIR滤波器)参考资料:信号的采集、数字信号处理及滤波实例要求:(1)采集声音信号或打开已录好的声音文件,并显示其信号图与频域图。
(2)根据信号的特点,选用合适的滤波器,给定滤波器的规一化性能指标(参考指标,实际中依据每个同学所叠加噪声情况而定)例如:通带截止频率wp=0.25*pi, 阻通带截止频率ws=0.3*pi; 通带最大衰减Rp=1 dB; 阻带最小衰减Rs=15 dB,对信号进行滤波。
在Matlab中,可以利用函数fir1设计FIR滤波器,可以利用函数butte,cheby1和ellip设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应,滤波器设计完后,用filter函数用这些数字滤波器对含噪语音信号分别进行滤波处理。
(3)还原音乐信号,并画出其时域图与频域图,并与原始信号比较,且回放音乐信号。
(1)打开一个自己录制的音乐文件进行实验,这是实验程序:fs=22050; %语音信号采样频率为22050x1=wavread('e:\威尼斯的泪.wav'); %读取语音信号的数据,赋给变量x1sound(x1,22050); %播放语音信号y1=fft(x1,1024); %对信号做1024点FFT变换f=fs*(0:511)/1024;figure(1)plot(x1) %做原始语音信号的时域图形title('原始语音信号');xlabel('time n');ylabel('fuzhi n');figure(2)freqz(x1) %绘制原始语音信号的频率响应图title('频率响应图')figure(3)subplot(2,1,1);plot(abs(y1(1:512))) %做原始语音信号的FFT频谱图title('原始语音信号FFT频谱')subplot(2,1,2);plot(f,abs(y1(1:512)));title('原始语音信号频谱')xlabel('Hz');ylabel('fuzhi');实验效果(2)实验程序clear;fs=22050;x1=wavread('e:\威尼斯的泪.wav');f=fs*(0:511)/1024;t=0:1/22050:(length(x1)-1)/22050; %将所加噪声信号的点数调整到与原始信号相同%Au=1d=[0.5*cos(2*pi*1000*t)]'; %噪声为1kHz的余弦信号x2=x1+d;%sound(x1,8000);%pause(50);sound(x2,22050); %播放加噪声后的语音信号y2=fft(x2,1024);figure(1)plot(t,x2)title('加噪后的信号');xlabel('time n');ylabel('fuzhi n');figure(2)subplot(2,1,1);plot(f,abs(x1(1:512)));title('原始语音信号频谱'); xlabel('Hz');ylabel('fuzhi');subplot(2,1,2);plot(f,abs(x2(1:512))); title('加噪后的信号频谱'); xlabel('Hz');ylabel('fuzhi');实验效果(3)实验程序fs=22050; x1=wavread('e:\威尼斯的泪.wav');t=0:1/22050:(length(x1)-1)/22050;Au=0.5; d=[Au*cos(2*pi*8000*t)]';x2=x1+d;wp=0.25*pi;ws=0.3*pi;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'); %选择滤波器的最小阶数[Z,P,K]=buttap(N); %创建butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az); %绘制频率响应曲线figure(1)plot(W*Fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('Butterworth')f1=filter(bz,az,x2);figure(2)subplot(2,1,1)plot(t,x2) %画出滤波前的时域图title('滤波前的时域波形');subplot(2,1,2)plot(t,f1); %画出滤波后的时域图title('滤波后的时域波形');sound(f1,22050); %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x2,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');实验结果:。
基于matlab的语音信号的采集和处理
电子科技大学课程设计报告课程名称:信号与系统设计名称:语音信号的采集和处理姓名:肖燕平学号: *************班级:通信九班指导教师:**起止日期:2012.12.15-2012.12.20基于MATLAB的语音信号的采集和处理摘要:本文介绍了一种基于matlab的语音信号的采集和处理设计实现方案。
声音是由物体的振动产生,以声波的形式在介质中传播,介质主要可分为固体,液体以及气体。
声波振动内耳的听小骨,这些振动被转化为微小的电子脑波,它就是我们觉察到的声音。
内耳采用的原理与麦克风捕获声波或扬声器的发音一样,它是移动的机械部分与气压波之间的关系。
在国际标准中,人声的频率范围是300Hz~3400Hz,不同的人或乐器产生的声音频率不一致,通过对声音信号的研究能够更好的处理声音信号的处理以及传输。
Matlab 作为一款主要面对科学计算、可视化以及交互式程序设计的高科技计算软件,能够很好的完成对声音信号的分析和处理,快速的得出声音信号的时域图以及频域图。
关键字:声音|、频率、时域图、频域图1绪论1.1课题研究目的及意义掌握语音信号采集的方法掌握一种语音信号基音周期提取方法了解Matlab的编程方法1.2本课题的设计要求及设计方案概述一:使用wavrecord录入自己的语音信号,使用save函数进行保存后使用wavplay 函数进行播放。
二:使用plot再画出该语音信号的时域波形,对原始波形进行用fft函数傅里叶变换后,使用plot画出其频谱。
三:设计切比雪夫的低通,高通,带通滤波器对原始信号进行滤波。
四:画出滤波后的信号时域、频域图五:考虑到国际标准人声的频率范围在300Hz~3400Hz,于是给原始语音信号加入3800hz的正弦高频噪声,再分析语音信号的特点。
六:设计低通计滤波器将高频噪声滤除。
2设计过程2.1本课题的设计要求1,使用wavrecord录入自己的语音信号,保存到一个数组后,再使用save函数进行保存文件,后使用wavplay函数进行播放。
MATLAB课程设计报告-语音信号的采集与处理
MATLAB课程设计报告-语音信号的采集与处理MATLAB 课程设计学院:电气信息工程学院课题:语音信号的采集与处理班级:电信 1201组长:组员:指导老师:语音信号的采集与处理一、实验要求(1)本课程设计要求掌握MATLAB 语言特性、数学运算和图形表示;掌握MATLAB 程序设计方法在信息处理方面的一些应用;掌握在 Windows 环境下,利用 MATLAB 进行语音信号采集与处理的基本方法。
(2)本课程设计分为基础与综合设计题目,其中基础题目为MATLAB 基本训练(必做);对于综合设计题,需按照任务书要求,对设计过程所进行的有关步骤进行理论分析,并对完成的设计作出评价,总结自己整个设计工作中的经验教训、收获;在课设最后一天提交课程设计报告,报告必须按照统一格式打印,装订成册。
二、实验内容1、利用windows 自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音,要有男声、女声)。
2、对录制的语音信号进行频谱分析,确定该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉 or 尖锐?)3、利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临界采样)对信号的影响。
这里涉及到采样下重采样的问题,请大家思考如何去做。
4、实现语音信号的快放、慢放、倒放、回声、男女变声。
5、对采集到的语音信号进行调制与解调,观测调制与解调前后信号的变化。
6、对语音信号加噪,然后进行滤波,分析不同的滤波方式对信号的影响。
7、如果精力和时间允许,鼓励利用MATLAB GUI 制作语音信号采集与分析演示系统。
三、MATLAB仿真任务一(陈康负责)1.利用频谱的分析利用Windows下的录音机,录制一段男生和女生的语音,存为*.WA V的文件。
然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换(FFT变换),得到信号的频谱特性,分析语音信号频谱。
利用Matlab进行声音处理的基本原理与实现
利用Matlab进行声音处理的基本原理与实现声音处理是一门利用计算机技术对声音进行采集、分析、处理和合成的领域。
Matlab是一种功能强大、易于使用的科学计算工具,被广泛应用于声音处理领域。
本文将介绍利用Matlab进行声音处理的基本原理和实现方法。
一、声音的采集与表示声音是由空气分子的振动引起的,采集声音需要将振动转换为电信号。
常见的声音采集设备有麦克风和电子麦克风。
麦克风接收到声音后,会将声音转换为模拟电信号,并通过模拟-数字转换器(ADC)转换为数字信号,以便计算机进行处理。
在计算机中,声音一般以波形图的形式进行表示。
波形图描述了声音在不同时间点上的振幅变化。
在Matlab中,可以使用音频文件格式如.WAV、.MP3等加载和保存声音数据。
二、声音数据的读取与播放利用Matlab可以读取和播放声音数据。
读取声音数据可以使用函数`audioread`,该函数可以读取声音文件并将其转换为数字信号。
例如,通过以下代码可以读取名为“sound.wav”的声音文件:```[sound, Fs] = audioread('sound.wav');```其中声音数据将存储在变量`sound`中,采样频率将存储在变量`Fs`中。
要播放声音数据,可以使用Matlab中的`sound`函数。
例如,通过以下代码可以播放声音数据:```sound(sound, Fs);```以上代码中,第一个参数为声音数据,第二个参数为采样频率。
三、基本声音处理功能Matlab提供了丰富的工具和函数来进行声音处理。
以下是一些常用的声音处理功能和对应的实现方法:1. 声音频谱分析声音频谱分析是指将声音信号转换为频域表示,以便分析声音中各个频率成分的能量分布。
在Matlab中,可以使用`fft`函数进行快速傅里叶变换,将声音信号转换为频谱。
转换后的频谱可以通过绘制频率和幅度的图形进行可视化。
2. 声音滤波声音滤波是指通过滤波器改变声音信号的频率特性。
Matlab中的音频处理技术
Matlab中的音频处理技术引言音频处理技术是数字信号处理的一个重要领域。
在现代社会中,音频处理技术被广泛应用于音乐制作、语音识别、语音合成等领域。
Matlab作为一种功能强大的数学软件工具,提供了丰富的音频处理函数和工具箱,为研究人员和工程师提供了很多便利。
本文将介绍Matlab中的音频处理技术,并探讨其中的一些应用案例。
一、音频信号的采样和量化在数字音频处理中,首先需要将模拟音频信号转换为数字信号。
这一过程包括两个步骤:采样和量化。
在Matlab中,可以使用`wavread`函数对音频进行采样,并用`wavwrite`函数将采样后的音频写入文件。
同时,可以使用`quantize`函数对音频信号进行量化,将其转换为离散的数字信号。
二、音频滤波技术音频滤波是音频信号处理的重要方法之一。
在Matlab中,可以使用`filter`函数对音频信号进行滤波。
常见的滤波器设计方法包括FIR滤波器和IIR滤波器。
FIR滤波器具有线性相位和稳定性的特点,可以使用fir1函数在Matlab中设计。
而IIR滤波器可以使用butter、cheby1和cheby2等函数进行设计。
三、音频特征提取音频特征提取是音频信号分析的重要环节。
在Matlab中,可以使用一系列函数提取音频信号的时域和频域特征。
其中,时域特征包括短时能量、短时过零率等,可以使用envelope、rms和zcr等函数进行计算。
频域特征包括频谱图和梅尔频率倒谱系数(MFCC)等,可以使用fft和mfcc函数进行计算。
四、音频压缩算法音频压缩是一种有效减小音频文件体积的方法。
在Matlab中,可以使用一系列算法进行音频压缩。
常见的音频压缩算法包括无损压缩算法和有损压缩算法。
无损压缩算法主要包括FLAC、ALAC等。
有损压缩算法则主要包括MP3、AAC等。
这些算法的实现可以使用Matlab中的相应函数或工具箱。
五、音频合成和混音音频合成是音频处理的一种重要应用。
MATLAB中的信号采集与处理技巧分享
MATLAB中的信号采集与处理技巧分享在信号处理领域,MATLAB是一款强大而常用的工具。
它提供了许多方便的函数和工具箱,可以帮助工程师们更加高效地采集和处理信号。
本文将分享一些在MATLAB中信号采集和处理的技巧,希望对读者有所帮助。
一、信号采集信号采集是信号处理的第一步,而在MATLAB中,有几种常见的方法可以采集信号。
1. 读取文件:MATLAB支持多种文件格式的读取,如.wav、.mp3等。
通过使用`audioread`函数可以方便地读取音频文件,并将其转换为MATLAB的矩阵形式,以便后续处理。
2. 录制音频:使用MATLAB提供的录音功能,可以通过调用`audiorecorder`对象来录制音频。
首先需要创建一个录音对象,并设置采样率、位深等参数。
然后,使用`record`函数开始录制音频,并使用`getaudiodata`函数获取录制的音频数据。
3. 采集外部设备信号:如果需要采集来自外部设备的信号,可以使用MATLAB提供的数据采集工具箱。
该工具箱支持与不同类型的硬件设备通信,如AD/DA转换器、传感器等。
通过设置相应的参数,可以实现对外部信号的采集。
二、信号处理信号处理是通过一系列的算法和方法对信号进行分析和处理的过程。
MATLAB 提供了许多函数和工具箱,可以帮助工程师们完成各种信号处理任务。
1. 时域分析:时域分析是对信号的时间特性进行分析。
MATLAB中的`plot`函数可以绘制信号的时域波形图。
使用`fft`函数可以进行傅里叶变换,将信号从时域转换为频域,并使用`abs`函数求取幅度谱。
另外,可以通过调整窗函数的类型和长度,对信号进行窗函数处理,以避免频谱泄漏等问题。
2. 频域分析:频域分析基于信号的频谱特性进行分析。
MATLAB提供了`spectrogram`函数和`pwelch`函数等用于计算信号的短时傅里叶变换和功率谱密度的函数。
通过观察频谱,可以了解信号的频率分布和谐波情况,从而做出相应的处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab 实验报告(题目二)
(题目二)声音信号的采集与滤波处理(采用IIR滤波器或FIR滤波器)
参考资料:信号的采集、数字信号处理及滤波实例
要求:(1)采集声音信号或打开已录好的声音文件,并显示其信号图与频域图。
(2)根据信号的特点,选用合适的滤波器,给定滤波器的规一化性能指标(参考指标,实际中依据每个同学所叠加噪声情况而定)例如:通带截止频率wp=0.25*pi, 阻通带截止频率ws=0.3*pi; 通带最大衰减Rp=1 dB; 阻带最小衰减Rs=15 dB,对信号进行滤波。
在Matlab中,可以利用函数fir1设计FIR滤波器,可以利用函数butte,cheby1和ellip设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应,滤波器设计完后,用filter函数用这些数字滤波器对含噪语音信号分别进行滤波处理。
(3)还原音乐信号,并画出其时域图与频域图,并与原始信号比较,且回放音乐信号。
(1)打开一个自己录制的音乐文件进行实验,这是实验程序:
fs=22050; %语音信号采样频率为22050
x1=wavread('e:\威尼斯的泪.wav'); %读取语音信号的数据,赋给变量x1
sound(x1,22050); %播放语音信号
y1=fft(x1,1024); %对信号做1024点FFT变换
f=fs*(0:511)/1024;
figure(1)
plot(x1) %做原始语音信号的时域图形
title ('原始语音信号');
xlabel('time n');
ylabel('fuzhi n');
figure(2)
freqz(x1) %绘制原始语音信号的频率响应图title ('频率响应图')
figure(3)
subplot(2,1,1);
plot(abs(y1(1:512))) %做原始语音信号的FFT频谱图title ('原始语音信号FFT频谱')
subplot(2,1,2);
plot(f,abs(y1(1:512)));
title ('原始语音信号频谱') xlabel('Hz');
ylabel('fuzhi');
实验效果
(2)实验程序
clear;
fs=22050;
x1=wavread('e:\威尼斯的泪.wav');
f=fs*(0:511)/1024;
t=0:1/22050:(length(x1)-1)/22050; %将所加噪声信号的点数调整到与原始信号相同%Au=1
d=[0.5*cos(2*pi*1000*t)]'; %噪声为1kHz的余弦信号
x2=x1+d;
%sound(x1,8000);
%pause(50);
sound(x2,22050); %播放加噪声后的语音信号
y2=fft(x2,1024);
figure(1)
plot(t,x2)
title('加噪后的信号');
xlabel('time n');
ylabel('fuzhi n');
figure(2)
subplot(2,1,1);
plot(f,abs(x1(1:512)));
title('原始语音信号频谱');
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2);
plot(f,abs(x2(1:512))); title('加噪后的信号频谱'); xlabel('Hz');
ylabel('fuzhi');
实验效果
(3)实验程序
fs=22050; x1=wavread('e:\威尼斯的泪.wav');
t=0:1/22050:(length(x1)-1)/22050;
Au=0.5; d=[Au*cos(2*pi*8000*t)]';x2=x1+d;
wp=0.25*pi;ws=0.3*pi;
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'); %选择滤波器的最小阶数
[Z,P,K]=buttap(N); %创建butterworth模拟滤波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az); %绘制频率响应曲线
figure(1)
plot(W*Fs/(2*pi),abs(H))
grid
xlabel('频率/Hz')
ylabel('频率响应幅度')
title('Butterworth')
f1=filter(bz,az,x2);
figure(2)
subplot(2,1,1)
plot(t,x2) %画出滤波前的时域图
title('滤波前的时域波形');
subplot(2,1,2)
plot(t,f1); %画出滤波后的时域图title('滤波后的时域波形');
sound(f1,22050); %播放滤波后的信号F0=fft(f1,1024);
f=fs*(0:511)/1024;
figure(3)
y2=fft(x2,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');
实验结果:。