您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页科技文献检索综述

科技文献检索综述

来源:爱够旅游网


科技文献检索综述

院系:电气信息工程学院

专业:电气信息工程 班级:08-2班 姓名:韩琳 学号:200801030210

基于matlab的语音信号录制采集和分析

我们运用计算机上的录音机录制一段语音信号;然后,利用MATLAB中的wavread命令来读入语音信号,将它赋值给某一向量。再将该向量看做一个普通的信号,对其进行FFT变换实现频谱分析;随后,利用随机函数randn产生高斯噪声并将该噪声加入我们已经录制好的噪声中,然后对叠加了的语音信号进行频谱分析。并用sound函数回放加人噪声前后的语音。

在我校的网上图书馆中,输入语音信号、分析等一些关键词,可以搜得几篇相关期刊,有:

1.徐靖涛.基于MATLAB的语音信号分析与处理[J].重庆科技学院学报2008,1,

2.张文,蒋猛,陈智.基于MATLAB的语音信号的滤波与实现[J].山西电子技术.2008,2,

3.黄文填,李金平.基于MATLAB的语音信号分析和滤波处理[J].北京联合大学信息学院.2009,45,

4.胡航.语音信号处理(第4版).哈尔滨工业大学出版社.2009.07, 5.赵力.语音信号处理(第2版).机械工业出版社.2009.06, 6.蔡莲红.现代语音技术基础与应用.清华大学出版社.2003.11,

7.张雄伟,陈量,杨吉斌.现代语音信号处理技术及应用[M].机械工业出版社.2003,

8.张威.MATLAB基础与编程入门[M].西安电子科技大学出版社.2006, 9.陈永彬,王仁华.语音信号处理.中国科学技术大学出版社.1990, 10.樊昌信.通信原理[M].国防工业出版社.2005,

11.程佩青.数字信号处理教程(第三版).清华大学出版社.2006

由徐靖涛、王金根发表于2008年2月重庆科技学院学报(自然科学版)的“基于MATLAB的语音信号分析与处理”和张文发表于2008年第2期山西电子技术的“基于MATLAB的语音信号的滤波与实现”以及黄文填、李金平发表于2009,45(专刊)北京联合大学信息学院的“基于MATLAB的语音信号分析和滤波处理”这三篇期刊可知:在MATLAB软件平台下,可以利用wavread函数对语音信号进行采样,得到声音数据变量y,同时把y的采样频率Fs=8000Hz

和数据位Nbits=8Bit放进MATLAB的工作空间。用sound函数对语音信号进行播放,并可对语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。

函数FFT的调用格式为:fft(x,n);其中,x为所要进行快速傅里叶变换的语音信号;n为所要进行的傅里叶变换的点数,n的点数可以为原语音信号的长度,也可使用1024、512等。

wavread函数的调用格式为:[y,fs,nbits]=wavread('语音信号文件名'); sound函数的调用格式为:sound(y,fs,nbits);

求信号的长度的函数为length(),其调用格式为:length(y);其中,y为所要求长度的信号。

再结合以上各参考文献,可得对原语音信号的采集及回放和时域、频域的波形的程序如下:

[y,fs,nbits]=wavread('你好');%把语音信号加载入Matlab仿真软件平台 sound(y,fs,nbits);%回放语音信号

subplot(2,1,1);plot(y);title('原语音信号的时域波形'); grid on;%加网格 legend('Waveform' );

xlabel(' Time (s)' );%标横坐标 ylabel('Amplitude' );%标纵坐标 n=length(y);%求出语音信号的长度 Y=fft(y,n);%傅里叶变换

Y1=fftshift(Y);%对频谱图进行平移

subplot(2,1,2);plot(abs(Y1));title('原语音信号的频谱图'); grid on;%加网格

然后需加入高斯噪声,由张文发表于2008年第2期山西电子技术的“基于MATLAB的语音信号的滤波与实现”可知: randn函数的基本调用格式有两种:randn(n)和randn(m,n),前者产生n×n服从标准高斯分布的随机函数矩阵,后者产生m×n的随机数矩阵。在这里,我们选用randn(m,n)函数,应注意的是:randn(m,n)的行和列即m、n应与原语音信号的行和列的长度保持一致。

在这里构造的随机高斯噪声为noise=0.005*randn(n,1);即产生一列n行的随机高斯噪声,n为原语音信号的长度。 构造的随机高斯噪声的程序如下所示:

[y,fs,nbits]=wavread ('你好');%把语音信号加载入Matlab仿真软件平台中 n=length(y);%求出语音信号的长度

noise=0.005*randn(n,1);%randn函数产生随机的高斯噪声 sound(noise);%回放噪声信号

subplot(2,1,1);plot(noise);title('干扰噪声的时域波形'); grid on;%加网格 legend('Waveform' );

xlabel(' Time (s)' );%标横坐标 ylabel('Amplitude' );%标纵坐标 N=fft(noise,n);%傅里叶变换 N1=fftshift (N);

subplot(2,1,2);plot(abs(N1));title('干扰噪声的频谱图'); grid on;%加网格

在MATLAB中把语音信号与噪声信号进行叠加,并对其进行播放,将原语音信号与noise叠加,调用的形式为:

s=y+noise;

其中,y为原语音信号,noise为所构造的随机高斯噪声,s即为两者的叠加后的语音信号。

将原语音信号和构造的高斯噪声叠加在一起,并回放录音。 再结合以上各文献的相关知识,可得程序如下:

[y,fs,nbits]=wavread('你好');%把语音信号加载入Matlab仿真软件平台 n=length(y);%求出语音信号的长度

noise=0.005*randn(n,1);%randn函数产生随机的高斯噪声 s=y+noise;%把噪声加入语音信号 sound(s,fs,nbits);%回放加入噪声后的语音信号

subplot(2,1,1);plot(s);title('加入干扰噪声后的信号时域波形');

grid on;%加网格 legend('Waveform' ); xlabel(' Time (s)' );%标横坐标 ylabel('Amplitude' );%标纵坐标 S=fft(s,n);%傅里叶变换

S1=fftshift(S);%对频谱图进行平移

subplot(2,1,2);plot(abs(S1));title('加入干扰噪声后的信号频谱图')

grid on;%加网格;

通过回放的录音,我们可听出有噪声加入。噪声集中在高频,此时我们可以自行设计滤波器来滤波,由黄文填、李金平发表于2009,45(专刊)北京联合大学信息学院的“基于MATLAB的语音信号分析和滤波处理”可知:我们可以采用原型低通滤波器设计IIR滤波器或采用窗函数设计FIR滤波器。

又由徐靖涛、王金根发表于2008年2月重庆科技学院学报(自然科学版)的“基于MATLAB的语音信号分析与处理”我们可知:为消除噪声,我们可以从带通滤波器和带阻滤波器、巴特沃兹低通滤波器、数字切比雪夫-Ⅰ型高通滤波器、数字切比雪夫-Ⅱ型带阻滤波器、数字椭圆带通滤波器中选择出一个。

我们知道滤波器的功能是对输入信号进行滤波以增强所需信号部分,抑制不要的部分。所以,我们可以根据实际情况来选择不同的滤波器,设计不同的滤波器,从而在找到最优的那一个。而对于噪声,噪声都集中在高频,故我们可以选择一个低通滤波器来滤除所加入的高斯噪声。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务