您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 语音信号处理matlab仿真
语音信号处理的matlab设计仿真实验彭杰1235004912自动化一、目的通过利用matlab设计仿真实验,理解如下知识点:信号的采样及混迭信号的频谱分析信号的幅度调制解调的方法理想滤波器的时频域特性数字滤波器的设计二、内容①录制一段个人自己的语音信号。②采用合适的频率,对录制的信号进行采样,画出采样后语音信号的时域波形和频谱图。③给原始语音信号加噪声,画出加噪声后的语音信号和频谱图。④设计一个频域的理想带通信道。⑤对这个语音信号进行幅度调制,画出调制后的语音信号和频谱图。⑥利用理想带通信道对信号进行传输。⑦对接受到的信号进行解调,画出解调后的语音信号和频谱图。⑧设计性能良好的滤波器对信号进行滤波。⑨对语音进行回放,并与滤波后的语音信号进行对比。三、实验设计与仿真结果程序汇总如下:1、原始语音信号的采集、读取与采样利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。wavread函数几种调用格式如下:①y=wavread(file)功能说明:读取file所规定的wav文件,返回采样值放在向量y中。②[y,fs,nbits]=wavread(file)功能说明:采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。③y=wavread(file,N)功能说明:读取钱N点的采样值放在向量y中。④y=wavread(file,[N1,N2])功能说明:读取从N1到N2点的采样值放在向量y中。首先用手机录制一段音频信号(手机音频格式一般为.mp3)。然后用软件将音频信号转换为matlab接受的格式.wav。本人录制的语音信号wav文件命名为:“nihao.wav“,内容为普通话”你好你好你好你好“,时长3s。程序如下:2、原始语音信号的时域和频谱分析时域和频谱分析的程序如下:原始语音信号的时域和频谱波形如下:3、原始信号加噪用matlab的randn随机函数产生噪声。Randn函数有两种基本调用格式:randn(n)和randn(m,n),前者产生n*n服从高斯分布的随机数矩阵,后者产生m*n的随机数矩阵。原始信号加噪的程序如下:噪声信号的时域和频谱波形如下:加噪语音信号的时域和频谱波形如下:4、幅度调制Matlab的modulate可用于语音信号的幅度调制,调用方式如下:y=modulate(x,Fc,Fs,’method’)[y,t]=modulate(x,Fc,Fs)其中,x为被调信号,Fc为载波频率,Fs为信号x的采样频率,method为所采用的调制方式,若采用幅度调制、双边带调制、抑制载波调制,则'method'为'am’或'amdsd-sc'。其执行算法为:y=x*cos(2*pi*Fc*t)。幅度调制的程序如下:调制后的语音信号时域和频谱波形如下:5、设计理想带通信道并对信号进行传输我们假设理想带通信道的带通范围为:1000~3000Hz。调用matlab的fdatool工具箱,利用fdatool设计一个FIR带通滤波器,基本步骤如下:①在matlab命令窗口下输入“fdatool”命令,“回车”调出滤波器设计界面;②在ResponcType中选择低通滤波器Bandpass;③在DesignMethod中选择FIR,同时在滤波器设计方法下拉框中选择波纹Window设计方法;④FilterOrder中选择SpecifyOrder为95;⑤Options中Window选择Hamming;⑥在FrequencySpecification中指定采样频率Fs为44100Hz,通带下限截止频率Fc1为1000Hz,通带上限截止频率Fc2为3000Hz。⑦单击”DesignFilter”即可完成滤波器设计。⑧最后,使用菜单【Filc/Export】可导出或保存滤波器系数Num。参数设置界面如下:对语音信号进行理想带通信道传输的程序如下:理想带通信道传输后的语音信号时域和频谱波形如下:6、信号解调Matlab的demod可用于语音信号的幅度调制,调用方式如下:y=demod(x,Fc,Fs,’method‘)其中,x为被调信号,Fc为载波频率,Fs为信号x的采样频率,method为所采用的调制方式,若采用幅度调制、双边带调制、抑制载波调制,则'method'为'am’或'amdsd-sc'。解调的程序如下:解调后的语音信号时域和频谱波形如下:7、对信号滤波调用matlab的fdatool工具箱,利用fdatool设计一个FIR低通滤波器,基本步骤如下:①在matlab命令窗口下输入“fdatool”命令,“回车”调出滤波器设计界面;②在ResponcType中选择低通滤波器(Lowpass);③在DesignMethod中选择FIR,同时在滤波器设计方法下拉框中选择波纹(Equiripplc)设计方法;④FilterOrder中选择最小滤波器阶次(MinimumOrder);⑥Options中DesityFactor默认值为20;⑦在FrequencySpecification中指定采样频率Fs为44100Hz,带通频率Fpass为1000Hz,带阻频率Fstop为1200Hz;⑦在MagnitudeSpecification中指定Apass为1dB,Astop为50dB。⑧单击”DesignFilter”即可完成滤波器设计。⑨最后,使用菜单【Filc/Export】可导出或保存滤波器系数Num1。参数设置界面如下:调用matlab的filter可对语音信号进行滤波。调用格式为:Y=filter(B,A,X),X为滤波前序列,Y为滤波结果序列,B/A提供滤波器系数,B为分子,A为分母。滤波程序如下:滤波后的语音信号时域和频谱波形如下:四、实验分析与总结1、实验过程中,原始信号加了噪声信号会听到尖锐的“沙沙”声,对信号进行滤波后,语音信号恢复得较好,“沙沙”明显减弱。从原始信号和滤波后的信号时域波形和频谱波形对比,也可知滤波效果较好。2、进行幅度调制后,时域波形看起来变化不明显,而由频谱可看出,频率向高频搬移,语音强度是输入信号的一半左右,这和理论是一致的。3、解调后的信号频谱向低频移动,与调制前的信号频谱一致性较高,语音强度同样减半。所以综合幅度调制和解调特点,在给语音信号滤波前应该给语音信号增强4倍。4、从语音信号通过理想带通信道传输后的频域波形可知理想带通可起到一定的滤波效果。实际上,理想带通信道本身就是一个理想的带通滤波器。5、通过实验,我懂得了调制和解调的意义:当有两段语音信号,为使得两段语音信号在传输过程中不相互干扰,这时我们可以考虑对这两段信号分别进行幅度调制,但载波的频率相距较远,然后分别对调制以后的信号进行传输,到接收端以后再将这两短信号进行解调,然后就可以分别得到这两短信号了。6、本人曾尝试为低通滤波器编写代码,但并不能成功;但使用fdatool工具箱所获得的低通滤波器能很好地对语音信号进行滤波。本人可在为滤波器编写代码方面再深入研究。7、本次实验花费较多时间在matlab函数调用上,主要是因为对matlab函数参数设置不够了解以及对语音信号处理相关概念不够清晰。但通过本次实验,本人对matlab的使用和对课本知识的理解更加清晰。7、实验过程中,本人发现实验所得的频谱波形都是对称的,以为是程序出错。经过查找资料和研究发现,实验所得的频谱波形都是关于fs/2纵轴对称,这是由于matlab的FFT变换数据的对称性所致。在分析频谱波形的时候,我们只分析前一部分频谱波形即可。
本文标题:语音信号处理matlab仿真
链接地址:https://www.777doc.com/doc-6199148 .html