2023
数字信号
课程设计
doc
数字信号处理
黄 冈 师 院 物 电 学 院
数字信号处理课程设计报告
项目名称: 数字信号处理 ___
专业年级:___ 电子信息科学与技术2023级
学 号: 202322340218
学生姓名: 田 洪 普
指导教师: 雷 学 堂
报告完成日期 2023 年 6 月 5 日
评阅结果 评阅教师
目 录
第一章 绪论 3
1.1.数字信号处理技术的应用 3
1.2.课程设计的目的 3
1.3.实验内容 3
第二章 设计原理 5
2.1语音信号的采样 5
2.2 数字滤波器的设计 7
第三章 课程设计的过程 8
3.1.语音信号的采集: 8
3.2.语音信号的频谱分析 8
3.3. 设计数字滤波器和对信号滤波 9
3.4.数字滤波器的设计 11
3.5 语音信号滤波后的复原波形 14
3.6、结果分析 16
第四章 设计体会 17
第一章 绪论
1.1.数字信号处理技术的应用
MATLAB 语言是一种数据分析和处理功能十分强大的计算机应用软件 ,它可以将声音文件变换为离散的数据文件 , 然后利用其强大的矩阵运算能力处理数据 ,如数字滤波 、傅里叶变换 、时域和频域分析 、声音回放以及各种图的呈现等 , 信号处理是MATLAB 重要应用的领域之一 。
1.2.课程设计的目的
本课程设计介绍了基于Matlab的对语音信号采集、处理及滤波器的设计,并使之实现的过程。理解与掌握课程中的根本概念、根本原理、根本分析方法,用Matlab进行数字语音信号处理,并阐述了课程设计的具体方法、步骤和内容。综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习稳固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。要求利用MATLAB来读入〔采集〕语音信号,将它赋值给某一向量。再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波。然后我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。
1.3.实验内容
1.3.1.语音信号的采集
要求利用windows下的录音机〔开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8000KHz,8位,单声道〕或其他软件,录制一段自己的话音,时间控制在15s左右。然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过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中。
1.3.2.语音信号的频谱分析
要求首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速付立叶变换,得到信号的频谱特性;从而加深对频谱特性的理解。
1.3.3.设计数字滤波器和画出频率响应
根据语音信号的特点给出有关滤波器的性能指标:1〕低通滤波器性能指标,fp=1000Hz,fc=1200 Hz, As=100dB,Ap=1dB;2〕高通滤波器性能指标,fc=2800 Hz,fp=3000 Hz As=100dB,Ap=1dB;3〕带通滤波器性能指标,fp1=1200 Hz,fp2=3000 Hz,fc1=1000 Hz,fc2=3200 Hz,As=100dB,Ap=1dB。首先用窗函数法设计上面要求的三种滤波器,在MATLAB中,可以利用函数fir1设计FIR滤波器,然后在用双线性变换法设计上面要求的三种滤波器;之后再利用函数butter和cheby1设计上面要求的三种IIR滤波器。最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。
1.3.4.用滤波器对信号进行滤波
比拟FIR和IIR两种滤波器的性能,然后用性能好的各滤波器分别对采集的信号进行滤波,在MATLAB中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
1.3.5.比拟滤波前后语音信号的波形及频谱
要求在一个窗口同时画出滤波前后的波形及频谱。
1.3.6.回放语音信号
在MATLAB中,函数sound可以对声音进行回放。其调用格式:
sound(x,fs,bits);可以感觉滤波前后的声音有变化。
第二章 设计原理
2.1语音信号的采样
采样器的作用是把连续信号变成脉冲或数字序列。图中示出了一个连续信号f〔t〕经采样器采样后变成离散信号的过程
图2 连续信号f〔t〕经采样器采样后变成离散信号
图中f〔t〕为被采样的连续信号,s〔t〕为周期性窄脉冲信号,f〔t〕为采样后的离散信号,它用下式来表征:
fs〔t〕=f〔t〕s〔t〕
采样信号的频率特性为:
如果|Fx〔j〕|中各个波形不重复搭接,相互间有一定的距离〔频率〕即:
即采样定理可表达如下:如果采样周期满足以下条件,即:
式中为连续信号f〔t〕的最高次谐波的角频率。那么采样信号 fx〔t〕就可以无失真的再恢复为连续信号f〔t〕。需要指出的是,采样定理只是在理论上给出了信号准确复现的条件。我们可以利用windows自带的录音机录制语音文件,进行数字信号的采集。〔开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8000KHz,8位,单声道〕或其他软件,将话筒输入计算机的语音输入插口上,启动录音机,录制一段自己的话音。然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用进一步理解采样频率、采样位数等概念。图2是基于PC机的语音信号采集过程:
图3 声音采集过程
2.2 数字滤波器的设计
设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应〔IIR〕滤波器和有限长冲激响应〔FIR〕滤波器。IIR滤波器的特征是,具有无限持续时间冲激响应。这种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器。FIR滤波器的冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现。
。
第三章 课程设计的过程
3.1.语音信号的采集:
利用windows下的录音机〔开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8000KHz,8位,单声道〕,录制一段自己的话音“信号〞, 时间控制在3秒左右,然后将音频文件保存“thp.wav〞,在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
3.2.语音信号的频谱分析
①首先画出语音信号的时域波形
z1=wavread('d:\thp.wav');
plot(z1);
图像输出如图1
图1 语音信号时域波形
②对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速付立叶变换,得到信号的频谱特性
z1=wavread('d:\thp.wav');
y1=z1(1:5000);
Y1=fft(y1);
n=0:5000;
plot(n,Y1);
图像输出如图2:
图2 语音信号频谱分析图
3.3. 设计数字滤波器和对信号滤波
3.3.1 语音信号的定点分析
一个语音信号,数据采样频率为1000Hz,试分别绘制N=128点DFT的幅频图和N=1024点DFT幅频图。编程如下:
[x,fs,bits]=wavread('D:\thp.wav');
sound(x,fs,bits);
fs=1000;N=1024;
y=fft(x,N);
magy=abs(y);
f=(0:length(y)-1)'xfs/length(y);
subplot(2,2,1),plot(f,magy);
xlabel('频率〔Hz〕');ylabel('幅值');
title('N=1024(a)');
grid on
subplot(2,2,2),plot(f(1:N/2),magy(1:N/2));
xlabel('频率〔Hz〕'),ylabel('幅值');
title('N=1024(b)');
grid on
fs=1000;N=2048;
y=fft(x,N);
magy=abs(y);
f=(0:length(y)-1)'xfs/length(y);
subplot(2,2,3),plot(f,magy);
xlabel('频率〔Hz〕'),ylabel('幅值');
title('N=2048(c)');grid
subplot(2,2,4),plot(f(1:N/2),magy(1:N/2));
xlabel('频率〔Hz〕'),ylabel('幅值');
title('N=2048(d)');
grid on
图5-2 语音信号的幅频图
3.4.数字滤波器的设计
3.4.1切比雪夫I型低通滤波器
[I,Fs,bits]=wavread('D:\thp.wav'); %读取语音信号sm.wav
fp=1000; %通带截止频率
fr=1200; %阻带角频率
ap=1; %通带纹波
as=40; %阻带衰减 [n,fn]=cheb1ord(fp/(Fs/2),fr/(Fs/2),ap,as,'z'); %切比雪夫I型滤波器
[b,a]=cheby1(n,ap,fn,'low'); %I型切比雪夫滤波器 [h,w]=freqz(b,a); %滤波器的频率响应 I1=fftfilt(b,I); %FFT的FIR滤波 I2=fft(I1); %切比雪夫I FIR滤波后语音信号频谱分析 subplot(3,2,1),plot(I);title('原始语音信号');
subplot(3,2,2);plot(wxFs/(2xpi),abs(h));
title('切比雪夫1低通滤波');
subplot(3,2,3);plot(I1);
title('切比雪夫1FIR滤波后语音信号');
subplot(3,2,4);plot(abs(I2));
title('切比雪夫1FIR滤波后语音信号频谱');
subplot(3,2,5