声音的延时和混响仿真.docx
- 文档编号:12005617
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:33
- 大小:270.97KB
声音的延时和混响仿真.docx
《声音的延时和混响仿真.docx》由会员分享,可在线阅读,更多相关《声音的延时和混响仿真.docx(33页珍藏版)》请在冰豆网上搜索。
声音的延时和混响仿真
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
声音的延时和混响仿真
初始条件:
MATLAB软件、Windows自带的录音功能
要求完成的主要任务:
(1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样。
(2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图。
(3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较。
(4)设计几种特殊类型的滤波器:
单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应。
(5)用自己设计的滤波器对采集的语音信号进行滤波。
(6)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。
(7)回放语音信号。
时间安排:
序号
阶段内容
所需时间
1
根据课题的技术指标,确定整体方案,并进行参数设计计算
2天
2
根据实验条件进行全部或部分程序的编写与调试,并完成基本功能
5天
3
总结编写课程设计报告
2天
4
答辩
1天
合计
10天
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
语音信号处理是一门比较实用的专业课程,语音是人类获取信息的重要来源和获得信息的重要手段。
通过语言相互传递信息是人类最重要的基本功能之一。
语言是人类特有的功能,它是创造和发展几千年人类文明史的根本手段,没有语言就没有今天的人类文明。
语音是语言的声学表现,是相互传递信息的最重要的手段。
语音信号处理有两个需要解决的问题:
语音的时变性和直接进行DFT的庞大运算量,其解决措施是加窗函数和运用FFT变换。
利用MATLAB语言强大的数据分析和处理功能,我们可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种信号图的呈现等,进行语音信号处理和分析。
声音的延时和混响是改善听觉特性中最常用的效果器。
延时是一种对信号进行重复的效果,而混响通常是由上百万个延时组合而成的结果,它们在语音信号处理中有着非常广泛的作用。
本课程设计是对声音的延时和混响的matlab仿真,报告结构是先介绍声音的延时和混响的基本原理以及语音信号处理的基本知识,然后对编写好的matlab程序进行分析,最后对仿真结果进行分析。
关键字:
语音信号,延时,混响,MATLAB仿真
Abstract
Thespeechisanimportantmeansofaccesstoimportantsourcesofinformationanduseofinformation.It’smankind'smostimportantandmosteffective,themostcommonandeasiesttoexchangeinformationintheformoftransmissionofinformationbyvoice.SpeechSignalProcessingisaveryrapiddevelopment,itiswidelyusedincutting-edgeinterdisciplinary,butitisalsoacomprehensiveappliedresearchaninterdisciplinaryandemergingtechnologies.
SpeechSignalProcessingTherearetwoproblemstobesolved:
time-varyingvoiceandahugeamountofcalculationdirectlyDFT,thesolutionisfortheuseofwindowingfunctionsandFFTtransform.UsingMATLABlanguagepowerfuldataanalysisandprocessingfunctions,wecansoundfilesconvertedintodiscretedatafile,andthenuseitspowerfulmatrixcomputationabilitytoprocessdata,suchasdigitalfiltering,Fouriertransform,timedomainandfrequencydomainanalysis,soundplaybackandpresentingvariousfigures,etc.,voicesignalprocessingandanalysis.
Sounddelayandreverbistoimprovetheauditorycharacteristicsofthemostcommonlyusedeffects.Delayisasignalrepetitioneffect,andreverbisusuallycausedbymillionsofdelayfromthecombinationofeffects,theyhaveaverywiderangeofapplicationsinspeechsignalprocessing.ThiscourseisdesignedtoMATLABsimulationofsounddelayandreverb,thereportingstructureistointroducedelayandreverbsoundbackgroundandknowledgerelatedtospeechsignalprocessingMATLAB,andMATLABprogramtowritegoodcodeanalysiskeyFinally,adetailedanalysisoftheirsimulationresults.
Keywords:
speechsignal,delay,reverb,MATLABsimulation
1、引言
1.1简介
通过课程设计,使学生加强对信号处理的理解,学会查寻资料﹑方案比较,以及分析设计等环节。
培养学生综合运用所学信号与系统、数字信号处理等信息处理知识,分析和解决工程技术问题的能力。
通过课程设计,培养学生根据需要选学参考书,查阅手册,图表和文献资料的自学能力,通过独立思考﹑深入钻研有关问题,学会自己分析解决问题的方法。
培养严谨的工作作风和科学态度,使学生逐步建立正确的生产观点,经济观点和全局观点。
每个学生在课程设计选题中选做一个专题,学会用MATLAB语言编写信号与系统及数字信号处理的仿真程序;认真分析每个题目的具体要求;上机前初步编好程序,上机时认真调试程序;课程设计结束时提交符合格式要求的课程设计报告。
1.2设计任务与要求
1、设计任务
(1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样。
(2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图。
(3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较。
(4)设计几种特殊类型的滤波器:
单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应。
(5)用自己设计的滤波器对采集的语音信号进行滤波。
(6)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。
(7)回放语音信号。
2、设计要求
(1)熟悉离散信号和系统的时域特性。
(2)熟悉语音信号的特点。
(3)掌握数字信号处理的基本概念,基本理论和基本方法。
(4)掌握序列快速傅里叶变换方法。
(5)学会MATLAB的使用,掌握MATLAB的程序设计方法。
(6)掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法
2、设计原理
2.1延时和混响的基本原理
2.1.1基本原理
声音是通过媒质传入人的听觉器官的。
媒质,既是声音的传播途径,也是声音的载体。
用一个日常生活中司空见惯的例子来说,媒质就像湖中传递波浪的湖水。
在平静的湖面投人一块石子,石子击起水波,波纹越来越大,水波越传越远。
这湖水,就是传播水波的媒质。
声音也是如此:
当某一声源发音,空气中波源的震荡就会改变周围空气的静止状态,使之形成时而压缩,时而稀疏的前进波,声波就这样不断地散发开去,传播声音的媒质就是空气。
在闭室中,当声源发出一个声音信号(例如是一个脉冲声信号)时,位于室内任何一点的听者所接收到的声音中,应包含两部分成份,一部分是由声源直接传到听者的声音,我们称其为“直达声”。
另一部分是声波传到墙壁或障碍物处反射出的声音,其中有一些被听者接收到,另外一些又会传到其它墙壁处再次发生反射,反射后的声音中又有一些被听者接收到,类似地持续下去,将听者接收到的这部分声音,统称为“反射声”。
从时间上看,反射声较直达声落后(或称为延迟声),从能量角度看,由于每经一次反射都会有部分能量被吸收,因此反射声是一系列能量逐渐衰减的延迟声。
延时效果又叫延时,是一种对信号的重复的效果,就是我们说的回声,如喂-喂-喂-喂。
混响通常是由上百万个的延时组合而成,这些延时效果混合在一起,听起来像声音的尾巴,想象一下你在教堂里或地窖里,你说“喂”时,延音逐渐减弱,听起来并不是不断重复的声音,而只是某种更加华丽的效果,混响就是用于类似这样的情况。
数字效果器中混响和延时效果的生成,是我们采用人为的方法来模拟现实室内声场的自然效果。
听众在房间中听到的声音有来自声源的直达声、经房间周围界面多次反射的早期反射声、比直达声晚到50ms以上的密集的多次反射声(混响声)和比直达声晚到100ms以上的后期反射声形成的回声。
直达声是声源直接传播到听众的声音,也是听众最先听到的声音。
它的贡献是传递声音的信息、提高声音的清晰度、提供声源的方向和声压级的主要来源。
直达声声压级的传播衰减与距离的平方成反比,即距离增加一倍,声压级减小6dΒ,与房间吸声特性无关。
早期反射声又称近次反射声,是声源发出的声音经周围界面(墙壁及天花板、地面)反射1∽2次后、比直达声晚到50ms以内的全部反射声都属于早期反射声。
它的贡献是提高声压级、提高声音清晰度。
它的传播衰减与反射界面的吸声特性有关。
耳朵无法把它与直达声区分。
比直达声晚到50ms以上的密集的多次反射声都称为混响声。
它的贡献是使声场变得均匀、音质丰满,可以帮助人们辨别房间的封闭空间特性(房间容积和空间高度)。
但它不包含信息量,对直达声会产生掩蔽效应,降低声音的清晰度。
超过100ms的混响声变成回声。
超过100ms延时的混响声开始具有回声感觉了。
回声可引起巨大的空间感,但同时也严重的影响系统的声音清晰度。
2.1.2延时
延时就是将音源延迟一段时间后,再欲播放的效果处理。
依其延迟时间的不同,可分别产生合唱、镶边、回音等效果。
当延迟时间在3~35ms之间时人耳感觉不到滞后音的存在,并且他与原音源叠加后,会因其相位干涉而产生"梳状滤波"效应,这就是镶边效果。
如果延迟时间在50ms以上时,其延迟音就清晰可辨,此时的处理效果才是回音。
回音处理一般都是用于产生简单的混响效果。
延时、合唱、镶边、回音等效果的可调参数都差不多,具体有以下几项:
(1)延时时间(Dly),即主延时电路的延时时间调整。
(2)反馈增益(FBGain),即延时反馈的增益控制。
(3)反馈高频比(HiRatio),即反馈回路上的高频衰减控制。
(4)调制频率(Freq),指主延时的调频周期。
(5)调制深度(Depth),指上述调频电路的调制深度。
(6)高频增益(HF),指高频均衡控制。
(7)预延时(IniDly),指主延时电路预延时时间调整。
(8)均衡频率(EQF),这里的频率均衡用于音色调整,此为均衡的中点频率选择。
由于延时产生的效果都比较复杂多变,如果不是效果处理专家,建议使用设备提供的预置参数,因为这些预置参数给出的处理效果一般都比较好。
2.1.3混响
数字混响可以通过用人工创作的回音并将它加入原始信号里,从而把隔音录音室里录制的声音转换为一种自然的声音形式;回音可以简单地由延迟单元产生。
混响效果主要是用于增加音源的融合感。
自然音源的延时声阵列非常密集、复杂,所以模拟混响效果的程序也复杂多变。
常见参数有以下几种:
(1)混响时间:
能逼真的模拟自然混响的数码混响器上都有一套复杂的程序,其上虽然有很多技术参数可调,然而对这些技术参数的调整都不会比原有的效果更为自然,尤其是混响时间。
(2)高频滚降:
此项参数用于模拟自然混响当中,空气对高频的吸收效应,以产生较为自然的混响效果。
一般高频混降的可调范围为0.1~1.0。
此值较高时,混响效果也较接近自然混响;此值较低时,混响效果则较清澈。
(3)扩散度:
此项参数可调整混响声阵密度的增长速度,其可调范围为0~10,其值较高时,混响效果比较丰厚、温暖;其值较低时,混响效果则较空旷、冷僻。
(4)预延时:
自然混响声阵的建立都会延迟一段时间,预延时即为模拟次效应而设置。
(5)声阵密度:
此项参数可调整声阵的密度,其值较高时,混响效果较为温暖,但有明显的声染色;其值较低时,混响效果较深邃,切声染色也较弱。
(6)频率调制:
这是一项技术性的参数,因为电子混响的声阵密度比自然混响稀疏,为了使混响的声音比较平滑、连贯,需要对混响声阵列的延时时间进行调制。
此项技术可以有效的消除延时声阵列的段裂声,可以增加混响声的柔和感。
(7)调治深度:
指上述调频电路的调治深度。
2.2信号处理基本原理
2.2.1离散傅立叶变换
在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)频率计算。
作FFT分析时,幅值大小与FFT选择点数有关,但不影响分析结果。
2.2.2滤波器设计
数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。
数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
特殊滤波器的系统函数:
(1)单回声滤波器的系统函数:
H(z)=
<1(式2.1)
(2)多重回声滤波器的系统函数:
H(z)=
<1(式2.2)
(3)无限个回声滤波器的系统函数:
H(z)=
<1(式2.3)
(4)全通结构的混响器的系统函数:
H(z)=
<1(式2.4)
系统对输入信号的响应,实质上就是输入信号通过离散时间LTI系统后的频谱进行不同选择处理的过程,这个过程称为滤波。
因此,在MATLAB的信息处理工具箱中,提供了一维滤波器函数filter和二维滤波器函数filter2。
函数filter的调用格式为 :
y=filter(b,a,x)
该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。
其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波器。
该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。
3、系统框架和详细设计
3.1总体方案
根据课程设计任务以及具体要求,MATLAB程序的设计可以按照如图3-1所示的总体方案程序总体结构框图来设计。
图3.1程序总体框图
3.2程序流程图
根据上节的图3-1所示的总体方案程序总体结构框图,结合相关的MATLAB函数,设计出如图3-2所示的MATLAB程序流程图。
图3.2MATLAB程序流程图
3.3详细设计
3.3.1读取语音信号
[x,fs]=audioread(filename);%读取信号
可以使用matlab中的audioread函数把录制好的语音信号文件读入。
3.3.2采样后语音信号的时域波形和频谱
[x,fs]=audioread(filename);
x=x(:
1);%只读取单声道,便于画时域波形和频谱图
sound(5*x,fs);%对声音的回放
figure;
subplot(2,1,1);plot(x);gridon;%画出时域波形
title('采样后语音信号的时域波形');
fx=fft(x);fx=fftshift(fx);
subplot(2,1,2);%对信号做FFT变换
derta=fs/length(x);%计算频谱间隔
plot(-fs/2:
derta:
fs/2-derta,abs(fx));gridon;%画出频谱图
title('采样后语音信号的频谱图');
其中,[x,fs]=audioread(filename);用于读取语音,采样值放在向量x中,fs表示采样频率(Hz)。
Sound函数用来对于声音的回放,x代表一个信号。
fft函数是用于求解傅里叶变换,得出采样信号。
3.3.3信号的延时
dx=[zeros(2000,1);x];figure;%信号的延时
subplot(2,1,1);
plot(z);gridon;
title('加延时后语音信号的时域波形');
fdx=fft(dx);
derta=fs/length(dx);
plot(-fs/2:
derta:
fs/2-derta,abs(fdx));gridon;
title('加延时后语音信号的频谱图');
其中,用zeros函数来使信号延时,zeros是用来生成全0矩阵的,比如,zeros(M,N)表示的是M行*N列的0矩阵。
3.3.4信号的混响
x=[x;zeros(2000,1)];%对原信号延长至与延时信号相同的长度
ax=x+dx;%将延长的原信号与延时信号相加得到混响信号
figure;
subplot(2,1,1);
plot(ax);gridon;
title('加混响后语音信号的时域波形');
fax=fft(ax);
fax=fftshift(fax);
subplot(2,1,2);
derta=fs/length(ax);
plot(-fs/2:
derta:
fs/2-derta,abs(fax));gridon;
title('加混响后语音信号的频谱图');
对语音信号进行延时后,在使原语音信号的长度变换得与延时的信号同长,最后时这两个信号相加便可以得到混响后的信号。
3.3.5单回声滤波器
a=0.5;
r=2000;
Bz0=[1,zeros(1,r-1),a];
Az0=
(1);
freqz(Bz0,Az0);
title('单回声滤波器');
snf=x+a*dx;
figure;
subplot(2,1,1);
plot(snf);gridon;
title('经单回声滤波后语音信号的时域波形');
fsnf=fft(snf);
fsnf=fftshift(fsnf);
subplot(2,1,2);
derta=fs/length(snf);
plot(-fs/2:
derta:
fs/2-derta,abs(fsnf));gridon;
title('经单回声滤波后语音信号的频谱图');
disp('按enter键播放录音');input('');clc;
sound(snf,fs);
disp('按enter键继续');input('');clc;
其中,用函数snf=x+a*dx来对信号进行单回声滤波。
用freqz函数画出单回声滤波器的频率响应图。
再用fft函数进行傅里叶变换,就可以得出对应的时域波形和频谱图。
3.3.6多重回声滤波器
a=0.5;
N=10;
Bz1=[1,0,0,0,0,0,0,0,0,0,-a^N];
Az1=[1,0,0,0,0,0,0,0,0,0,-a];
freqz(Bz1,Az1);
title('多重回声滤波器')
mnf=filter(Bz1,Az1,x);
figure;
subplot(2,1,1);
plot(mnf);gridon;
title('经多重回声滤波后语音信号的时域波形');
fmnf=fft(mnf);
fmnf=fftshift(fmnf);
subplot(2,1,2);
derta=fs/length(mnf);
plot(-fs/2:
derta:
fs/2-derta,abs(fmnf));gridon;
title('经多重回声滤波后语音信号的频谱图');
disp('按enter键播放录音');input('');clc;
sound(mnf,fs);
disp('按enter键继续');input('');clc;
其中,编写出如上对应的多重回声滤波器函数,然后用filter函数调用滤波器,用freqz函数画出多重回声滤波器的频率响应图。
再用fft函数进行傅里叶变换,就可以得出对应的时域波形和频谱图。
3.3.7无限回声滤波器
a=0.5;
Bz=[0,0,0,0,0,0,0,0,0,0,1];
Az=[1,0,0,0,0,0,0,0,0,0,-a];
freqz(Bz,Az);
title('无限回声滤波器')
inf=filter(Bz,Az,x);
figure;
subplot(2,1,1);
plot(inf);gridon;
title('经无限回声滤波后语音信号的时域波形');
finf=fft(inf);
finf=fftshift(finf);
subplot(2,1,2);
derta=fs/length(inf);
plot(-fs/2:
derta:
fs/2-derta,abs(finf));gridon;
titl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 声音 延时 混响 仿真