基于matlab的数字音效处理器毕业设计论文Word文档下载推荐.docx
- 文档编号:18798400
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:47
- 大小:533.53KB
基于matlab的数字音效处理器毕业设计论文Word文档下载推荐.docx
《基于matlab的数字音效处理器毕业设计论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于matlab的数字音效处理器毕业设计论文Word文档下载推荐.docx(47页珍藏版)》请在冰豆网上搜索。
在实际生活中,除了符合建筑声学标准的录音室、音乐厅等外,一般的室内都很难达到比较完美的音质及效果,通常需要使用音效处理器来进行处理、美化,这使得音效器的发展,得到了更为广泛的关注。
1.2项目背景及研究意义
数字信号处理(DigitalSignalProcessing,DSP)是利用专门或通用的数字信号芯片,以数字计算的方法对信号进行处理,具有处理速度快、灵活、精确、抗干扰能力强、体积小等优点。
DSP有硬件、算法和理论等三个基础支撑着它的发展和应用。
硬件是指用VLSI(超大规模集成电路)实现的通用和专用芯片,目前许多芯片的运算速度已超过每秒几千万次,最高达到每秒16亿次,价格也大幅度降低。
在通信、电视、雷达和各种消费电子产品方面应用的软件和算法非常丰富,例如,信源编码(压缩)和解码、信道编码和解码,信号的调制与解调、噪声对消、信号加密与解密,电机的自动控制和各类信号的分析等。
知成体系的理论包括离散线性系统理论、离散和快速变换理论、数字滤波理论、信号检测理论、量化效应和误差理论、非线性谱估计理论以及小波变换理论等。
数字信号处理的应用领域十分广泛。
就所获取信号的来源而言,有通信信号的处理,雷达信号的处理,遥感信号的处理,控制信号的处理,生物医学信号的处理,地球物理信号的处理,振动信号的处理等。
若以所处理信号的特点来讲,又可分为语音信号处理,图像信号处理,一维信号处理和多维信号处理等。
无论哪方面的应用,首先须经过信息的获取或数据的采集过程得到所需的原始信号,如果原始信号是连续信号,还须经过抽样过程使之成为离散信号,再经过模数转换得到能为数字计算机或处理器所接受的二进制数字信号。
如果所收集到的数据已是离散数据,则只须经过模数转换即可得到二进制数码。
数字信号处理器的功能是将从原始信号抽样转换得来的数字信号按照一定的要求,例如滤波的要求,加以适当的处理,即得到所需的数字输出信号。
经过数模转换先将数字输出信号转换为离散信号,再经过保持电路将离散信号连接起来成为模拟输出信号,这样的处理系统适用于各种数字信号处理的应用,只不过专用处理器或所用软件有所不同而已。
语音信号处理是信号处理中的重要分支之一。
它包括的主要方面有:
语音的识别,语言的理解,语音的合成,语音的增强,语音的数据压缩等。
各种应用均有其特殊问题。
语音识别是将待识别的语音信号的特征参数即时地提取出来,与已知的语音样本进行匹配,从而判定出待识别语音信号的音素属性。
关于语音识别方法,有统计模式语音识别,结构和语句模式语音识别,利用这些方法可以得到共振峰频率、音调、嗓音、噪声等重要参数,语音理解是人和计算机用自然语言对话的理论和技术基础。
语音合成的主要目的是使计算机能够讲话。
为此,首先需要研究清楚在发音时语音特征参数随时间的变化规律,然后利用适当的方法模拟发音的过程,合成为语言。
其他有关语言处理问题也各有其特点。
语音信号处理是发展智能计算机和智能机器人的基础,是制造声码器的依据。
语音信号处理是迅速发展中的一项信号处理技术。
第2章总体方案设计
2.1项目需求分析
该项目题目是数字音效处理器。
要实现音效处理,大致可以分成三部分,即语音采集、语音处理、语音输出。
首先要有待处理的语音信号。
这个语音信号我们可以现场录制,也可以打开已经录制好语音文件;
然后是语音处理,这部分由matlab程序实现;
最后是语音输出,由计算机输出。
2.2开发平台
Matlab2008
2.3项目功能设计
第3章人机交互界面设计
如上图,是我们最终的人机交互界面。
主要分成两个部分,语音采集部分以及特效播放部分。
左边是语音输入部分,包含两种方式:
现场录音和打开文件。
左下方还有一个播放录音或文件的按钮,方便用户在语音输入结束后,试听输入的信号。
右边是播放特效部分,包括低音增强等六种特效,下方还有个另存为按钮以及效果选择下拉菜单,方便用户保存处理后的信号。
人机交互界面总体构图简洁,色彩柔和,布局合理,使用方便,在极大程度上方便了用户的使用,减少了学习使用的时间与成本。
第4章数字语音信号几种简单处理效果设计
4.1低音增强
(1)原理简述
低音增强特效,顾名思义就是讲声音信号的低音部分加强,是处理后的声音信号较原声音信号低频部分幅值增大。
(2)实现步骤
首先使用低通滤波器将声音信号的高频部分滤去,得到只包含低频部分的声音信号,将该信号乘以一个系数后增大,然后与原声音信号叠加,这样得到的新的声音信号频谱分布不发生改变,但是低频部分的幅值明显增大。
实现流程图如下:
(3)效果实现
语音播放后明显感觉到声音变得浑厚有力,有力量感。
下图是与声音信号的频域幅度图与低音增强后的频域幅度谱,从图中可以明显看到,低音增强后的信号在低频部分的幅度得到明显加强。
(4)应用实践
低音增强效果可以用在家庭音响上,可以提升声音的力量感,震撼感。
我们现在家庭娱乐中常使用的“低音炮”用的就是低音增强的原理。
(5)核心代码分析
[x,fs,nbits]=wavread('
1112'
);
%读声音文件
fp1=1000;
fs1=2200;
%设定低通滤波器通带截止频率和阻带截止频率
wp1=2*fp1/Fs;
ws1=2*fs1/Fs;
rp=1;
as=100;
[N1,wp1]=ellipord(wp1,ws1,rp,as);
%计算椭圆低通模拟滤波器的阶数和通带边界频率
[B,A]=ellip(N1,rp,as,wp1);
%计算低通滤波器模拟滤波器系统函数系数
x1=filter(B,A,x);
%低通滤波,得到含有低频部分的信号
y=x+x1*2%语音信号叠加,得到低音增强后的信号
4.2回声特效
回声是我们在日常生活中常会遇到一种声音信号,回声就是原声经过物体反射回来后与原声叠加后形成的效应。
当回声的距离小于一定距离时,回声不能被人耳感知,变现为原声的加强;
当回声距离大于一定距离时,回声能被人耳感知,能够感觉到在原声停止后一段时间后,再次听到此声音,并且响度相对减小。
简单来说,就是延迟、衰减、叠加。
回声是原声延迟衰减后与原声叠加。
声音信号在matlab中以矩阵的形式存储。
一般是N行2列的矩阵(这里指双声道声音),N是声音的点数长度。
为了做到延迟效应,我们在原矩阵x的前面加上(接上)一段m行2列的为零矩阵,得到矩阵x1,这样如果将矩阵x,x1从同一起点观看,那么矩阵x1相当于时间x延时了一段时间。
延时的时间与添加的零矩阵的长度以及采样频率有关。
那么只要将x与x1相叠加,就可以得到回声效果。
这里要注意,由于矩阵相加时要满足矩阵形式相同,所以还要在原来的x后面也接上一段m行2列的为零矩阵,同时为了回声效果的逼真性,还要给x1倍乘一个小于1的系数。
矩阵运算流程如下:
输出的声音人耳听起来有明显的回声效果。
下图是原声、延迟的声音以及叠加后声音信号的时域图。
利用数字信号处理得到的回声可以在需要的情况下模拟回声效果,以适应需求。
[x,fs,nbits]=wavread('
1156384);
%读取文件
x1=[zeros(4000,2);
x];
%前“添”零,声音延时
x2=[x;
zeros(4000,2)];
%后“添”零,使原声音长度与延时后相等
y1=x1*0.8+x2;
%回声衰减并与原声叠加
4.3添加背景音乐
原理较为简单,即两个矩阵的相加。
首先将两个需要叠加的矩阵处理使得形式一致(行列数相等),然后叠加即可。
可是实现为一段人说话声,唱歌声,朗诵声添加背景音乐,其本质是语音序列的叠加,所以可实现两段语音序列的叠加。
为一段人说话声,唱歌声,朗诵声添加背景音乐等,其本质是语音序列的叠加,所以可实现两段语音序列的叠加。
较为简单,此处省略。
4.4回旋特效
回旋特效是我们根据效果来命名的,是将声音的左右声道分时播放,也就是说,在第一段时间内,左声道有声音,下一段时间内,右声道有声音,依次交替。
对声音信号矩阵按行进行遍历,设定点数长度,依次交替分别使左、右声道的某段信号的值在该取样点段内置零。
或者利用矩阵运算的方法实现。
实现步骤如下:
播放处理后的语音,耳机(非立体声耳机)的左右耳机轮流有声音,即当左边耳机有声音时,右边耳机没有,反之亦然。
这样就会产生声源在不断回转,声音有种回旋的效果。
下面是原声以及处理后的左右声道的时域图:
在某些音乐作品中可以产生声源回旋变换的特效,增强音乐的丰富性。
y=zeros(400000,2);
%定义一个矩阵
,400000);
%读声音文件
fori=1:
400000
y(i,:
)=x(i,:
%新建信号序列,用于运算
end
x1=reshape(y,40000,20);
%将信号分成了10段20列
2:
10
x1(:
i)=0;
%1~10列,将单数列置零,即实现左声道的回旋
end
fori=12:
20
%11~20列,将双数列置零,即实现右声道的回旋
x5=reshape(x1,400000,2);
%重排序列,变成N行2列的序列
sound(x5*2,fs);
%单声道播放后,声音幅度有减小,这里做补偿
4.5快/慢放特效
快慢放的原理就是在单位长的时间内播放比原声包含更多或更少的信息的语音序列。
以2倍速率快放为例,就是将原来2倍单位时间内的语音序列在单位时间内播放完,这里的原理用的是在播放时增大采样间隔,那么在单位时间内采集到的点实际包含了从2长度序列采集到的信号(实际上这里就是一个语音序列的有损压缩),虽然这样做有信息丢失,但只要满足奈奎斯特采样定律,语音信号就不会出现失真,所以在一定条件下是可行的。
在播放语音序列时,更改采样频率即可。
但是在作图必须对语音信号一步步处理。
以快放为例,快放时,如果快放倍数为2,那么原本10s长的信号,可以在5s内播放完,并且语音的音调会变高,关于这一点将在后面解释原因。
下面是2倍快放时的语音的时域图(2倍压缩图):
从下面的图中可以看出快放的信号实质上就是原信号的压缩。
下面是语音信号压缩的矩阵运算过程:
快放的这种原理可以用来在保证采样频率的前提下压缩语音信号。
第一种方式(展示原理,绘制图像时使用)
400000);
%读取声音文件
x1=x'
;
%转置
x2=reshape(x1,4,200000);
%重排成2行,400000列
x3=x2'
x4=x3(:
[1,2]);
%取新序列的1、2行
第二种方式(实际程序中使用)
Sound(x,2*fs);
%改变采样频率,播放速度加快一倍
第5章自适应语音分割、倒序
5.1目标实现
这里以一段包含“12345”5个单音节词的人说话声为例说明。
我们要做到的倒序,就是将这段语音序列分割之后,进行重新排列,也就是倒序排列,然后倒序输出,这里的倒序输出指的是我们听的将是“54321”这样一段人的说话声。
所谓的“自适应”,就是指在语音分割时的自适应,例如在分割时不能在“1”语音段中间将企分开,这样会破坏“1”的音,那么倒序之后我们听到的就不是“1”了,而会变成奇怪的东西。
5.2原理简述
原理流程图如下:
5.3实现步骤
(1)首先我们读入一段语音文件或者现场录制一段声音,如录制一段包含“12345”的人说话声。
时域图如下:
我们可以看到有5段比较突出的地方,这就是“12345”这5个数字的声音的时域图,其他的较低的较平稳的部分是没有说话时的时间段,理论上应该是为0的,但是由于人的呼吸声、话筒噪音、环境中的其他声音使得这些本该为0的区域不为0。
(2)为了去除空白区域的噪音,考虑到噪音与语音相比幅值较小,因此可以采用阈值法去除空白处噪音,得到下面的效果。
(3)得到上面的滤除噪音制后的信号后,我们开始语音分割,为了实现语音分割,我们需要知道分割点,我们称之为关键点。
从上图来看,每一小段声音信号的首尾点都是关键点。
下面我们利用这些点的独有特征来找到它们。
这些点有共同的特征,它们都是跳变点。
但是,我们知道每一小段语音信号中都会有很多点的值是零,那么就可能出现会有很多点满足关键点条件,因此,在寻找关键点之前我们要将没一小段为零的点变成不为零。
(4)为了找到关键点,我们要将每一小段信号中为零的点变为不为零,这里采用左右扫秒判别法:
即对于序列中每一个点,如果该点是零且又在某小段序列内,则将该点变为不为零。
判断某点是零且又在某小段序列内的方法:
遍历所有的点(整段序列首尾部分点除外),当遍历到某为点时,对该点左右各扫描m点,若在左右m点中都有任一不为零的点,则将该点值置为某正数a。
这样经过一次遍历,就将所有小段内部为零的点均置为不为零,这样,满足关键点的位置只有每小段的首尾点。
那么根据跳变特性,就可以顺利将这些关键点依次找出。
(5)找到关键点后,依据这些关键点进行语音分割。
分割如下:
(6)分割完后,就可以进行倒序重排了。
到得到的效果如下:
(7)算法优化(快速自适应倒序)
根据实际测试,上述程序算法处理一段10s、采样频率44100Hz的声音倒序耗时约12.2s。
从这个角度来看,上述算法是极不实用的,因此,下面给出一种改进的快速自适应倒序算法。
该算法的核心是数据压缩。
度原来的序列每个十个点抽取一个点形成一个新的序列,然后进行上述的关键点寻找步骤,由于数据压缩了十倍,因此在每小段语音序列为零点置为不为零的过程中所需要左右扫描的数目就降低了十倍。
因此,从理论上来讲,该快速算法比原来的算法的处理速度提高约10倍。
实际测试中用该算法处理相同的语音段,耗时约0.9s.
5.4应用实践
此项技术中的语音自适应分割是关键步骤,完成了这一步之后,可以进行语音提取,语音识别,语音重构等等。
5.5代码分析
[w,fs,nbits]=wavread('
123451'
N=length(w);
%N是文件的长度,即点数即wavread中的第二个变量x=zeros(N,1);
%定义单列矩阵
x=w(:
1);
%提取单声道元素,用于后面的运算
y=zeros(N,1);
y=w(:
%找到关键点后,利用关键点对原矩阵运算
L=N;
%阈值消除噪音
N-1%遍历
ifabs(x(i))<
0.075;
%设定阈值为0.075
x(i)=0;
%=====定义标志量,用于插值运算
flag1=0;
flag2=0;
flag3=0;
%===========将各小段内的为零的置为非零
fori=8000:
N-8000
form=1:
1000
if((x(i)==0)&
((x(i-m)~=0)))
flag1=1;
end
((x(i+m)~=0)))
flag2=1;
end
flag3=flag1+flag2;
if(flag3==2)
x(i)=0.03;
%====寻找关键点
c=1;
num=zeros(100,1);
fori=1000:
N-1000
if(((x(i)==0)&
(x(i+1)~=0))|((x(i)~=0)&
(x(i+1)==0)))
num(c)=i;
c=c+1;
else
%=====转换关键点,精确定位
dot=zeros(100,1);
len=length(num);
dot
(1)=0;
%dot是存储精确定位点的数组
dot
(2)=num
(1);
b=3;
fori=3:
len
if((num(i)-num(i-1))>
3000)
dot(b)=num(i);
b=b+1;
dot(b)=length(x);
%=======对语音序列逆序操作
new=[];
%存放逆序后的矩阵
b-1
singlelen=dot(b-i+1)-dot(b-i);
temp=zeros(singlelen,1);
%temp临时矩阵,存放片段序列
forh=1:
singlelen
temp(h)=y(h+dot(b-i));
new=[new;
temp];
%片段拼接
temp=[];
%=========对拼接做平滑处理
fori=2:
new(dot(i))=(new(dot(i)-3)+new(dot(i)-2)+new(dot(i)-1)+new(dot(i)+1)+new(dot(i)+2)+new(dot(i)+3))*1/6;
第6章项目实施过程
时间
人员
事件
备注
第一周
项目小组
项目研讨及调研
第二周
系统设计与实施
第三周
程序编写与调试
第四周
项目小组、测试员
程序测试与完善
邀请测试员参与测试
第五周
项目报告撰写
第六周
项目回顾、总结与提高
第七周
答辩准备
第7章总结与展望
7.1项目总结
此次项目的顺利圆满完成,离不开项目小组各位成员的团结协作与刻苦攻关,也离不开老师们的帮助与指导。
在这七周的时间里,我们从一开始的查找资料,到项目的设计,再到实施、调试、改进,每一个阶段,都包含了我们每个人的辛劳与汗水。
在项目实施的过程中,我们每个人的能力都得到了极大的锻炼,不学到了许多与数字信号处理相关的知识,更是一种学习能力的提升,同时也是自学能力的培养。
通过这次的项目的,我们数字信号处理有了更深刻的理解,对在矩阵运算的层面上的数字信号处理有了一定的认识与掌握。
为将来更深入的学习数字信号处理打了的基础。
7.2项目展望
此次数字信号处理的对项目虽然已经完成,但是我们所完成的项目毕竟是很小的成果,将来还有很多东西要学习。
我们在将来的学习与工作中要把我们完成的这些效果的原理运用于实践。
例如我们的“自适应语音分割、倒序”效果,在自适应语音分割技术的基础上,我们可以做语音提取、语音识别、语音控制等。
学习的过程永远不是一蹴而就的,我们要牢牢把握现在,放眼未来,打好基础,才能在未来的道路上走的更远。
附录
源程序:
functionvarargout=MagicVoice(varargin)
%MAGICVOICEM-fileforMagicVoice.fig
%MAGICVOICE,byitself,createsanewMAGICVOICEorraisestheexisting
%singleton*.
%
%H=MAGICVOICEreturnsthehandletoanewMAGICVOICEorthehandleto
%theexistingsingleton*.
%MAGICVOICE('
CALLBACK'
hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinMAGICVOICE.Mwiththegiveninputarguments.
Property'
'
Value'
...)createsanewMAGICVOICEorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforeMagicVoice_OpeningFcngetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.AllinputsarepassedtoMagicVoice_OpeningFcnviavarargin.
%*SeeGUIOptionsonGUIDE'
sToolsmenu.Choose"
GUIallowsonlyone
%instancetorun(singleton)"
.
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%EdittheabovetexttomodifytheresponsetohelpMagicVoice
%LastModifiedbyGUIDEv2.511-Jan-201306:
56:
54
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=str
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 matlab 数字 音效 处理器 毕业设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)