声音的延时和混响仿真课程设计任务书毕设论文.docx
《声音的延时和混响仿真课程设计任务书毕设论文.docx》由会员分享,可在线阅读,更多相关《声音的延时和混响仿真课程设计任务书毕设论文.docx(37页珍藏版)》请在冰豆网上搜索。
![声音的延时和混响仿真课程设计任务书毕设论文.docx](https://file1.bdocx.com/fileroot1/2023-6/11/35d78ff4-cb07-44ec-98dc-c9495efc92e5/35d78ff4-cb07-44ec-98dc-c9495efc92e51.gif)
声音的延时和混响仿真课程设计任务书毕设论文
课程设计任务书
学生姓名:
专业班级:
通信0906班
指导教师:
黄铮工作单位:
信息工程学院
题目:
声音的延时和混响仿真
初始条件:
MATLAB软件,电脑
要求完成的主要任务:
1.录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样。
语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图。
2.将信号加入延时和混响,并与原始信号频谱进行比较。
3.设计单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应。
用滤波器对语音信号进行滤波。
画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。
4.回放语音信号。
时间安排:
序
号
阶段内容
所需时间
1
查阅资料
2天
2
各部分编程
3天
4
调试程序
2天
5
GUI设计
3天
答辩
1天
合计
11天
指导教师签名:
2012年月日
系主任(或责任教师)签名:
2012年月日
摘要
数字信号处理(DigitalSignalProcessing)技术,从20世纪60年代以来,随着计算机科学和信息科学发展,数字处理技术应运而生并得以快速发展。
语言是人们进行信息沟通的主要方式之一,它具有直接、自然、方便等优点。
语音则是语言的物理层表达方式。
语音处理主要是对语音进行机器处理,以达到传输、自动识别、机器理解等目的。
进行了语音处理过程的滤波、采样、傅立叶变换和谱包络提取的算法实现研究,讨论了在算法的DSP实现方法,
Matlab语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,Matlab功能强大、简单易学、编程效率高。
特别是Matlab还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计
关键词语音信号处理MATLAB语言滤波器频谱分析GUI
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
KeywordsSpeechsignalprocessingSpectralanalysisofMATLABFilterSpectrumanalysisGraphicalUserInterface
1.引言
1.1简介
数字信号处理主要是研究用数字或符号序列表示和处理信号。
处理的目的可以是削弱信号中的多余内容,滤除混杂的噪声和干扰,或者是将信号变换为容易分析和识别的形式,便于估计和选择它的特征参数。
语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理。
而且,语音合成的音质好坏,语音识别率的高低,也都取决于对语音信号分桥的准确性和精确性。
因此语音信号分析在语音信号处理应用中具有举足轻重的地位。
根据所分析出的参数的性质的不同,可将语音信号分析分为时域分析、频域分析、倒领域分析等;时域分析方法具有简单、计算量小、物理意义明确等优点,但由于语音信号最重要的感知特性反映在功率谱中,而相位变化只起着很小的作用,所以相对于时域分析来说频域分析更为重要。
本文将简要介绍时域分析、频域分析。
声音信号是一维连续信号,而计算机只能处理离散信号。
为了从离散信号还原连续信号,根据采样定理,可以确定采样频率的最小值。
wav文件是一种数字声音文件格式,本课程设计基于Matlab分析了wav声音文件频谱与声音的关系。
通过采集个人的一段声音进行频谱分析等处理,然后设计数字滤波器处理这个原始声音的wav文件,并比较滤波以后输出声音信号与原声音信号的异同。
1.2设计任务及要求
设计任务:
(1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样。
(2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图。
(3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较。
(4)设计几种特殊类型的滤波器:
单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应。
(5)用自己设计的滤波器对采集的语音信号进行滤波。
(6)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。
(7)回放语音信号。
设计要求
(1)熟悉离散信号和系统的时域特性。
(2)熟悉语音信号的特点。
(3)掌握数字信号处理的基本概念,基本理论和基本方法。
(4)掌握序列快速傅里叶变换方法。
(5)学会MATLAB的使用,掌握MATLAB的程序设计方法。
(6)掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法
2设计原理
2.1语音信号的采样
(1)采样频率
采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。
采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。
这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。
(2)采样位数
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。
采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。
无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。
每增加一个采样位数相当于力度范围增加了6dB。
采样位数越多则捕捉到的信号越精确。
对于采样率来说你可以想象它类似于一个照相机,44.1kHz意味着音频流进入计算机时计算机每秒会对其拍照达441000次。
显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。
(3)采样定理
在进行模拟/数字信号的转换过程中,当采样频率fsmax大于信号最高频率fmax的2倍时,即:
fsmax>=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍,采样定理又称奈奎斯特定理。
1924年奈奎斯特(Nyquist)就推导出:
在理想低通信道的最大码元传输速率=2W*log2N(其中W是理想低通信道的带宽,N是电平强度)。
2.2时域分析
语音信号的时域分析就是分析和提取语音信号的时域参数。
进行语音分析时,最先接触到并且也是最直观的是它的时域波形。
语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。
时域分析通常用于最基本的参数分析及应用,如语音的分割、预处理、大分类等。
这种分析方法的特点是:
表示语音信号比较直观、物理意义明确。
实现起来比较简单、运算且少。
可以得到语音的一些重要的参数。
④只使用示波器等通用设备,使用较为简单等。
2.3频域分析
在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。
下面介绍这些函数:
(1)函数FFT用于序列快速傅立叶变换。
函数的一种调用格式为:
y=fft(x)
其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT。
且和x相同长度。
若x为一矩阵,则y是对矩阵的每一列向量进行FFT。
如果x长度是2的幂次方,函数fft执行高速基-2FFT算法;否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。
(2)函数FFT的另一种调用格式为:
y=fft(x,N)
式中,x,y意义同前,N为正整数。
函数执行N点的FFT。
若x为向量且长度小于N,则函数将x补零至长度N。
若向量x的长度大于N,则函数截短x使之长度为N。
若x为矩阵,按相同方法对x进行处理。
(3)经函数fft求得的序列y一般是复序列,通常要求其幅值和相位。
MATLAB提供求复数的幅值和相位函数:
abs,angle,这些函数一般和FFT同时使用。
函数abs(x)用于计算复向量x的幅值,函数angle(x)用于计算复向量的相角,以弧度表示。
函数unwrap(p)用于展开弧度相位角p。
(4)fftshift作用:
将零频点移到频谱的中间
用法:
Y=fftshift(X)Y=fftshift(X,dim)
描述:
fftshift移动零频点到频谱中间,重新排列fft,fft2和fftn的输出结果。
将零频点放到频谱的中间对于观察傅立叶变换是有用的。
2.4延时
延时就是将音源延迟一段时间后,再欲播放的效果处理。
依其延迟时间的不同,可分别产生合唱、镶边、回音等效果。
当延迟时间在3~35ms之间时人耳感觉不到滞后音的存在,并且他与原音源叠加后,会因其相位干涉而产生"梳状滤波"效应,这就是镶边效果。
如果延迟时间在50ms以上时,其延迟音就清晰可辨,此时的处理效果才是回音。
回音处理一般都是用于产生简单的混响效果。
延时、合唱、镶边、回音等效果的可调参数都差不多,具体有以下几项:
延时时间(Dly),即主延时电路的延时时间调整。
反馈增益(FBGain),即延时反馈的增益控制。
反馈高频比(HiRatio),即反馈回路上的高频衰减控制。
调制频率(Freq),指主延时的调频周期。
调制深度(Depth),指上述调频电路的调制深度。
高频增益(HF),指高频均衡控制。
预延时(IniDly),指主延时电路预延时时间调整。
均衡频率(EQF),这里的频率均衡用于音色调整,此为均衡的中点频率选择。
由于延时产生的效果都比较复杂多变,如果不是效果处理专家,建议使用设备提供的预置参数,因为这些预置参数给出的处理效果一般都比较好。
2.5混响
混响效果主要是用于增加音源的融合感。
自然音源的延时声阵列非常密集、复杂,所以模拟混响效果的程序也复杂多变。
常见参数有以下几种:
混响时间:
能逼真的模拟自然混响的数码混响器上都有一套复杂的程序,其上虽然有很多技术参数可调,然而对这些技术参数的调整都不会比原有的效果更为自然,尤其是混响时间。
高频滚降:
此项参数用于模拟自然混响当中,空气对高频的吸收效应,以产生较为自然的混响效果。
一般高频混降的可调范围为0.1~1.0。
此值较高时,混响效果也较接近自然混响;此值较低时,混响效果则较清澈。
扩散度:
此项参数可调整混响声阵密度的增长速度,其可调范围为0~10,其值较高时,混响效果比较丰厚、温暖;其值较低时,混响效果则较空旷、冷僻。
预延时:
自然混响声阵的建立都会延迟一段时间,预延时即为模拟次效应而设置。
声阵密度:
此项参数可调整声阵的密度,其值较高时,混响效果较为温暖,但有明显的声染色;其值较低时,混响效果较深邃,切声染色也较弱。
频率调制:
这是一项技术性的参数,因为电子混响的声阵密度比自然混响稀疏,为了使混响的声音比较平滑、连贯,需要对混响声阵列的延时时间进行调制。
此项技术可以有效的消除延时声阵列的段裂声,可以增加混响声的柔和感。
调治深度:
指上述调频电路的调治深度。
2.6滤波器的设计
单回声滤波器的系统函数:
H(z)=
<1(2-1)
无限个回声滤波器的系统函数:
H(z)=
<1(2-2)
全通结构的混响器的系统函数:
H(z)=
<1(2-3)
函数filter的调用格式为:
y=filter(b,a,x)
该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。
其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波器。
该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。
2.7图形用户界面的设计
GUI(GraphicalUserInterface)图形用户界面,是在图形界面下安排显示与用户交互的组件元素,用户可以只通过键盘、鼠标和前台界面下的组件发生交互,而所有的计算、绘图等内部操作都封装在内部,提高了终端用户使用MATLAB程序的易用性。
设计图形用户界面应遵循以下三个原则:
简单性(Simplicity)、一致性(Consistency)及习常性(Familiarity)。
(1)简单性
设计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征。
设计的图形界面要直观,为此应多采用图形,而间量避免数值。
设计界面应间量减少窗口数目,力避在不同窗口之间进行来回切换。
(2)一致性
所谓一致性有两层含义:
一是读者自己开发的界面风格要尽量一致;二是新设计的界面要与其他已有的界面的风格不要截然向左。
(3)习常性
设计界面时,应尽量使用人们所熟悉的标志与符号。
用户可以根据熟悉标志作出正确猜测,自学入门。
(4)其他考虑因素
注意界面的动态性能。
如界面对用户操作的响应要迅速(Immediate)、连续(Continous);对持续时间较长的运算,要给出等待时间提示,并允许用户中断运算。
图形用户界面的制作包括界面设计和程序实现。
具体制作步骤如下:
(1)分析界面所要求实现的主要功能,明确设计任务;
(2)在稿纸上绘出界面草图,并站在使用者的角度来审查草图;
(3)按构思的草图,上机制作静态界面,并检查之;
(4)编写界面动态功能的程序,对功能进行逐项检查。
3设计步骤
3.1总体设计流程图
图3-1总体设计流程图
3.2详细设计
3.2.1语音的录制
运行程序,录制语音文件,文件名为sound.wav
程序:
%获取录音文件
pause
fs=44100;%声音的采样频率为44.1Khz
duration=3;%录音时间为3s
fprintf('按任意键开始录音1:
\n');
pause
fprintf('录音中···\n');
sd1=wavrecord(duration*fs,fs);%采样数为132300,保存文件名为sd1.wav
fprintf('放音中···\n');
wavplay(sd1,fs);
fprintf('录音1播放完毕。
\n');
wavwrite(sd1,fs,'sound1.wav');%将录音文件保存为WAV格式的声音文件
3.2.2原始信号
读取声音,画出采样后语音信号的时域波形与频谱图,并回放采样语音信号。
程序:
[x1,fs,bits]=wavread('D:
\sound1.wav');%读取信号,采样值放在向量x中,fs表示采样频率(Hz),bits表示采样位数。
x1=x1(:
1);%只取单声道
sound(x1,fs);%对声音的回放
figure;Subplot(211);
plot(x1);%做原始语音信号的时域图形
title('原始语音信号的时域图');gridon;
xlabel('时间n');ylabel('音量n');
y1=fft(x1);%做length(x1)点的FFT
y1=fftshift(y1);%平移,是频率中心为0
derta_fs=fs/length(x1);%设置频谱的间隔,分辨率
Subplot(212);
plot([-fs/2:
derta_fs:
fs/2-derta_fs],abs(y1));%画出原始语音信号的频谱图
title('原始语音信号的频谱');gridon;
运行结果:
图3-2原始语音信号的时域波形与频谱图
结果分析:
采样点数为132300,与时域波形结果吻合,由频谱可看出频率较集中,有一点高频分量,是由于噪声的干扰引起的。
3.2.3延时
对原始语音信号延时2000,画出延时后语音信号的时域波形与频谱图,并回放延时后的语音信号。
程序:
%延时的信号
[x1,fs,bits]=wavread('D:
\sound1.wav');
x1=x1(:
1);%只取单声道
z=[zeros(2000,1);x1];%对声音延时2000
sound(z,fs);
figure
(2);Subplot(211);
plot(z);
title('延时后的信号时域图');gridon;%画出延时后的信号时域图
z=fft(x1);%做length(x1)点的FFT
z=fftshift(z);%平移,是频率中心为0
derta_fs=fs/length(z);%设置频谱的间隔,分辨率
Subplot(212);
plot([-fs/2:
derta_fs:
fs/2-derta_fs],abs(z));%画出延时后的信号频谱图
title('延时后的信号频谱图');gridon;
运行结果:
图3-3延时后语音信号的时域波形与频谱图
结果分析:
由运行结果可以看出,时域波形向右平移,频谱无变化。
3.2.4混响
调整原始采样信号的长度,将其与延时信号相加,就得到混响。
画出混响后语音信号的时域波形与频谱图,并回放延时后的语音信号。
程序:
%混响后信号
[x,fs,bits]=wavread('D:
\sound1.wav');%读取语音信号
x=x(:
1);%只取单声道
z=[zeros(2000,1);x];%对语音信号进行延时
x=[x;zeros(2000,1)];%使语音信号与延时后信号同等长度
y1=x+z;%信号的混响
sound(y1,fs);%回放混响后的信号
figure(3);subplot(211);plot(y1);title('混响的时域图');%混响时域图
Y1=fft(y1);%做length(y1)点的FFT
Y1=fftshift(Y1);%平移,是频率中心为0
derta_fs=fs/length(y1);%设置频谱的间隔,分辨率
Subplot(212);
plot([-fs/2:
derta_fs:
fs/2-derta_fs],abs(Y1));%画出混响频谱图
title('混响的频谱图');gridon;
运行结果:
图3-4混响后语音信号的时域波形与频谱图
结果分析:
由运行结果可以看出,原始信号的延时声阵列非常密集、复杂,混响后时域波形音量增大了,各个脉冲变宽,语音信号的频谱展宽了,幅值增大,回放的语音声音变得融合,能听到回音。
3.2.5单回声滤波器
用单回声滤波器对原始语音信号滤波,画出滤波后语音信号的时域波形与频谱图,并回滤波时后的语音信号。
程序:
%单回声滤波器
[x,fs,bits]=wavread('D:
\sound1.wav');%读取语音信号
x=x(:
1);%只取单声道
a=0.5;%a取小于等于1
z=[zeros(2000,1);x];%对语音信号进行延时
x=[x;zeros(2000,1)];%使语音信号与延时后信号同等长度
y2=x+z*a;%信号经单回声滤波
sound(y2,fs);%回放经单回声滤波器后的语音信号
figure;subplot(211);plot(y2);title('单回声滤波的信号时域图');
Y2=fft(y2);%做length(y2)点的FFT
Y2=fftshift(Y2);%平移,是频率中心为0
derta_fs=fs/length(y2);%设置频谱的间隔,分辨率
Subplot(212);
plot([-fs/2:
derta_fs:
fs/2-derta_fs],abs(Y2));%画出单回声信号频谱图
title('单回声滤波的信号频谱图');gridon;
运行结果:
图3-5单回声滤波器滤波后信号的时域波形与频谱图
结果分析:
由运行结果可以看出,时域波形的幅值变大,毛刺变多,频谱的中心频率两边的频率分量展宽、幅值变大,回放的声音立体感变强。
3.2.6多回声滤波器
用多回声滤波器对原始语音信号滤波,画出滤波后语音信号的时域波形与频谱图,并回滤波时后的语音信号。
程序:
%多回声滤波器
[x,fs,bits]=wavread('D:
\sound1.wav');
x1=x(:
1);%变换为单声道语音信号
delay_t=0.1;%回声延迟时间
a=0.2;%衰减系数
N=3;%N阶延时
Bz=[1;zeros(fs*delay_t,1)*N;a^N];
Az=[1;zeros(fs*delay_t,1);a];
y=filter(Bz,Az,x1);
sound(y,fs,bits);%回放经多回声滤波器后的语音信号
figure;subplot(211);plot(y);title('多回声滤波的信号时域图')