声音的时延和混响课程设计报告.docx
- 文档编号:3819234
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:21
- 大小:224.83KB
声音的时延和混响课程设计报告.docx
《声音的时延和混响课程设计报告.docx》由会员分享,可在线阅读,更多相关《声音的时延和混响课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。
声音的时延和混响课程设计报告
摘要
数字信号处理(DigitalSignalProcessing)技术,从20世纪60年代以来,随着计算机科学和信息科学发展,数字处理技术应运而生并得以快速发展。
语言是人们进行信息沟通的主要方式之一,它具有直接、自然、方便等优点。
语音则是语言的物理层表达方式。
语音处理主要是对语音进行机器处理,以达到传输、自动识别、机器理解等目的。
本设计对语音处理过程的滤波、采样、傅立叶变换和谱包络提取的算法实现进行了研究,讨论了在算法的DSP实现方法。
Matlab语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,Matlab功能强大、简单易学、编程效率高。
特别是Matlab还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计
关键词语音信号处理MATLAB语言滤波器频谱分析
Abstract
DigitalSignalProcessing(DigitalSignalProcessing)technologyfromthe1960s,alongwiththedevelopmentofcomputerscienceandinformationscience,digitalprocessingtechniqueshaveemergedandtorapiddevelopment.Languageisthecommunicationofpeopletooneofthemain,ithasadirect,natural,andeasy.Voiceisthelanguageofthephysicallayerofexpression.Voiceprocessingmachinesmainlyforvoiceprocessing,inordertoachievetransmission,automaticrecognition,machineunderstandingofotherpurposes.Forvoiceprocessingfiltering,sampling,Fouriertransformandspectralenvelopeextractionalgorithmresearch,discussestheimplementationofDSPalgorithms.
Matlablanguageisawidelyusedengineeringcalculationandnumericalanalysisofthefieldofnewhigh-levellanguage,Matlabpowerful,easytolearn,programmingandhighefficiency.Matlabalsohasaparticularsignalanalysistoolbox,neednothavestrongprogrammingskills,youcaneasilycarryoutsignalanalysis,processinganddesign.
Keywords:
SpeechsignalprocessingSpectralanalysisofMATLABFilterSpectrumanalysis
1概述
数字信号处理主要是研究用数字或符号序列表示和处理信号。
处理的目的可以是削弱信号中的多余内容,滤除混杂的噪声和干扰,或者是将信号变换为容易分析和识别的形式,便于估计和选择它的特征参数。
声音信号是一维连续信号,而计算机只能处理离散信号。
为了从离散信号还原连续信号,根据采样定理,可以确定采样频率的最小值。
wav文件是一种数字声音文件格式,本课程设计基于Matlab分析了wav声音文件频谱与声音的关系。
通过采集个人的一段声音进行频谱分析等处理,然后设计数字滤波器处理这个原始声音的wav文件,并比较滤波以后输出声音信号与原声音信号的异同。
基于MATLAB的语音信号特技处理,其实质是对不同的滤波器性能的分析与比较。
对于滤波器的设计可以使用MATLAB中自带的工具,也可以通过编程或直接利用MATLAB中的函数库来实现。
2设计任务和要求
2.1设计任务
(1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样。
(2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图。
(3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较。
(4)设计几种特殊类型的滤波器:
单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应。
(5)用自己设计的滤波器对采集的语音信号进行滤波。
(6)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。
(7)回放语音信号。
2.2设计要求
(1)熟悉离散信号和系统的时域特性。
(2)熟悉语音信号的特点。
(3)掌握数字信号处理的基本概念,基本理论和基本方法。
(4)掌握序列快速傅里叶变换方法。
(5)学会MATLAB的使用,掌握MATLAB的程序设计方法。
(6)掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法
3设计原理介绍
3.1设计的总体方案图
设计的整体思想以及流程如图1。
图1总体方案图
3.2各设计模块原理介绍
3.2.1混响与延时
声音在一个封闭的空间中到达听众时,包含几个部分:
直达声、早期的反射和混响。
早期的反射由几个空间上邻近的直达声的基本延迟和衰减组成,而混响则由密集的回声组成。
混响效果主要是用于增加音源的融合感。
自然音源的延时声阵列非常密集、复杂,所以模拟混响效果的程序也复杂多变。
常见参数有以下几种:
(1)混响时间:
能逼真的模拟自然混响的数码混响器上都有一套复杂的程序,其上虽然有很多技术参数可调,然而对这些技术参数的调整都不会比原有的效果更为自然,尤其是混响时间。
(2)高频滚降:
此项参数用于模拟自然混响当中,空气对高频的吸收效应,以产生较为自然的混响效果。
一般高频滚降的可调范围为0.1~1.0。
此值较高时,混响效果也较接近自然混响;此值较低时,混响效果则较清澈。
(3)扩散度:
此项参数可调整混响声阵密度的增长速度,其可调范围为0~10,其值较高时,混响效果比较丰厚、温暖;其值较低时,混响效果则较空旷、冷僻。
(4)预延时:
自然混响声阵的建立都会延迟一段时间,预延时即为模拟次效应而设置。
(5)声阵密度:
此项参数可调整声阵的密度,其值较高时,混响效果较为温暖,但有明显的声染色;其值较低时,混响效果较深邃,声染色也较弱。
(6)频率调制:
这是一项技术性的参数,因为电子混响的声阵密度比自然混响稀疏,为了使混响的声音比较平滑、连贯,需要对混响声阵列的延时时间进行调制。
此项技术可以有效的消除延时声阵列的断裂声,可以增加混响声的柔和感。
(7)调制深度:
指上述调频电路的调制深度。
延时就是将音源延迟一段时间后再播放的效果处理。
依其延迟时间的不同,可分别产生合唱、镶边、回音等效果。
当延迟时间在3~35ms之间时人耳感觉不到滞后音的存在,并且他与原音源叠加后,会因其相位干涉而产生"梳状滤波"效应,这就是镶边效果。
如果延迟时间在50ms以上时,其延迟音就清晰可辨,此时的处理效果才是回音。
回音处理一般都是用于产生简单的混响效果。
延时、合唱、镶边、回音等效果的可调参数都差不多,具体有以下几项:
(1)延时时间(Dly):
主延时电路的延时时间调整。
(2)反馈增益(FBGain):
延时反馈的增益控制。
(3)反馈高频比(HiRatio):
反馈回路上的高频衰减控制。
(4)调制频率(Freq):
反映主延时的调频周期。
(5)调制深度(Depth):
指上述调频电路的调制深度。
(6)高频增益(HF):
指高频均衡控制。
(7)预延时(IniDly):
指主延时电路预延时时间调整。
(8)均衡频率(EQF):
这里的频率均衡用于音色调整。
由于延时产生的效果都比较复杂多变,如果不是专业效果处理,建议使用设备提供的预置参数,因为这些预置参数给出的处理效果一般都比较好。
3.2.2离散傅立叶变换
在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。
下面介绍这些函数。
函数FFT用于序列快速傅立叶变换。
该函数的一种调用格式为:
y=fft(x)
其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT,且和x相同长度。
若x为一矩阵,则y是对矩阵的每一列向量进行FFT。
如果x长度是2的幂次方,函数fft执行高速基-2FFT算法;否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。
函数FFT的另一种调用格式为:
y=fft(x,N)
式中,x,y意义同前,N为正整数。
函数执行N点的FFT。
若x为向量且长度小于N,则函数将x补零至长度N。
若向量x的长度大于N,则函数截短x使之长度为N。
若x为矩阵,按相同方法对x进行处理。
经函数fft求得的序列y一般是复序列,通常要求其幅值和相位。
MATLAB提供求复数的幅值和相位函数:
abs,angle,这些函数一般和FFT同时使用。
用MATLAB工具箱函数fft进行频谱分析时需注意:
(1)函数fft返回值y的数据结构对称性。
(2)频率计算。
(3)作FFT分析时,幅值大小与FFT选择点数有关,但不影响分析结果。
3.2.3滤波器设计
先对本设计中用到的各种滤波器进行简介。
(1)单回声滤波器
回声可以由简单的延时单元产生。
直达声和在m个抽样周期后出现的一种单个回声,可以用FIR滤波器产生,差分方程为:
y[n]=x[n]+αx[n-m],|α|<1
单回声滤波器的传输函数为:
传输函数的幅频响应形状象梳子,这种滤波器又叫梳状滤波器。
(2)多重回声滤波器
为了产生以间隔m个抽样周期分开的具有指数衰减振幅的多重回声,可用一个以下形式传输函数的FIR滤波器:
无限个振幅以指数衰减、间隔为m个抽样周期的多重回声可用以下形式传输函数的IIR滤波器生成:
(3)无限个回声滤波器
无限个回声滤波器的传输函数为:
上述多重回声滤波器不能提供自然声音混响。
由其幅频特性可知,其幅度响应对于所有频率不是常数,收听效果不能令人满意。
其次每秒回声数量太少会引起合成声的颤动,需要每秒约1000个回声才能生成没有颤动的反射声。
(4)全通结构混响器
为了生成更真实的混响,提出一种有全通结构的混响器,传输函数为:
此外,还可以用函数filter对语音信号进行滤波。
其调用格式为 :
y=filter(b,a,x)
该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。
其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波器。
该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。
4设计任务的Matlab编程及调试
4.1从Windows系统中读取1s的语音信号
Matlab语句[x,fs,bits]=wavread('bb.wav',[50050000])用于读取语音,采样值放在向量x中,fs表示采样频率(Hz),bits表示采样位数。
[50050000]表示读取从501点到50000点的值(若只有一个N的点则表示读取前N点的采样值)。
4.2语音信号的采样
clear,clc;
[x,fs,bits]=wavread('Myvoice.wav');
x=x(:
1);%这里取单声道作分析
n1=0:
2000;
subplot(2,1,1);
plot(x);
title('采样后的语音信号时域波形');
Y=fft(x);
subplot(2,1,2);
plot(n1(1:
1000),Y(1:
1000));
title('采样后的语音信号频谱');
程序运行的结果如图2所示。
图2采样后信号的时域和频域图
4.3采样后信号的延时与混响
clear,clc;
[x,fs,bits]=wavread('Myvoice.wav');
x=x(:
1);%这里的声音是双声道,我只取单声道作分析
n1=0:
2000;
z=[zeros(600,1);x];
figure
(1);
subplot(2,1,1);
plot(z);
title('延时后的号时域图');
Z=fft(z);
subplot(2,1,2);
plot(n1(1:
1000),Z(1:
1000));
axis([0,1000,-60,120]);
title('延时后的信号频谱图');
x=[x;zeros(600,1)];
y1=x+z;
subplot(2,1,2);
figure
(2);
subplot(2,1,1);
plot(y1);
title('混响后的信号时域图');
Y1=fft(y1);
subplot(2,1,2);
plot(n1(1:
1000),Y1(1:
1000));
title('混响后的信号频谱图');
程序运行的结果如图3所示。
图3延时后信号的时域和频域图
从图3中的时域图可以明显地看出,延时后的语音信号与原来的语音信号波形相比向右移动了,即在时间上延后了。
图4混响后信号的时域和频域图
由图4可以看出,混响后的波信与原始波形相比已有明显差异。
从时域图看,经混响的波形在前前一小部分没有变化,之后的波形很多地方幅度增强了,但也有地方的幅度减小了,这和程序中设计的混响效果是相同的:
原始语音信号和延时后的信号(充当回音)叠加,引起波形幅度的变化。
从频域图来看,混响后的语音信号波形,的频谱更均匀了一些,比如在100到200、300到400、500到600各单位频率区间,原始语音信号的频谱分布疏密、起伏不是太明显,混响后的频谱疏密、起伏变化较明显。
4.4几种滤波器的设计及其对语音信号的滤波作用
4.4.1单回声滤波器的设计及滤波
clear,clc;
[x,fs,bits]=wavread('Myvoice.wav');
x=x(:
1);%取单声道作分析
a=0.5;
m=600;
Ai=[1,zeros(1,m-1),a];
Bi=[1,zeros(1,m)];
[h,w]=freqz(Ai,Bi);
figure
(1);
subplot(2,1,1);
plot(abs(h));
axis([0,520,0.4,1.6]);
title('单回声滤波器的幅频响应');
subplot(2,1,2);
plot(angle(h));
axis([0,520,-0.6,0.6]);
title('单回声滤波器的相频响应');
n1=0:
2000;
y2=x+z*a;
z=[zeros(600,1);x];
x=[x:
zeros(600,1)];
figure
(2);
subplot(2,1,1);
plot(y2);
title('单回声滤波后的信号时域图');
Y2=fft(y2);
subplot(2,1,2);
plot(n1(1:
1000),Y2(1:
1000));
axis([0,1000,-30,60]);
title('单回声滤波后的信号频谱图');
程序运行结果如图5和图6所示。
图5单回声滤波器的幅频和相频响应
从图5可以看出,单回声滤波器的幅频响应和相频响应都随频率疏密间隔变化,这势必会使滤波效果受到影响。
图6单回声滤波后信号的时域和频域图
由图6可以看出,单回声滤波前后的语音信号相比,波形在时域上及频域上的形状大致相同,但幅度有所减小。
4.4.2多重回声滤波器的设计及滤波
clc,clear;
[x,fs,bits]=wavread('Myvoice.wav');
x=x(:
1);%取单声道作分析
n1=0:
2000;
N=5;
a=-0.8;
R=100;
num=[1,zeros(1,N*R-1),a^N];
den=[1,zeros(1,R-1),a];
[h,w]=freqz(num,den);
figure
(1);
subplot(2,1,1);
plot(abs(h));
axis([0,550,0,4]);
title('多重回声滤波器幅频响应');
subplot(2,1,2);
plot(angle(h));
axis([0,550,-2,2]);
title('多重回声滤波器相频响应');
z=filter(num,den,x);
figure
(2);
subplot(2,1,1);
plot(z);
title('多重回声滤波后的信号时域图');
z1=fft(z);
subplot(2,1,2);
plot(n1(1:
1000),z1(1:
1000));
axis([0,1000,-100,100]);
title('多重回声滤波后的信号频谱图');
程序运行结果如图7和图8所示。
图7多重回声滤波器幅频相频响应
从图7可以看出,多重回声滤波器的幅频响应和相频响应呈比较均匀的梳状,从而比单回声滤波器有更好的滤波效果。
图8多重回声滤波后的结果
对图8的频谱图进行分析发现,多重回声效果较单回声效果更加明显,如果延时调试得当,会得到很好的回声效果,产生类似在音乐厅的效果。
4.4.3无限回声滤波器的设计及滤波
clear,clc;
[x,fs,bits]=wavread('Myvoice.wav');
x=x(:
1);%取单声道作分析
a=0.5;
m=100;
Ai=[zeros(1,m),1];
Bi=[1,zeros(1,m-1),-0.5];
[h,w]=freqz(Ai,Bi);
figure
(1);
subplot(2,1,1);
plot(abs(h));
axis([0,530,0.6,2.1]);
title('无限回声滤波器的幅频响应');
subplot(2,1,2);
plot(angle(h));
axis([0,530,-4,4]);
title('无限回声滤波器的相频响应');
n1=0:
2000;
yy1=filter(Ai,Bi,x);
figure
(2);
subplot(2,1,1);
plot(yy1);
title('无限回声滤波后的信号时域图');
YY1=fft(yy1);
subplot(2,1,2);
plot(n1(1:
1000),YY1(1:
1000));
axis([0,1000,-100,220]);
title('无限回声滤波后的信号频谱图');
程序运行结果如图9和图10所示。
图9无限回声滤波器的幅频相频响应
由图9可知,无限回声滤波器比多重回声滤波器有更为理想的幅频响应和相频响应,滤波效果也更理想。
图10无限回声滤波后信号的时域和频域图
由图10可以看出,时域上滤波前后波的幅度及形状都大体相似。
频谱上,在300到400单位频率区间,滤波前的幅度大体上比滤波后的高,且滤波后高频分量减弱了。
4.4.4全通结构的混响器设计及滤波
clear,clc;
[x,fs,bits]=wavread('Myvoice.wav');
x=x(:
1);%取单声道作分析
a=0.5;
m=100;
Ai=[a,zeros(1,m-1),1];
Bi=[1,zeros(1,m-1),-0.5];
[h,w]=freqz(Ai,Bi);
figure
(1);
subplot(2,1,1);
plot(abs(h));
axis([0,530,0,3.2]);
title('全通混响器的幅频响应');
subplot(2,1,2);
plot(angle(h));
axis([0,530,-4,4]);
title('全通混响器的相频响应');
n1=0:
2000;
yy2=filter(Ai,Bi,x);
figure
(2);
subplot(2,1,1);
plot(yy2);
title('全通滤波后的信号时域图')
YY2=fft(yy2);
subplot(2,1,2);
plot(n1(1:
1000),YY2(1:
1000));
title('全通滤波后的信号频谱图');
程序运行结果如图11和图12所示。
图11全通混响器的幅频相频响应
比较图11和图9发现,全通混响器和无限回声滤波器的幅频响应及相频响应比较相似。
图12全通滤波后信号的时域和频域图
由图12可以看出,滤波前后时域上波的形状大致一样,滤波前的幅度比滤波后的大,2000Hz左右滤波波动较小,滤波后的波动相比较大。
在频谱上滤波后有零频附近的那条很尖锐的频谱分量幅度变大,其它的幅度都比滤波前的小,300到400单位频率区间内的频谱分量及高频分量甚至消失。
4.5语音信号的回放
Matlab中的函数sound可以对声音进行回放。
其调用格式sound(x,fs,bits)。
语音信号回放的MatLab例程如下:
clear,clc;
[x,fs,bits]=wavread('Myvoice.wav');
x=x(:
1);%取单声道作分析
sound(x,fs,bits);%回放滤波前的语音信号
pause(3);
a=0.5;
m=100;
Ai=[a,zeros(1,m-1),1];
Bi=[1,zeros(1,m-1),-0.5];
yy2=filter(Ai,Bi,x);
sound(yy2,fs,bits);%回放滤波后的语音信号
通过对滤波前后的语音信号进行回放对比,可以明显感觉出滤波前后的声音有变化。
5结果分析与体会
说实话,Matlab编程并不是我的强项,因为我平时更多的是用C来编程。
在这次设计过程中,我先把基本的原理、概念大致弄清楚,然后找一个例程一句句地分析,我发现该matlab程序的核心实际就是把数学表达式转变成Matlab语言,然后Matlab软件便可识别、执行。
于是我试着对照各种滤波器的系统函数表达式,自己来写Matlab程序。
经过不断修改、调试,终于获得成功。
触类旁通,接下来我的设计工作也就顺利多了。
通过这次的信息处理课群综合训练与设计,我对数字信号处理有了更进一步的熟悉,在亲手设计过程中加深了对课本上的知识的理解。
本次课题是基于MATLAB的语音信号的特技处理,对语音信号进行延时、混响、滤波等操作。
通过上网搜索资料,查阅课本及课外书籍,动手设计滤波器,采集语音,语音分析等工作,我加强了对MATLAB程序的编写能力以及对数字信号处理的相关知识的理解。
课程设计是培养学生综合运用所学知识,发现、分析和解决实际问题、锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
通过课程设计,我们能够比较系统的了解理论知识,把理论和实践相结合,并且用到生活当中。
在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 声音 混响 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)