matlab语音信号采集与初步处理要点
Matlab实验——语音信号的录制和处理
基于 MATLAB 的语音信号分析与处理的实验设计1.实验目的综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
2.实验基本要求①学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。
②掌握在 Windows 环境下语音信号采集的方法。
③掌握数字信号处理的基本概念、基本理论和基本方法。
④掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法。
⑤学会用 MATLAB 对信号进行分析和处理。
3.实验内容录制一段自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,用MATLAB 设计一信号处理系统界面。
4、采集系统说明:MATLAB函数;麦克风输入方式MATLAB中提供了强大的数据采集工具箱(DAQ-Data Acquisition Toolbox),可满足控制声卡进行数据采集的要求:%记录声音 wavrecord(n,fs,ch,dtype)%发送向量信号 waveplay(y,fs)%读取wave文件 wavread(file)%写wave文件 wavwrite(file),文件的后缀名为.wav%sound(y,fs) %向扬声器送出音频信号滤波函数说明:采用Kaiser Window FIR:Sampling Frequency: 8192Type:LowpassFc:956.6Beta:5。
基于MATLAB的语音信号的采集与处理详解
数字信号处理课程设计题目:基于MATLAB的语音信号的采集与处理学院:皖西学院专业:通信工程班级:通信1001班学号:2010013461 2010013494姓名:刘敏纵大庆指导教师:何富贵摘要:本次课程设计题目为<<基于MATLAB的语音信号的采集与处理>>。
首先我们利用计算机上的录音软件获得语音信号,然后利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号!1.背景2. 设计目的 (2)3. 设计原理 (2)4. 设计过程 .......................................... ,,, 35. 实验代码及结果 (4)5.1 语音信号的采集 (4)5.2 语音信号加噪与频谱分析 ..................................... ,,,, 7 5.3 巴特沃斯滤波器的设计 .. (9)5.4 比较滤波前后语音信号波形及频谱 (10)6. 收获与体会 (12)参考文献 (13)1. 引言数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。
它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。
具有灵活、精确、抗干扰强、度快等优点。
数字滤波器,是数字信号处理中及其重要的一部分。
随着信息时代和数字技术的发展,受到人们越来越多的重视。
数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。
数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应(FIR, Finite Impulse Response)滤波器和无限冲激响应(IIR,Infin ite Impulse Resp on se) 滤波器。
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的语音信号的采集与分析摘要:我们通过学习使用MA TLAB仿真软件实现语音信号分析,加深对信号与系统这门课程所学习内容的理解,锻炼自学能力和动手能力。
我们通过电脑的声卡采集声音信号,借助已有的知识和MATLAB对采集的声音信号进行时域波形和频域频谱的显示,研究男女声信号的差别,通过查找资料提取声音信号的基音频率,并通过大量测试确定门限值来自动判别男女声信号,最后对信号进行降采样处理并播放,重新绘制频谱图分析,验证抽样定理。
关键词:MA TLAB仿真、频谱分析、基音频率、降采样、抽样定理。
1.音频信号的采集我们所要分析的语音信号需要自行采集,所以信号分析的第一步就是采集音频信号。
实现音频信号的采集最简单的办法就是通过电脑的声卡直接进行采集,这样采集到的音频信号虽然已经被转化成了数字量存储在电脑中,但通过查询我们了解到电脑录音所使用的采样频率是为44100Hz,完全保证了人类耳朵能听到所有声音频率分量的无失真采集,如果通过MA TLAB软件采集还能够调节采样频率,所以能够完全满足我们实验的要求。
1.1使用MATLAB采集语音信号通过上网查询,我们了解到MATLAB有自带的音频信号采集函数audiorecord(),通过它可以在程序运行时即时采集音频信号进行存储并处理,并且可以通过改变输入参数来改变采样频率,可以直接模拟降采样的过程,直观地验证抽样定理。
但鉴于我们需要重复进行试验和演示,即时采集信号显得繁琐且不必要,而且会增加我们非界面化编程的难度,所以我们放弃了这种方法。
1.2使用电脑录音机采集语音信号通过电脑自带的录音机软件可以实现更简单的音频信号采集操作,虽然采样频率不可调节,但其固有的采样频率完全满足了我们对所采集信号的要求,可以通过MATLAB的降采样处理的到较低采样频率的信号。
这样采集的音频信号会直接以文件的形式存储在电脑中,方便我们随时进行调用,方便分析与演示,所以我们决定采用这种方式实现语音信号的采集。
MATLAB语音信号采集与处理
MATLAB课程设计报告课题:语音信号采集与处理目录一、实践目的 (3)二、实践原理: (3)三、课题要求: (3)四、MATLAB仿真 (4)1、频谱分析: (4)2、调制与解调: (5)3、信号变化: (8)快放: (8)慢放: (8)倒放: (8)回声: (8)男女变声: (9)4、信号加噪 (10)5、用窗函数法设计FIR滤波器 (11)FIR低通滤波器: (12)FIR高通滤波器: (13)FIR带通滤波: (14)一、实践目的本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。
此次实习课程主要是为了进一步熟悉对matlab软件的使用,以及学会利用matlab对声音信号这种实际问题进行处理,将理论应用于实际,加深对它的理解。
二、实践原理:利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。
语音信号的“短时谱”对于非平稳信号, 它是非周期的, 频谱随时间连续变化, 因此由傅里叶变换得到的频谱无法获知其在各个时刻的频谱特性。
如果利用加窗的方法从语音流中取出其中一个短断, 再进行傅里叶变换, 就可以得到该语音的短时谱。
三、课题要求:○1利用windows 自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音,要有男声、女声)。
○2对录制的语音信号进行频谱分析,确定该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉or 尖锐)。
○3利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临界采样)对信号的影响。
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提供了许多工具和函数进行语音信号的采集和处理。
语音信号的采集可以通过外部设备实现,如麦克风或录音设备。
MATLAB可以通过音频输入功能进行语音信号的采集和处理。
该功能提供了多个采样率和位深度设置,可以按照需要进行设置。
采集的语音信号可以通过MATLAB的图形用户界面进行实时显示和处理。
MATLAB提供了很多工具和函数进行语音信号的处理,如语音分析、信号过滤、音量调整和时域和频域分析等。
MATLAB的语音信号处理工具箱提供了很多预处理和分析函数,可以进行预处理、语音识别、特征提取等操作。
这些工具和函数可以帮助开发人员更好地理解和分析语音信号,提高语音识别的准确性和鲁棒性。
MATLAB还提供了图形用户界面(GUI)、应用程序接口(API)、命令行和脚本等方式进行语音信号处理。
GUI可以方便地进行交互式处理和调试,API可以方便地集成到其他应用程序中,命令行和脚本可以进行批处理和复杂的操作。
MATLAB的语音信号处理工具还可以与其它工具箱,如数字信号处理工具箱和统计学工具箱进行整合,以开发更强大和可靠的语音处理应用程序。
MATLAB语音信号处理
MATLAB语⾳信号处理数字信号处理课设,我们使⽤MATLAB对语⾳信号进⾏了⼀系列处理,并将其所有功能集中于下图界⾯中:这个界⾯涉及功能众多,其中包括语⾳信号的观察分析、⾳⾊变换、AM调制解调、减抽样、加噪去噪、相频分析和幅频滤波等,最重要的是对MATLAB中函数的掌握,通过不同函数的组合实现你想要实现的功能。
本篇不会给出整个界⾯的程序,下⾯会分块给出每个功能的程序,整个界⾯只需GUI设计界⾯⽂件、定义结构体并把对应键程序打进去即可。
1、语⾳信号的采集1.1题⽬要求使⽤windows下的录⾳机录制⼀段语⾳信号、⾳乐信号或者采⽤其他软件截取⼀段⾳乐信号(要求:时间不超过5s,⽂件格式为WAV。
)①请每位同学都参与录⾳,内容⾃定。
②使⽤wavread语句读取语⾳/⾳乐信号获取抽样率;(注意:读取的信号是双声道信号,即为双列向量,需要分列处理);③输出时域语⾳/⾳乐信号的波形。
④实现对录⾳信号的声⾳⼤⼩的调节。
⑤实现对两种语⾳/⾳乐信号的混⾳⾳效。
⑥实现⾳乐信号的回⾳⾳效。
1.2设计内容及⽅案①读取⾳频信号:我是通过wavread函数读取.wav⽂件的⽅式来获得,当然⾸先要⾃⼰创建⼀个.wav⾳频,我是通过电脑录⾳⽣成.mp3然后格式⼯⼚转成.wav的,需保存到同⼀⽂件夹下。
②分声道处理:⼀般⾳乐和语⾳信号都是双声道信号,时域和频谱图会有两个颜⾊,所以要取单列来分析,通过x1=x(:,1)语句来实现。
③画时域波形图:⽤plot函数来画图,注意横坐标为时间t。
④⾳量⼤⼩调节:通过将⾳频直接乘⼀个系数来实现调⾳量。
⑤混⾳和回声:混⾳即将两个⾳频相加,要相加就得保证矩阵⼀样,所以要通过截取并补零矩阵来实现;回声是把三个信号叠加,这三个信号在不同位置补零⾳量也逐渐变⼩,就可以实现回声。
⑥播放声⾳:本题我使⽤wavplay来播放声⾳,会有警告,后⾯的题我⽤sound⽐较好。
1.3程序源码及注释clear[x,fs] = wavread('beautiful.wav');%⾳乐信号[y,fs1]= wavread('1.wav');%⼥⽣声⾳[z,fs2]= wavread('2.wav');%男⽣声⾳%输出频率fsfs1fs2%⾳乐语⾳信号分声道处理x1=x(:,1);y1=y(:,1);z1=z(:,1);%画⾳乐信号时域图n1=length(x1);%length取数列长度即元素个数figure(1)t1=(0:(n1-1))/fs;plot(t1,x1);axis([0,5,-1,1]);xlabel('时间t');title('⾳乐信号时域波形');%画语⾳信号时域图n2=length(y1);figure(2)subplot(2,1,1);t2=(0:(n2-1))/fs1;plot(t2,y1);%⼥⽣axis([0,4,-0.5,0.5]);xlabel('时间t');ylabel('幅度');title('⼥⽣语⾳信号时域波形');n3=length(z1);subplot(2,1,2);t3=(0:(n3-1))/fs2;plot(t3,z1);%男⽣axis([0,4,-0.5,0.5]);xlabel('时间t');ylabel('幅度');title('男⽣语⾳信号时域波形');%对语⾳信号声⾳⼤⼩调节wavplay(y,fs1); %播放原语⾳y11=10*y;wavplay(y11,fs1); %加⼤⾳量播放y22=0.5*y;wavplay(y22,fs1); %减⼩⾳量播放%两种语⾳信号的混⾳[m,n]=size(y1);%size取矩阵的⾏列数[m0,n0]=size(z1);a=zeros(abs(m-m0),n);%两矩阵⾏数差为零矩阵⾏数if length(y1)<length(z1)y2=[y1;a];y3=y2+z1;%两个矩阵⾏数⼀样才能相加,所以要补零elsey2=[z1;a];y3=y2+y1;%y1和z1中长的那个不变,短的那个补零end;wavplay(y3,fs1) ;%播放混⾳语⾳%画混⾳波形figure(3)subplot(2,1,1);t4=(0:(max(n2,n3)-1))/fs1;plot(t4,y3);axis([0,4.5,-0.5,0.5]);xlabel('时间');ylabel('幅度');title('两语⾳信号叠加后时域波形');%⾳乐信号的回⾳x11=x1(1:200000);%截取部分x11=x11';%因为输出为⼀列所以要转置成⼀⾏int0=zeros(1,20000);%1⾏2000列的零矩阵temp1=[x11,int0,int0];temp2=[int0,0.6*x11,int0];temp3=[int0,int0,0.3*x11];%通过补零实现延时,同时声⾳⼀个⽐⼀个⼩hui=temp1+temp2+temp3;%三重声⾳相加实现回声N=length(hui);wavplay(hui,fs1);%播放回⾳⾳乐%画回声波形subplot(2,1,2);t1=(0:(N-1))/fs;plot(t1,hui);axis([0,4.5,-1,1]);xlabel('时间');ylabel('幅度');title('回声时域波形');1.4运⾏结果仿真结果分析:我听到了原声和⾳量放⼤减⼩的声⾳,也听到了混⾳和回声的效果,变化明显;本题我画了⾳乐和两个语⾳信号的时域波形以及混⾳回声的时域波形,⾳乐信号幅度⽐语⾳信号⾼且连贯性⾼,混⾳之后幅度叠加,回声之后幅度也增⼤,波形有很明显的变化。
利用Matlab进行声音信号处理的技术方法
利用Matlab进行声音信号处理的技术方法引言:在现代科技飞速发展的时代,声音信号处理成为一个热门的技术领域。
利用Matlab这一功能强大的软件工具,可以进行各种声音信号处理的研究和应用。
本文将介绍利用Matlab进行声音信号处理的技术方法,包括声音信号采集、预处理、频域分析、音频特征提取、降噪以及语音识别等方面的内容。
一、声音信号采集声音信号采集是声音信号处理的第一步,它的质量直接影响后续处理的效果。
在Matlab中,我们可以利用声音输入和录音功能来实现声音信号的采集。
声音输入函数可以从外部声卡、麦克风等设备录取音频数据,而录音函数则可以通过计算机内部的声卡进行录音。
要进行声音信号采集,首先要设置好采样率和采样位数。
采样率表示每秒采样的次数,常用的采样率有8kHz、16kHz和44.1kHz等。
采样位数表示每个采样值的位数,一般为8位或16位。
在Matlab中,可以使用audiorecorder函数设置采样率和采样位数。
二、声音信号的预处理声音信号预处理是为了去除噪声和提高信号质量,以便后续处理。
常用的声音信号预处理方法包括去噪、滤波、归一化等。
去噪是声音信号预处理的重要步骤。
常见的去噪方法有时域滤波和频域滤波。
时域滤波是通过卷积运算对声音信号进行滤波,可以去除特定频率范围内的噪声。
频域滤波则是将声音信号从时域转换到频域,利用频域上的滤波器对噪声进行滤波。
滤波是声音信号预处理的另一种常用方法,它可以去除声音信号中的杂音和干扰信号。
低通滤波器可以去除高频噪声,而高通滤波器则可以去除低频噪声。
在Matlab中,可以使用fir1函数设计滤波器,然后使用filter函数进行滤波。
归一化是将声音信号的振幅范围缩放到合适的范围内,以便后续处理。
通过归一化,可以消除不同音频文件之间的振幅差异。
三、频域分析频域分析是声音信号处理中常用的方法之一。
在Matlab中,可以通过使用快速傅里叶变换(FFT)函数对声音信号进行频谱分析。
基于matlab的语音信号的采集与处理
目录第1章前言 0第2章语音信号分析处理的目的和要求 (1)2.1MATLAB软件功能简介 .............................................................................................. - 1 -2.2课程设计意义................................................................................................................ - 2 -第3章语音信号的仿真原理.. (2)第4章语音信号的具体实现 (3)4.1语音信号的采集.............................................................................................................. - 3 -4.2语音信号加噪与频谱分析............................................................................................. - 5 -4.3设计巴特沃斯低通滤波器............................................................................................. - 6 -4.4用滤波器对加噪语音滤波............................................................................................. - 7 -4.5比较滤波前后语音信号波形及频谱............................................................................ - 7 -第5章总结.................................................................................................................................. - 9 -参考文献..................................................................................................................................... - 10 -附录.............................................................................................................................................. - 11 -语音信号的采集与处理第1章前言数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。
基于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与信号系统》实验报告学院:学号:姓名:考核实验——语音信号采集与处理初步一、课题要求1.语音信号的采集2.语音信号的频谱分析3.设计数字滤波器和画出频率响应4.用滤波器对信号进行滤波5.比较滤波前后语音信号的波形及频谱6.回放和存储语音信号(第5、第6步我放到一起做了)二、语音信号的采集本段音频文件为胡夏演唱的“那些年”的前奏(采用Audition音频软件进行剪切,时长17秒)。
运行matlab软件,在当前目录中打开原音频文件所在的位置,采用wavread函数对其进行采样,并用sound函数可进行试听,程序运行之后记下采样频率和采样点。
利用函数wavread对语音信号的采集的程序如下:clear;[y,fs,bits]=wavread('music.wav'); %x:语音数据;fs:采样频率;bits:采样点数sound(y,fs,bits); %话音回放程序运行之后,在工作区间中可以看到采样频率fs=44100Hz,采样点bits=16三、语音信号的频谱分析先画出语音信号的时域波形,然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
语音信号的FFT频谱分析的完整程序如下:clear;[y,fs,bits]=wavread('music.wav'); %x:语音数据;fs:采样频率;bits:采样点数sound(y,fs,bits); %话音回放n = length (y) ; %求出语音信号的长度Y=fft(y,n); %傅里叶变换subplot(2,1,1);plot(y);title('原始信号波形');subplot(2,1,2);plot(abs(Y)); title('原始信号频谱');程序结果如下图:四、设计数字滤波器和画出频率响应根据语音信号的特点给出有关滤波器的性能指标:1)低通滤波器性能指标,fp=1000Hz,fc=1200 Hz,As=100dB,Ap=1dB;2)高通滤波器性能指标,fc=4800 Hz,fp=5000 Hz As=100dB,Ap=1dB。
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 的实现方法。
二、实验原理1. 语音信号的录音、读入、放音等:练习matlab 中几个音频处理函数,利用函数wavread 对语音信号进行采样,记住采样频率和采样点数,给出以下语音的波形图(2.wav )。
利用wavplay 或soundview 放音。
也可以利用wavrecord 自己录制一段语音,并进行以上操作(需要话筒)。
2. 语音信号的分帧:对语音信号进行分帧,可以利用voicebox 工具箱中的函数enframe 。
voicebox 工具箱是基于GNU 协议的自由软件,其中包含了很多语音信号相关的函数。
3. 语音信号的加窗:本步要求利用window 函数设计窗口长度为256(N=256)的矩形窗(rectwin)、汉明窗(hamming)及汉宁窗(hann)),利用wvtool 函数观察其时域波形图及频谱特性,比较得出结论。
观察整个信号加矩形窗及汉明窗后的波形,利用subplot 与reshape 函数将分帧后波形、加矩形窗波形及加汉明窗波形画在一张图上比较。
取出其中一帧,利用subplot 与reshape 函数将一帧语音的波形、加矩形窗波形及加汉明窗波形画在一张图上比较将得出结论。
4. 预加重:即语音信号通过一个一阶高通滤波器19375.01--z 。
三、实验步骤、实验程序、图形及结论1.语音信号的录音、读入、放音等程序:[x,fs,nbit]=wavread('D:\2.wav'); %fs=10000,nbit=16y=soundview('D:\2.wav')2.语音信号的分帧程序:[x,fs,nbit]=wavread('D:\2.wav');len=256;inc=128;y=enframe(x,len,inc);figure;subplot(2,1,1),plot(x)subplot(2,1,2),plot(y)3.语音信号加窗:程序:N=120;w = window('rectangle',N);w1 = window('hamming',N);w2 = window('hanning',N);wvtool(w,w1,w2)4.预加重程序:[x,fs,nbit]=wavread('D:\2.wav');len=256;inc=128;y=enframe(x,len,inc);z=filter([1-0.9375],1,y)figure(2)subplot(2,1,1),plot(y)subplot(2,1,2),plot(z)四、思考题1.语音信号包括哪些预处理,作用分别是什么?2.不同窗口的优缺点,窗口长度如何选取?答:1. 预处理通常包括:放大与自动增益控制、反混叠滤波、模数变换等内容。
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`函数等用于计算信号的短时傅里叶变换和功率谱密度的函数。
通过观察频谱,可以了解信号的频率分布和谐波情况,从而做出相应的处理。
基于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进行信号处理领域的各种分析和实际应用打下基础。
2. 本题目的意义本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB 的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。
MATLAB用于语音信号的处理[1]
MATLAB用于语音信号的处理一.设计目的通过该设计,要求对语音信号的采集、处理、传输、显示、和存储等有一个系统的掌握和理解。
理解信号采样频率的概念,掌握对语音信号进行时域和频域分析方法,了解滤波器的概念及原理。
二.设计内容1.语音信号的采集2.语音信号的频谱分析3.设计数字滤波器4.用滤波器对信号进行滤波5.分析滤波后得到的语音信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化6.回放语音信号三.总体方案设计1.利用Windows下的录音机或其他软件,录制一段语音信号,时间控制在1s左右,然后再MATLAB软件平台下,利用函数wavread对录制的语音信号进行采样,记住采样频率和采样点数。
MATLAB函数:Wavread功能对语音信号进行采样,wavread函数的格式为:[y,fs,bits]=wavread('d:\kugou\2.wav',[n1,n2]),返回文件中语音信号从n1到n2之间的样本。
2.先画出语音信号的时域波形,然后对语音信号进行快速傅里叶变换,得到信号的频谱特性。
MATLAB函数:fft功能是实现快速傅里叶变换,fft函数的格式为:y=fft(y),返回向量x的不连续fourier变换。
3.根据低通滤波器的性能指标设计出滤波器。
MATLAB函数:Ellipord功能是要求低通滤波器的参数,ellipord函数的格式为:[N,Wn]=ellipord(Wp,Ws,Rp,Rs),返回设计滤波器的阶数和截止频率。
Ellip功能是设计IIR滤波器,ellip函数的格式为:[b,a]=ellip(N,Rp,Rs,Wn),返回设计滤波器的低通滤波器的参数。
4.用设计的滤波器对采集的语音信号进行滤波。
MATLAB函数:filter功能对信号进行滤波,filter函数的格式为:y=filter(b,a,x),由给定的滤波器对x进行滤波。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《matlab与信号系统》实验报告学院:学号:姓名:考核实验——语音信号采集与处理初步一、课题要求1.语音信号的采集2.语音信号的频谱分析3.设计数字滤波器和画出频率响应4.用滤波器对信号进行滤波5.比较滤波前后语音信号的波形及频谱6.回放和存储语音信号(第5、第6步我放到一起做了)二、语音信号的采集本段音频文件为胡夏演唱的“那些年”的前奏(采用Audition音频软件进行剪切,时长17秒)。
运行matlab软件,在当前目录中打开原音频文件所在的位置,采用wavread函数对其进行采样,并用sound函数可进行试听,程序运行之后记下采样频率和采样点。
利用函数wavread对语音信号的采集的程序如下:clear;[y,fs,bits]=wavread('music.wav'); %x:语音数据;fs:采样频率;bits:采样点数sound(y,fs,bits); %话音回放程序运行之后,在工作区间中可以看到采样频率fs=44100Hz,采样点bits=16三、语音信号的频谱分析先画出语音信号的时域波形,然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
语音信号的FFT频谱分析的完整程序如下:clear;[y,fs,bits]=wavread('music.wav'); %x:语音数据;fs:采样频率;bits:采样点数sound(y,fs,bits); %话音回放n = length (y) ; %求出语音信号的长度Y=fft(y,n); %傅里叶变换subplot(2,1,1);plot(y);title('原始信号波形');subplot(2,1,2);plot(abs(Y)); title('原始信号频谱');程序结果如下图:四、设计数字滤波器和画出频率响应根据语音信号的特点给出有关滤波器的性能指标:1)低通滤波器性能指标,fp=1000Hz,fc=1200 Hz,As=100dB,Ap=1dB;2)高通滤波器性能指标,fc=4800 Hz,fp=5000 Hz As=100dB,Ap=1dB。
要求学生分别用窗函数法和双线性变换法设计上面要求的两种滤波器,在MATLAB中,可以利用函数fir1设计FIR滤波器;用函数butte设计IIR滤波器;最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。
分析如下:函数fir1默认的设计滤波器的方法为窗函数法,其中可选的窗函数有Rectangular Barlrtt Hamming Hann Blackman窗,其相应的都有实现函数。
函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。
1、IIR低通滤波器:Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Fs*tan(wp/2);[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通滤波器的阶数和截止频率[b11,a11]=butter(n11,wn11,'s'); %求S域的频率响应的参数[num11,den11]=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换[h,w]=freqz(num11,den11); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h));title('IIR低通滤波器');legend('用butter设计');grid;Ft=8000;Fp=5000;Fs=4800;wp1=tan(pi*Fp/Ft);%高通到低通滤波器参数转换ws1=tan(pi*Fs/Ft);wp=1;ws=wp1*wp/ws1;[n13,wn13]=cheb1ord(wp,ws,1,100,'s'); %求模拟的低通滤波器阶数和截止频率[b13,a13]=cheby1(n13,1,wn13,'s'); %求S域的频率响应的参数[num,den]=lp2hp(b13,a13,wn13);%将S域低通参数转为高通的[num13,den13]=bilinear(num,den,0.5); %利用双线性变换实现频率响应S域到Z域转换[h,w]=freqz(num13,den13);plot(w*21000*0.5/pi,abs(h));title('IIR高通滤波器');legend('用cheby1设计');axis([0 12000 0 1.5]);grid;用窗函数设计低通滤波器的程序如下:Ft=8000;Fp=1000;Fs=1200;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=100;p=1-10.^(-rp/20); %通带阻带波纹s=10.^(-rs/20);fpts=[wp ws];mag=[1 0];dev=[p s];[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);%由kaiserord求滤波器的阶数和截止频率b21=fir1(n21,wn21,Kaiser(n21+1,beta)); %由fir1设计滤波器[h,w]=freqz(b21,1); %得到频率响应plot(w/pi,abs(h));title('FIR低通滤波器');grid;高通滤波器的性能指标:fp=3500Hz,fc=4000Hz,As=50dB,Ap=1dB;(由于边界频率必须位于采样频率的中间值,此时指标略微有些改动,望老师见谅)Ft=8001;Fp=4000;Fs=3500;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=100;p=1-10.^(-rp/20); %通带阻带波纹s=10.^(-rs/20);fpts=[ws wp];mag=[0 1];dev=[p s];[n23,wn23,beta,ftype]=kaiserord(fpts,mag,dev);b23=fir1(n23,wn23,'high',Kaiser(n23+1,beta)); %由fir1设计滤波器[h,w]=freqz(b23,1); %得到频率响应plot(w*12000*0.5/pi,abs(h));title('FIR高通滤波器');axis([3000 6000 0 1.2]);grid;五、用滤波器对信号进行滤波比较两种滤波器(FIR和IIR)的性能,然后用性能好的各滤波器(低通、高通)分别对采集的信号进行滤波,在MATLAB中,FIR滤波器利用函数fftfilt 对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
1、双线性变换法:(1)低通滤波器:z11=filter(num11,den11,s);(2)高通滤波器:z12=filter(num12,den12,s);2、窗函数法:(1)低通滤波器:z21=fftfilt(b21,s);(2)高通滤波器:z22=fftfilt(b22,s);六、比较滤波前后语音信号的波形、频谱、声音的变化要求:(1)要求在一个窗口同时画出滤波前后的波形及频谱;(2)用函数sound对声音进行回放。
感觉滤波前后声音的变化;(3)用函数wavwrite对滤波后的文件进行存储存储1、双线性变换法——低通滤波器IIR低通:clear;[y,fs,bits]=wavread('music.wav'); %x:语音数据;fs:采样频率;bits:采样点数sound(y,fs,bits); %话音回放n = length (y) ; %求出语音信号的长度Y=fft(y,n); %傅里叶变换Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Fs*tan(wp/2);[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通滤波器的阶数和截止频率[b11,a11]=butter(n11,wn11,'s'); %求S域的频率响应的参数[num11,den11]=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z 域的变换[h,w]=freqz(num11,den11); %根据参数求出频率响应z11=filter(num11,den11,y);sound(z11);m11=fft(z11); %求滤波后的信号subplot(2,2,1);plot(abs(Y),'g');title('滤波前信号的频谱');grid;subplot(2,2,2);plot(abs(m11),'r');title('滤波后信号的频谱');grid;subplot(2,2,3);plot(y);title('滤波前信号的波形');grid;subplot(2,2,4);plot(z11);title('滤波后的信号波形');grid;wavwrite(y, 'IIR低通.wav');%滤波后的音频信号名为“IIR低通.wav”2、双线性变换法——高通滤波器IIR高通:clear;[y,fs,bits]=wavread('music.wav'); %x:语音数据;fs:采样频率;bits:采样点数sound(y,fs,bits); %话音回放n = length (y) ; %求出语音信号的长度Y=fft(y,n); %傅里叶变换Ft=8000;Fp=5000;Fs=4800;wp1=tan(pi*Fp/Ft);%高通到低通滤波器参数转换ws1=tan(pi*Fs/Ft);wp=1;ws=wp1*wp/ws1;[n12,wn12]=cheb1ord(wp,ws,1,100,'s'); %求模拟的低通滤波器阶数和截止频率[b12,a12]=cheby1(n12,1,wn12,'s'); %求S域的频率响应的参数[num,den]=lp2hp(b12,a12,wn12);%将S域低通参数转为高通的[num12,den12]=bilinear(num,den,0.5); %利用双线性变换实现频率响应S域到Z域转换[h,w]=freqz(num12,den12);z12=filter(num12,den12,y);sound(z12);m12=fft(z12); %求滤波后的信号subplot(2,2,1);plot(abs(Y),'g');title('滤波前信号的频谱');grid;subplot(2,2,2);plot(abs(m12),'r');title('滤波后信号的频谱');grid;subplot(2,2,3);plot(y);title('滤波前信号的波形');grid;subplot(2,2,4);plot(z12);title('滤波后的信号波形');grid;wavwrite(y, 'IIR高通.wav');%滤波后的音频信号名为“IIR高通.wav”高通滤波后,此时只有少许杂音,原因是低频分量被高通滤波器衰减,而人声部分正好是低频部分,所以只剩下杂音,或者发出高频杂音但人的耳朵听不到。