1、设计性能良好的滤波器对信号进行滤波。对语音进行回放,并与滤波后的语音信号进行对比。三、实验设计与仿真结果 程序汇总如下:1、原始语音信号的采集、读取与采样 利用 MATLAB 中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。wavread 函数几种调用格式如下:y=wavread(file)功能说明:读取 file 所规定的 wav 文件,返回采样值放在向量 y 中。y,fs,nbits=wavread(file)功能说明:采样值放在向量 y 中,fs 表示采样频率(hz),nbits 表示采样位数。y=wavread(file,N
2、)功能说明:读取钱 N 点的采样值放在向量 y 中。y=wavread(file,N1,N2)功能说明:读取从 N1 到 N2 点的采样值放在向量 y 中。首先用手机录制一段音频信号(手机音频格式一般为.mp3)。然后用软件将音频信号转换为 matlab 接受的格式.wav。本人录制的语音信号 wav 文件命名为:“nihao.wav“,内容为普通话”你好你好你好你好“,时长 3s。程序如下:2、原始语音信号的时域和频谱分析 时域和频谱分析的程序如下:原始语音信号的时域和频谱波形如下:3、原始信号加噪 用matlab的randn随机函数产生噪声。Randn函数有两种基本调用格式:randn(n
3、)和 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*
4、Fc*t)。幅度调制的程序如下:调制后的语音信号时域和频谱波形如下:5、设计理想带通信道并对信号进行传输 我们假设理想带通信道的带通范围为:10003000Hz。调用 matlab 的fdatool 工具箱,利用 fdatool 设计一个 FIR 带通滤波器,基本步骤如下:在 matlab 命令窗口下输入“fdatool”命令,“回车”调出滤波器设计界面;在 Responc Type 中选择低通滤波器 Bandpass;在 Design Method 中选择 FIR,同时在滤波器设计方法下拉框中选择波纹 Window 设计方法;Filter Order 中选择 Specify Order 为
5、95;Options 中 Window 选择 Hamming;在 Frequency Specification 中指定采样频率 Fs 为 44100Hz,通带下限 截止频率 Fc1 为 1000Hz,通带上限截止频率 Fc2 为 3000Hz。单击”Design Filter”即可完成滤波器设计。最后,使用菜单【Filc/Export】可导出或保存滤波器系数 Num。参数设置界面如下:对语音信号进行理想带通信道传输的程序如下:理想带通信道传输后的语音信号时域和频谱波形如下:6、信号解调 Matlab 的 demod 可用于语音信号的幅度调制,调用方式如下:y=demod(x,Fc,Fs,me
6、thod)其中,x 为被调信号,Fc 为载波频率,Fs 为信号 x 的采样频率,method 为所采用的调制方式,若采用幅度调制、双边带调制、抑制载波调制,则method为am或amdsd-sc。解调的程序如下:解调后的语音信号时域和频谱波形如下:7、对信号滤波 调用 matlab 的 fdatool 工具箱,利用 fdatool 设计一个 FIR 低通滤波器,基本步骤如下:在 Responc Type 中选择低通滤波器(Lowpass);在 Design Method 中选择 FIR,同时在滤波器设计方法下拉框中选择波纹(Equiripplc)设计方法;Filter Order 中选择最小滤
7、波器阶次(Minimum Order);Options 中 Desity Factor 默认值为 20;在 Frequency Specification 中指定采样频率 Fs 为 44100Hz,带通频率Fpass 为 1000Hz,带阻频率 Fstop 为 1200Hz;在 Magnitude Specification 中指定 Apass 为 1dB,Astop 为 50dB。最后,使用菜单【Filc/Export】可导出或保存滤波器系数 Num1。调用 matlab 的 filter 可对语音信号进行滤波。调用格式为:Y=filter(B,A,X),X 为滤波前序列,Y 为滤波结果序列
8、,B/A 提供滤波器系数,B为分子,A 为分母。滤波程序如下:滤波后的语音信号时域和频谱波形如下:四、实验分析与总结 1、实验过程中,原始信号加了噪声信号会听到尖锐的“沙沙”声,对信号进行滤波后,语音信号恢复得较好,“沙沙”明显减弱。从原始信号和滤波后的信号时域波形和频谱波形对比,也可知滤波效果较好。2、进行幅度调制后,时域波形看起来变化不明显,而由频谱可看出,频率向高频搬移,语音强度是输入信号的一半左右,这和理论是一致的。3、解调后的信号频谱向低频移动,与调制前的信号频谱一致性较高,语音强度同样减半。所以综合幅度调制和解调特点,在给语音信号滤波前应该给语音信号增强 4 倍。4、从语音信号通过
9、理想带通信道传输后的频域波形可知理想带通可起到一定的滤波效果。实际上,理想带通信道本身就是一个理想的带通滤波器。5、通过实验,我懂得了调制和解调的意义:当有两段语音信号,为使得两段语音信号在传输过程中不相互干扰,这时我们可以考虑对这两段信号分别进行幅度调制,但载波的频率相距较远,然后分别对调制以后的信号进行传输,到接收端以后再将这两短信号进行解调,然后就可以分别得到这两短信号了。6、本人曾尝试为低通滤波器编写代码,但并不能成功;但使用 fdatool 工具箱所获得的低通滤波器能很好地对语音信号进行滤波。本人可在为滤波器编写代码方面再深入研究。7、本次实验花费较多时间在 matlab 函数调用上,主要是因为对 matlab 函数参数设置不够了解以及对语音信号处理相关概念不够清晰。但通过本次实验,本人对 matlab 的使用和对课本知识的理解更加清晰。7、实验过程中,本人发现实验所得的频谱波形都是对称的,以为是程序出错。经过查找资料和研究发现,实验所得的频谱波形都是关于 fs/2 纵轴对称,这是由于 matlab 的 FFT 变换数据的对称性所致。在分析频谱波形的时候,我们只分析前一部分频谱波形即可。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1