matlab 语音信号采集,基于MATLAB的语音信号采集与处理

41528d3028836879cd698677c3999917.gif基于MATLAB的语音信号采集与处理

基于MATLAB的语音信号采集与处理 1.理论原理 利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。语音信号的“ 短时谱”对于非平稳信号, 它是非周期的, 频谱随时间连续变化, 因此由傅里叶变换得到的频谱无法获知其在各个时刻的频谱特性。如果利用加窗的方法从语音流中取出其中一个短断, 再进行傅里叶变换, 就可以得到该语音的短时谱。 2. 具体流程 (1). 语音信号的采集及分析 源代码: fs=22050; x1=wavread( F:\Documents and Settings\Administrator\桌面\333.wav ); sound(x1,22050); y1=fft(x1,1024); f=fs*(0:511)/1024; figure(1) plot(x1) title( 原始语音信号 ); xlabel( 时间 ); ylabel( 幅值 ); figure(2) freqz(x1) title( 频率响应图 ) figure(3) subplot(2,1,1); plot(abs(y1(1:512))) title( 原始语音信号FFT频谱 ) subplot(2,1,2); plot(f,abs(y1(1:512))); title( 原始语音信号频谱 ) xlabel( Hz ); ylabel( 幅值 ); 原始语音信号波形: 语音信号频率响应图: 原始语音信号FFT及信号频谱: (2). 给原始信号加上一个高频噪声,5500Hz 源代码: fs=22050; x1=wavread( F:\Documents and Settings\Administrator\桌面\333.wav ); %读取语音信号的数据,赋给变量x1 f=fs*(0:511)/1024; %将0到511,步长为1的序列的值与fs相乘并除以1024的值,赋值给f t=0:1/fs:(length(x1)-1)/fs; %将0到x1的长度减1后的值除以fs的值,且步长为1/fs的值,的序列的值,赋予t Au=0.5; %噪声幅值 d=Au*sin(2*pi*5500*t) ; %所加的噪声是正弦信号 x2=x1+d; %将正弦信号噪声加在语音信号上 sound(x2,22050); %播放语音信号 y1=fft(x1,1024); %对信号y1做1024点FFT变换 y2=fft(x2,1024); %对信号y2做1024点FFT变换 figure(1); %创建图形窗1 plot(t,x2); %做加噪后的信号时域图形(绘出t对x2的线性图) title( 加噪后的信号 ); xlabel( 时间 ); %x轴的名字是“时间” ylabel( 幅值 ); %y轴的名字是“幅值” figure(2) %创建图形窗2 subplot(2,1,1); % 创建两行一列绘图区间的第1个绘图区间 plot(f,abs(y1(1:512))); %做原始语音信号的频谱图 title( 原始语音信号频谱 ); xlabel( Hz ); %x轴的名字是“Hz” ylabel( 幅值 ); % y轴的名字是“幅值” subplot(2,1,2); %创建两行一列绘图区间的第2个绘图区间 plot(f,abs(y2(1:512))); %做加噪后的语音信号的频谱图(abs是绝对值,plot是直角坐标下线性刻度曲线) title( 加噪后的信号频谱 ); xlabel( Hz ); % x轴的名字是“Hz” ylabel( 幅值 ); % y轴的名字是“幅值” 加噪后的信号波形: 原始语音信号和加噪后的信号频谱: (3)设计一个滤波器,滤除高频噪声 用双线性变换法设计巴特沃思低通滤波器 在加噪声的代码基础上续写代码: wp=0.25*pi; %通带截止频率 ws=0.3*pi; %阻带截止频率 Rp=1; %通带最大衰减(db) Rs=15; %阻带最大衰减(db) 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 ); %选择滤波器的最小阶数(估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc) [z,p,k]=buttap(N); %创建Butterworth低通滤波器原型 [Bap,Aap]=zp2tf(z,p,k); %将零极点增益转换为普遍分子,分母 [b,a]=lp2lp(Bap,Aap,Wn); %将普遍的分子和分母转换为以Wn为截止频率 [bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换(模拟转换为数字) [H,W]=freqz(bz,az); %求频率响应 figure(9) plot(W*Fs/(2*pi),abs(H)) %绘制Butterworth低通滤波器频率响应曲线 grid

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计要求 1、语音信号采集利用 Windows下的录音机,录制一段自己的话音,时间在1s内然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。 2、语音信号的频谱分析在Matlab中,可以利用函数fft对信号进行快速傅立叶变换,得到信号的频谱特性,要求学生首先画出语音信号的时域波形,然后对语音信号进行频谱分析。 3、设计数字滤波器和画出其频率响应给出各滤波器的性能指标; 给定滤波器的性能指标如下: (1)低通滤波器的性能指标:fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB, (2)高通滤波器的性能指标:fb=5000Hz,fc=4800Hz, As=100dB,Ap=1dB, (3)带通滤波器的性能指标:fb1=1200Hz,fb2=3000Hz, fc1=1000Hz,fc2=3200Hz, As=100dB,Ap=1dB, 采用窗函数法和双线性变换法设计上面要求的3种滤波器,并画出滤波 器的频率响应。 4、用滤波器对信号进行滤波 ,然后用自己设计的滤波器对采集到的信号进行滤波,画出滤波后信号的时域波形及频谱,并对滤波前后的信号进行对比,分析信号的变化; 5、回放语音信号,分析滤波前后的语音变化; 6、设计系统界面,为了使编制的程序操作方便,设计处理系统的用户界面,在所设计的系 统界面上可以实现上述要求中的包括采集、分析、滤波等全部内容,并能够选 择滤波器的类型,输入滤波器的参数、显示滤波器的频率响应等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值