Matlab语音信号加噪、滤波处理及幅值幅频响应

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计二

基于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进行系统的分析仿真和设计奠定基础。

二、实验原理:

1.理论原理

利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。

2. 具体流程

(1) 语音信号的采集及分析

基于声卡进行数字信号的采集。将话筒插入计算机的语音输入插口上,启动录音机。按下录音按钮,对话筒说话,说完后停止录音。要保存文件时,利用了计算机上的A/D转换器,把模拟的声音信号变成了离散的量化了的数字信号,放音时,它又通过D/A转换器,把保存的数字数据恢复为原来的模拟的声音信号。在 Matlab软件平台下可以利用函数wavread对语音信号进行采样,得到了声音数据变量。

在本设计中采用读取信号程序为:

[x1]=wavread('yuanyin.wav');

sound(x1,45050); %读出原始语音信号

(2)给原始信号加上一个高频噪声

在Matlab中设计一个高频噪声干扰信号。噪声信号通常为随机序列,在本设计中为高斯随机噪声,干扰信号构建命令函数为x2=0.01*randn(N,2),给出的干扰信号为一个高斯随机信号,针对上面的语音信号 ,采集了其中一段。再对噪音信号进行频谱变换得到其频谱图。

在MATLAB中把语音信号与噪声信号进行叠加,并对其进行播放,然后对加入噪声后的语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。

将原语音信号与噪声信号x2叠加,调用的形式为:

x3=x2+x1;

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

(3) 滤波器的设计,滤除高频噪声

在 MATLAB中 ,利用窗函数hamming,设计FIR滤波器,利用 MATLAB 中的函数freqz 画出滤波器的频率响应。并用设计好的滤波器对含噪语音信号进行滤波,在Matlab中,FIR 滤波器利用函数filter对信号进行滤波。

滤波器设计程序代码:

Wp=3000*2*pi;Ws=3500*2*pi;Ap=0.3;As=50;Fs=45050;

wp=Wp/Fs;ws=Ws/Fs; %归一化通带截频阻带截频

wdelta=ws-wp; %过渡带宽

%由阻带最小衰减指标确定选用汉明窗并确定其阶数

N=ceil(6.6*pi/wdelta);

Nw=N;

n=0:N-1;

wc=(wp+ws)/2; %理想截频

alpha=(N-1)/2;

m=n-alpha+eps;%理想滤波器脉冲响应

hd=sin(wc*m)./(pi*m); %采用汉明窗设计

win=hamming(Nw);

h=hd.*win';

b=h;

[H,f]=freqz(b,1,512,Fs); %绘制滤波器的幅频响应图

figure(4);

plot(f,20*log10(abs(H)))

xlabel('Hz');ylabel('幅值');

title('滤波器幅频特性');

信号滤波程序代码:

x4=fftfilt(b,x3); %滤波输出

sound(x4,45050);%输入输出频谱

figure(1);

subplot(2,2,3);

plot(x4) % 绘制输出信号

xlabel('time(s)'),ylabel('幅值');

title('滤波后输出信号');

Y=fft(x4);

figure(3);

subplot(2,2,3);

plot(abs(Y));

xlabel('Hz');ylabel('幅值');

title('滤波后输出信号频谱')

四、实验结果:

本程序运行后,一共播放四段语音信号。首先播放原语音信号,接着是噪声信号,然后是加噪后的语音信号,最后是滤波后的信号,每段语音信号大约45s。

同时对语音信号的特性进行图像显示,在figure1中显示了原始语音信号、加噪后的语音信号、滤波后输出信号各自的幅值随时间的变化,如下图所示:

相关文档
最新文档