声音的延时和混响仿真.docx
《声音的延时和混响仿真.docx》由会员分享,可在线阅读,更多相关《声音的延时和混响仿真.docx(29页珍藏版)》请在冰豆网上搜索。
![声音的延时和混响仿真.docx](https://file1.bdocx.com/fileroot1/2023-2/23/1b2fab89-3f98-478b-894f-56c806bb3574/1b2fab89-3f98-478b-894f-56c806bb35741.gif)
声音的延时和混响仿真
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
声音的延时和混响仿真
初始条件:
Matlab应用软件
Windows自带的录音功能
延时和混响的相关知识
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样。
(2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图。
(3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较。
(4)设计几种特殊类型的滤波器:
单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应。
(5)用自己设计的滤波器对采集的语音信号进行滤波。
(6)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。
(7)回放语音信号。
时间安排:
第18周:
下达任务;第19周:
查找资料,编写程序并调试;第20周:
撰写设计报告及答辩。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
摘要I
AbstractII
1设计要求1
1.1设计任务1
1.2设计要求1
2课题描述1
2.1课题背景及意义1
2.2课题目标2
3系统框架及实现2
3.1总体方案图2
3.2程序流程图3
4设计原理4
4.1混响和延时的基本原理4
4.2离散傅立叶变换6
4.3滤波器设计6
5设计步骤7
5.1读取1s的语音信号7
5.2采样后语音信号的时域波形和频谱8
5.3对采样后的信号延时2008
5.4对信号进行混响8
5.5单回声滤波器9
5.6无限回声滤波器9
5.7多重回声滤波器9
5.8全通结构的混响器10
6运行结果11
7小结与体会19
参考文献20
附录21
摘要
语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。
通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。
信号处理是Matlab重要应用的领域之一。
本课程设计基于Matlab分析wav声音文件频谱与声音的关系。
通过采集个人的一段声音进行频谱分析等处理,然后设计数字滤波器处理这个原始声音的wav文件,并比较滤波以后输出声音信号与原声音信号的异同。
关键词matlab语音信号延时混响滤波器
Abstract
Speechsignalprocessingisthestudyofdigitalsignalprocessingtechnologyandphoneticsknowledgeofthevoicesignalprocessingoftheemergingdiscipline,isoneofthecoretechnologyofthefastestgrowingfieldofscientificresearch.Voicetransmissionofinformationishumanisthemostimportantandeffectiveexchangeofinformationintheformmostcommonlyusedandmostconvenient.
TheMatlablanguageisaverypowerfulcomputerapplicationsoftwareinadataanalysisandprocessingfunctions,itcantransformthesoundfilesfordiscretedatafiles,andthenuseitspowerfulmatrixoperationscapableofhandlingdata,suchasdigitalfiltering,Fouriertransform,domainandfrequencydomainanalysis,voiceplayback,aswellasavarietyofmapshowingthesignalprocessingandanalysistoolkitforspeechsignalanalysisprovidesaveryrichfeaturefunction,theuseofthesefeaturesfunctioncanquickandeasilycompletedthespeechsignalprocessingandanalysisandsignalvisualization,makecomputerinteractionmoreconvenient.ThesignalprocessingisoneofthetheMatlabimportantfieldofapplication.
ThiscourseisdesignedbasedonMatlabanalysisofthespectrum,therelationshipbetweensoundofwavsoundfiles.Throughthecollectionofindividualsasoundspectrumanalysis,processing,andthendesignthedigitalfilter,theoriginalsoundwavfiles,andcomparesimilaritiesanddifferencesoftheoutputaudiosignalwiththeoriginalsoundsignalafterthefilter.
Keywordsmatlabvoicesignaldelayreverbfilter
1设计要求
1.1设计任务
(1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样。
(2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图。
(3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较。
(4)设计几种特殊类型的滤波器:
单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应。
(5)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。
(6)回放语音信号。
1.2设计要求
(1)熟悉离散信号和系统的时域特性。
(2)熟悉语音信号的特点。
(3)掌握数字信号处理的基本概念,基本理论和基本方法。
(4)掌握序列快速傅里叶变换方法。
(5)学会MATLAB的使用,掌握MATLAB的程序设计方法。
(6)掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法
2课题描述
1
2
2.1课题背景及意义
语音信号处理是一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段。
通过语言相互传递信息是人类最重要的基本功能之一。
语言是人类特有的功能,它是创造和记载几千年人类文明史的根本手段,没有语言就没有今天的人类文明。
语音是语言的声学表现,是相互传递信息的最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。
近年来,随着计算机及大规模数字集成电路的迅速发展,语音数字信号处理得到了相应的发展。
语音信号分析模拟、语音合成、语音识别等的研究已较成熟。
、各种声码器、声控器、语声识别系统、语声合成器等已逐渐有商品出现。
2.2课题目标
对于录制一个wav语音文件,对其进行采样信号、对加入延时和混响后的信号和通过几种特殊滤波器后的信号分别画出对应的时域波形和频谱图,并对比进行分析。
3系统框架及实现
1
2
3
3.1总体方案图
图3.1程序总体框图
3.2程序流程图
图3.2程序流程图
4设计原理
4
4.1混响和延时的基本原理
1.混响
声音是通过媒质传入人的听觉器官的。
媒质,既是声音的传播途径,也是声音的载体。
用一个日常生活中司空见惯的例子来说,媒质,就像湖中传递波浪的湖水。
在平静的湖面投人一块石子,石子击起水波,波纹越来越大,水波越传越远。
这湖水,就是传播水波的媒质。
声音也仿佛如此:
当某一声源发音,空气中声波的震荡就会改变周围空气的静止状态,使之形成时而压缩,时而稀疏的前进波,声波就这样不断地散发开去,传播声音的媒质就是空气。
在闭室中,当声源发出一个声音信号(例如是一个脉冲声信号)时,位于室内任何一点的听者所接收到的声音中,应包含两部分成份,一部分是由声源直接传到听者的声音,我们称其为“直达声”。
另一部分是声波传到墙壁或障碍物处反射出的声音,其中有一些被听者接收到,另外一些又会传到其它墙壁处再次发生反射,反射后的声音中又有一些被听者接收到,类似地持续下去,将听者接收到的这部分声音,统称为“反射声”。
从时间上看,反射声较直达声落后(或称为延迟声),从能量角度看,由于每经一次反射都会有部分能量被吸收,因此反射声是一系列能量逐渐衰减的延迟声。
数字混响可以通过用人工创作的回音并将它加入原始信号里,从而把隔音录音室里录制的声音转换为一种自然的声音形式;回音可以简单地由延迟单元产生。
混响效果主要是用于增加音源的融合感。
自然音源的延时声阵列非常密集、复杂,所以模拟混响效果的程序也复杂多变。
常见参数有以下几种:
(1)混响时间:
能逼真的模拟自然混响的数码混响器上都有一套复杂的程序,其上虽然有很多技术参数可调,然而对这些技术参数的调整都不会比原有的效果更为自然,尤其是混响时间。
(2)高频滚降:
此项参数用于模拟自然混响当中,空气对高频的吸收效应,以产生较为自然的混响效果。
一般高频混降的可调范围为0.1~1.0。
此值较高时,混响效果也较接近自然混响;此值较低时,混响效果则较清澈。
(3)扩散度:
此项参数可调整混响声阵密度的增长速度,其可调范围为0~10,其值较高时,混响效果比较丰厚、温暖;其值较低时,混响效果则较空旷、冷僻。
(4)预延时:
自然混响声阵的建立都会延迟一段时间,预延时即为模拟次效应而设置。
(5)声阵密度:
此项参数可调整声阵的密度,其值较高时,混响效果较为温暖,但有明显的声染色;其值较低时,混响效果较深邃,切声染色也较弱。
(6)频率调制:
这是一项技术性的参数,因为电子混响的声阵密度比自然混响稀疏,为了使混响的声音比较平滑、连贯,需要对混响声阵列的延时时间进行调制。
此项技术可以有效的消除延时声阵列的段裂声,可以增加混响声的柔和感。
(7)调治深度:
指上述调频电路的调治深度。
2.延时
延时就是将音源延迟一段时间后,再欲播放的效果处理。
依其延迟时间的不同,可分别产生合唱、镶边、回音等效果。
当延迟时间在3~35ms之间时人耳感觉不到滞后音的存在,并且他与原音源叠加后,会因其相位干涉而产生"梳状滤波"效应,这就是镶边效果。
如果延迟时间在50ms以上时,其延迟音就清晰可辨,此时的处理效果才是回音。
回音处理一般都是用于产生简单的混响效果。
4.2离散傅立叶变换
在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。
下面介绍这些函数。
函数FFT用于序列快速傅立叶变换。
函数的一种调用格式为 y=fft(x)(式4-1)
其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT。
且和x相同长度。
若x为一矩阵,则y是对矩阵的每一列向量进行FFT。
如果x长度是2的幂次方,函数fft执行高速基-2FFT算法;否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。
函数FFT的另一种调用格式为 y=fft(x,N)(式4-2)
式中,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选择点数有关,但不影响分析结果。
4.3滤波器设计
数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。
数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
4.3.1特殊滤波器的系统函数:
1.单回声滤波器的系统函数:
H(z)=
<1(式4-3)
2.无限个回声滤波器的系统函数:
H(z)=
<1(式4-4)
3.多重回声滤波器的系统函数:
H(z)=
<1(式4-5)
4.全通结构的混响器的系统函数:
H(z)=
<1(式4-6)
4.3.2滤波函数filter
系统还是离散时间LTI系统,系统对输入信号的响应,实质上就是对输入信号从频域角度,无论是连续时间LTI的频谱进行不同选择处理的过程,这个过程称为滤波。
因此,在MATLAB的信息处理工具箱中,提供了一维滤波器函数filter和二维滤波器函数filter2。
函数filter的调用格式为 y=filter(b,a,x)(式4-7)
该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。
其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波器。
该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。
5设计步骤
5.1读取1s的语音信号
x1=wavread('make.wav');%读取信号
可以使用matlab中的wavread函数把录制好的语音信号读入。
5.2采样后语音信号的时域波形和频谱
[x,fs,bits]=wavread('make.wav',[1000040000]);
x=x(:
1);%只取单声道
sound(5*x,fs);%对声音的回放
n1=0:
2000;
N=size(x,1);
figure
(2);subplot(2,1,1);plot(x);title('采样后语音信号的时域波形');
Y=fft(x,2001);subplot(2,1,2);%对信号做2001点FFT变换
plot(n1(1:
1000),Y(1:
1000));title('采样后语音信号的频谱图');%信号幅度
其中[x,fs,bits]=wavread('make.wav',[1000040000]);用于读取语音,采样值放在向量x中,fs表示采样频率(Hz),bits表示采样位数。
Sound函数用来对于声音的回放,X代表一个信号。
fft函数是用于求解傅里叶变换,得出采样信号。
5.3对采样后的信号延时200
z=[zeros(200,1);x];figure(3);%信号的延时
subplot(2,1,1);plot(z);title('延时后的时域图');%画出延时后的信号时域图
Z=fft(z,2001);
subplot(2,1,2);plot(n1(1:
1000),Z(1:
1000));%延时后的信号频谱图
title('延时后的频谱图');
其中用zeros函数来使信号延时,zeros是用来生成全0矩阵的,比如,zeros(M,N)表示的是M行*N列的0矩阵。
5.4对信号进行混响
z=[zeros(200,1);x];%对语音信号进行延时
x=[x;zeros(200,1)];%使语音信号与延时后信号同等长度
y1=x+z;%信号的混响
figure(4);subplot(2,1,1);plot(y1);title('混响的时域图');%混响时域图
Y1=fft(y1,2001);%对混响信号2001点的FFT变换
subplot(2,1,2);plot(n1(1:
1000),Y1(1:
1000));%混响频谱图
title('混响的频谱图');
对语音信号进行延时后,在使原语音信号的长度变换得与延时的信号同长,最后时这两个信号相加便可以得到混响后的信号。
5.5单回声滤波器
a=0.5;%a取小于等于1
yy1=x+z*0.5;%信号经单回声滤波
figure(5);subplot(2,1,1);plot(yy1);title('单回声滤波器时域图');
YY1=fft(yy1,2001);%对单回声信号做2001点的FFT变换
subplot(2,1,2);plot(n1(1:
1000),Y2(1:
1000));%单回声信号频谱图
title('单回声滤波器频谱图');
其中,用函数yy1=x+z*0.5来对信号进行单回声滤波。
5.6无限回声滤波器
a=0.5;%a取小于等于1
Bz=[0,0,0,0,0,0,0,0,0,0,1];%分子的系数
Az=[1,0,0,0,0,0,0,0,0,0,-a];%分母的系数
yy2=filter(Bz,Az,x);%滤波器进行滤波
figure(6);subplot(2,1,1);plot(yy2);%无限回声滤波器时域波形
title('无限个回声滤波器时域波形');
YY2=fft(yy2,2001);%经无限回声滤波器后的信号做2001点的FFT变换
subplot(2,1,2);plot(n1(1:
1000),YY2(1:
1000));%无限回声滤波器频谱图
title('无限个回声滤波器频谱图');
其中,编写出如上对应的无限回声滤波器函数,然后用filter函数调用滤波器。
5.7多重回声滤波器
a=0.5;%a取小于等于1
N=5
Bz1=[1,0,0,0,0,0,0,0,0,0,-0.5^N]%分子的系数
Az1=[1,0,0,0,0,0,0,0,0,0,-0.5];%分母的系数
yy3=filter(Bz1,Az1,x);figure(7);%滤波器进行滤波
subplot(2,1,1);plot(yy3);title('多重回声滤波器的时域图')%多重回声滤波器的混响器时域波形
YY3=fft(yy3,2001);%经多重回声滤波器后的信号做2001点的FFT变换
subplot(2,1,2);plot(n1(1:
1000),YY3(1:
1000));%多重回声滤波器的频谱图
title('多重回声的频谱图')
5.8全通结构的混响器
a=0.5;%a取小于等于1
Bz1=[a,0,0,0,0,0,0,0,0,0,1];%分子的系数
Az1=[1,0,0,0,0,0,0,0,0,0,a];%分母的系数
yy3=filter(Bz1,Az1,x);figure(6);%滤波器进行滤波
subplot(2,1,1);plot(yy2);title('全通应的时域图')%全通结构的混响器时域波形
YY2=fft(yy2,2001);%经全通结构的混响器后的信号做2001点的FFT变换
subplot(2,1,2);plot(n1(1:
1000),YY2(1:
1000));%全通结构的混响器频谱图
title('全通应的频谱图')
同理,得出全通结构滤波器的函数,用filter函数调用滤波器,再用fft函数进行傅里叶变换,就可以得出对应的时域波形和频谱结构。
6.运行结果
1.原始信号时域波形图,如图6.1所示
图6.1原始信号的时域波形
2.语音信号经过采样操作,如图6.2所示。
图6.2采样后的时域波形图和频谱图
3.采样后信号进行延时操作,如图6.3所示。
图6.3延时后的时域波形和频谱图
分析:
1)从时域上看,延时后的波形向右移动。
2)从频谱图上看,幅值上几乎不变。
4.语音信号进行混响操作
图6.4混响后的时域波形图和频谱图
分析:
1)从时域上看,混响之后时域幅值和波形都发生了一定变化。
2)从频谱图上看,混响后频谱有上下跳动,其幅值有一定改变,如在采样点40,,320,500,670点处可以看到混响较为明显。
5.语音信号通过单回声滤波器
图6.5单回声滤波器的时域波形图和频谱图
分析:
1)从时域上看,滤波后幅值有一定变化
2)从频谱上看,滤波后频谱有微小的上下跳动。
6.语音信号通过无限回声滤波器
图6.6无限回声滤波器的时域波形图和频谱图
分析:
1)从时域上看,波形与滤波前的波形大体相同,幅度上发生变化。
2)从频谱图上看,幅度有一定变化,在采样点10,200,500点处可以看到幅值变化明显
7.语音信号通过多重回声滤波器
图6.7多重回声滤波器的时域波形图和频谱图
分析:
1)从时域上看,波形变化大,从1000点后可观察到其波形的形状有明显。
2)从频谱图上看,幅值总体减小。
8.语音信号通过全通滤波器
图6.8全通结构混响的时域波形图和频谱图
分析:
1)从时域上看,波形与滤波前的波形大体相同,幅度上有微小变化;
2)从频谱图上看,幅值略微减小,曲线总体趋势向下。
6小结与体会
通过此次的课程设计,我对语音信号的延时和混响有了进一步的认识,能明白其的原理,特别是对单回声滤波器、多重回声滤波器、全通混响器等几种特别特殊滤波器的系统函数和编程实现都有一定了解。
此次的课设过程中,把它与我们所学的专业知识数字信号处理联系在一起,进一步的加深了对数字信号处理的相关知识的学习。
在设计的过程中,由于对所涉及的几种特殊滤波器之前没有接触过,所以遇到了很大的困难,而且关于在数字处理中,对语音信号里加入延时和混响的的资料都非常的少,这给开始的设计带来了很大的麻烦。
经过各方面的搜索,最终通过在学校的电子阅览室查询和图书馆借阅相关的书籍得出了设计的方案。
这次的课设中,在多次的编程调试过程中,我对matlab的掌握更