课程设计实验报告new.docx
- 文档编号:28210092
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:18
- 大小:121.60KB
课程设计实验报告new.docx
《课程设计实验报告new.docx》由会员分享,可在线阅读,更多相关《课程设计实验报告new.docx(18页珍藏版)》请在冰豆网上搜索。
课程设计实验报告new
课程设计实验报告new
数字信号处理
课程设计报告
课设题目:
语音信号变声处理系统
院系:
计算机科学系
专业:
通信工程
小组成员:
郑昌栋杭嘉琪杜天送
刘洋周俊颜全稳
指导教师:
方荟
闽江学院
2013年
12月
26日
摘要
我们每个人的声音不同,源于我们的每个人的音色和音调不同,我们所说的男中音、男高音,就是音调的不同,而即便音调一致,我们依然能区分出两个不同人的声音,或不同乐器的声音,这就是音色的不同。
变声器,正是借助对声音音色和音调的双重复合改变,实现输出声音的改变。
在进行性别变声时,主要考虑基频和共振峰频率的变化。
当基频伸展,共振峰频率也同时伸展时,可由男声变成女声,女声变成童声;反之,基频收缩,共振峰频率也同时收缩时,则由童声变女声,女声变男声。
为了获得自然度、真实感较好的变声效果,基频和共振峰频率通常必须各自独立地伸缩变化。
本次课程设计就是运用我们所学到的理论知识,用MATLAB软件来实现对语音信号的变声处理,理论联系实际,从而更好地掌握以及运用所学习的知识。
第一章课程设计任务
电视台经常针对某些事件的知情者进行采访,为了保护知情者,经常改变说话人的声音,利用所学的知识,将其实现。
1)自己录制一段正常的声音文件,或者通过菜单选择的方式选择一段正常声音文件;
2)能够播放该文件;
3)对语音信号进行处理,要求处理后的语音信号基本不影响正常收听与理解;
5)对处理参数能够通过matlab界面进行调节,以对比不同处理效果;
6)能够对处理后的声音文件与原始声音文件的频谱进行观察、分析。
7)编制GUI用户界面。
任务分配:
代码编写及运行调试:
郑昌栋,杭嘉琪
实验报告整理与编写:
杜天送
相关资料查询及整理:
刘洋
实验方案设计与编写:
周俊
Gui界面设计及制作:
颜全稳
第二章变声器原理及设计方案
2.1基本原理
语音科学家将人类发声过程视作一个由声门源输送的气流经以声道、口、鼻腔组成的滤波器调制而成的。
人类语音可分为有声语音和无声语音,前者是由声带振动激励的脉冲信号经声腔调制变成不同的音,它是人类语言中元音的基础,声带振动的频率称为基频。
无声语音则是声带保持开启状态,禁止振动引发的。
一般来说,由声门振动决定的基频跟说话人的性别特征有关,如下表,而无声语音则没有体现这个特征。
说话人的个性化音色和语音的另外一个声学参数——共振峰频率的分布有关。
儿童由于声道短,其共振峰频率高于成年人,成年女性的声道一般短于成年男性,所以女性的共振峰频率一般高于男性。
表2.1男声、女声和童声基频、共振峰频率关系表
人群
基频分布Hz
共振峰频率分布
男声
[50,180]
偏低
女声
[160,380]
中
童声
[400,1000]
偏高
由上可知,在进行性别变声时,主要考虑基频和共振峰频率的变化。
当基频伸展,共振峰频率也同时伸展时,可由男声变成女声,女声变成童声;反之,基频收缩,共振峰频率也同时收缩时,则由童声变女声,女声变男声。
为了获得自然度、真实感较好的变声效果,基频和共振峰频率通常必须各自独立地伸缩变化。
共振峰频率的改变是基于重采样实现的,从重采样原理知道,这也同时引发了基频的变化,为保证基频变化和共振峰频率变化的独立、互不相关,在基频移动时必须考虑抵消重采样带来的偏移,理论上只要基频检测足够精确,确实可以保证基频改变和共振峰频率改变间的互不相关。
·2.2设计方案
1:
选取需要变声的原始语音信号;
2:
得到原始语音信号的基音周期长度;
3:
根据基音周期长度定位整个原始语音信号的每一个基音周期的位置;
4:
在原始语音信号中的基音周期之间删除/插入基音周期,得到缩短/伸长的语音信号;
5:
将缩短/伸长的语音信号线性伸长/压缩至与原始语音信号一致的长度,得到变声后的语音信号。
第三章变声器的实现及分析
3.1信号变声器的实现
图2.2语音处理实现框图
实现步骤:
1)语音信号的录制与读入。
2)语音信号的频谱分析。
3)实现慢录快放和快录慢放功能
4)设计数字滤波器和画出其频率响应。
5)用滤波器对信号进行滤波。
6)比较滤波前后语音信号的波形及频谱。
7)通过搬移、改变基波频率实现变声。
8)语音信号恢复。
9)在MATLAB下绘制出各个部分的输出波形,前后对比。
3.2设计过程
3.2.1分帧处理
对语音信号加Hamming窗处理,方法是用窗序列沿着语音样点值序列逐帧从左向右移动。
Hamming窗的窗函数如下:
=(4.1)
确定了窗函数以后,对语音信号的分帧处理,实际上就是对各帧进行某帧进行某种变换或运算。
3.2.2计算预测系数
3.2.3计算激励信号
对每帧语音信号s(n),和预测模型系数{
},用filter函数计算激励信号e(n)。
此时应该注意在系数变化的情况下连续滤波,需要维持滤波器的状态不变,要利用filter函数的
和
参数。
这里要利用
_pre,利用
_pre作为初始状态得到最终状态,本次循环得到的最终状态作为下次循环的初始状态,并把每次循环得到的激励保存下来。
3.2.4重建语音
用计算得到的激励信号e(n)和预测模型系数{
},用fliter函数计算重建语音
。
同样要注意维持滤波器的状态不变。
这里我们由激励得到语音,并且要利用
_rec,利用
_rec作为初始状态的到最终状态,本次循环得到的最终状态作为下次循环的初始状态,并且把每次循环得到的重建语音保存下来。
3.2.5基音周期
基音周期是表征语音信号本质特征的参数,属于语音分析的范畴,只有准确分析并且提取出语音信号的特征参数,才能够利用这些参数进行语音合成处理。
如果x(n)是一个周期为P的信号,则其自相关函数也是周期为P的信号,且在信号周期的整数倍处,自相关函数取最大值。
语音的浊音信号具有准周期性,其自相关函数在基音周期的整数倍处取最大值。
计算两相邻最大峰值间的距离,就可以估计出基因周期。
MTWE601-003006-FLSC0
3.2.6合成激励的能量
根据线性预测分析的原理可知,求解p个线性预测系数的依据,是预测误差滤波器的输出方均值或输出功率最小。
可称这一最小方均误差为正向预测误差功率
,即
=E{e(n)[s(n)-
s(n-1)]}
=E[e(n)s(n)]-E[e(n)s(n-i)](4.2)
由于上式第二项为0,又:
e(n)=s(n)-=s(n)-
s(n-i)(4.3)
将(4.3)代入(4.2)得:
=E[e(n)s(n)]=E[s(n)s(n)]-
E[s(n)s(n-i)]=R(0)-
R(i)(4.4)
根据式(4.4)可以求得增益常数G。
=R(0)-
R(i)(4.5)
从而可以得到:
=
(4.6)
由前面计算预测系数的代码
可以得到
(代码里用E表示),和计算得到的基音周期联立可以得到增益G。
程序代码如下:
3.2.7变声处理
变声的过程的实现思路与前面合成语音的思路基本相同,只是在两个地方有所不同:
系统参数b,a不同,这里的b和a是要用经改变后的极点算出来的;生成激励信号时,用floor(PT/2)作为这里的PT。
在变声的时候我们采用女生,小孩时变调不变速的滤波器:
老人采用变速不变调滤波器:
3.3仿真结果及分析
3.3.1波形及频谱
(1)原始信号波形及频谱:
采集到的男子声音信号大都分布在较低的频段上,即男子话音的基频较低
(2)男生信号合成女生信号后波形及频谱:
变声前后,音频信号的时域波形被压缩,总体形状无太大变化。
改变信号的基频可以实现语音的变调。
零频和35000附近的信号被削弱,而对应于【10000,25000】频点部分的信号得到加强
(3)男生信号合成小孩信号后波形及频谱:
变声前后,音频信号的时域波形被压缩,总体形状无太大变化。
改变信号的基频可以实现语音的变调。
零频附近的信号被削弱,而对应于【10000,24000】频点部分的信号得到加强
(4)男生信号合成老人信号后的波形及频谱:
男声变老人声前后,音频的时域波形被展宽,总体形状变化不大。
男声变老人声前后【0,15000】频点对应的信号和【25000,30000】频点对应的信号则被削弱
3.3.2调试分析
1、在对处理后的语音文件获取预测系数的时候一直为NaN
将对语音文件的采样率改为22KHz后,能正常获取数据。
2、用wavread读取48M的wav音频文件时一直读取不到。
改为读取只有几十K的文件后就能正常运行,猜测可能是文件太大。
第四章课设总结
4.1小组总结
此次课设题目为数字变声器设计,要求我们利用所学的信号处理、MATLAB知识完成任务。
综合了过去三年所学的重要专业知识,可谓是对过去所学知识的一次全面考察。
变声器的原理是通过改变输入声音频率,进而改变声音的音色、音调,使输出声音在感官上与原声音不同。
变声器是借助对声音音色和音调的双重复合改变,实现输出声音的改变。
通过自己发声,共振峰频率的改变是基于重采样实现的。
接到课题后,我便积极准备,到图书馆查阅相关书籍,上网搜索有关内容,利用MATLAB实现仿真,并及时向指导老师回报进度,听取老师的意见和建议。
最终,顺利完成了此次课设任务。
采集到的男子声音信号大都分布在较低的频段上,而女子的声音信号大都分布在较高的频段上。
即男子话音的基频较低,女子的话音基频较高。
信号经过滤波器处理后,保留了有效的频率成分,一定程度上去除了干扰信号。
对于男子的声音影响较小,原因为男子的话音有用信号大都分布在较低的频段上,通过低通滤波器后,噪声等无用信号被滤除。
改变信号的基频可以实现语音的变调。
变声前后,音频的时域波形基本变化不大,而信号的频域波形发生较大变动。
男声变女声后信号的频谱被搬到较高的频带上,男声变童音后,信号的频谱被搬移到更高的地方。
女声变男声则反过来。
通过改变输出频率,可以实现声音的提速或减速播放。
将频率乘以大于一的数后,可以实现减速播放效果。
将频率乘以(0,1)内的数后,可以实现减速播放效果。
男声变老人的声音可以通过变速实现,变速不变调。
改变输出速度而不用改变声音频率。
通过这次课设,我对理论知识的掌握更加牢固,而且把理论与实践联系在一起,提高了自己的实践能力。
而且我认识到了同学之间的相互合作的重要性,还提高了自己如何在众多的资料中找到对自己有用的信息。
要想把所学的内容融会贯通,只学好课本知识是不够的,要把所学习的知识加以利用,这次课设就给了我们很好的机会,让我们不仅巩固了课本知识,还从理论上升到了实际。
从课题的中心来看,课题是希望将数字信号处理技术应用于某一实际领域,这里就是指对语音的处理。
作为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需将这些离散的量提取出来,就可以对其进行处理了。
在这里,用到了处理数字信号的强有力工具MATLAB,通过MATLAB里几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。
通过这次的课程设计,熟悉并掌握了MATLAB中有关语音信号的读取,频谱分析,频谱的搬移和基频、语速的改变来实现变声,分析其频谱,并与原始信号频谱进行比较。
4.2个人总结
郑昌栋:
通过本次课程设计,我在代码编写过程中认识到认真,严谨的重要性;以及调试过程中需要极大的耐心,最重要的是团队协作,也学习到了matlab的基本使用和编程的一些技巧。
颜全稳:
通过对于gui界面的设计制作,更加熟悉掌握matlab软件,同时温习数字信号处理这么课程。
杜天送:
在本次课程设计中,我负责课程设计报告的整理与编写。
通过整理报告,我对于matlab的基本编程方式以及基本运用有了新的认识,我的分析能力、独立思考能力都得到了一定程度的提高。
杭嘉琪:
通过这次课程设计,我知道到了matlab的基本编程方式以及方法的基本运用,因为我是负责代码一块的,所以深刻体会到了一个好的方案是编好程序的前提。
在编写的过程中认识到了很多以前都不知道的方法,同时对matlab有了深刻的了解。
刘洋:
在本次课程设计当中,主要负责找资料。
遇到问题在网上或者相关书籍寻找解决方法。
通过这次课程设计。
提高了自己的耐心以及细心。
周俊:
通过这次课程设计,我明白了良好的设计方案更能有助于课程设计的进展,而且方案并不是一成不变的,从问题中不断改进更加有利于我们理解问题;同时在本次中我也更近一步理解了matlab的运用。
参考文献
[1]高西全、丁玉美编著.数字信号处理.西安:
西安电子科技大学出版社,2008.
[2]刘树棠译.数字信号处理——使用MATLAB.西安:
西安交通大学出版社,2002.
[3]孙卓、岳振军,一种汉语语音变换技术,电声技术,2007.
[4]罗军辉等编著.MATLAB7.0在数字信号处理中的应用.北京:
机械工业出版社,2005.
[5]陈怀琛等编著.MATLAB及在电子信息课中的应用.北京:
电子工业出版社,2002.
[6]胡广书编著.数字信号处理――理论、算法与实现.北京:
清华大学出版社,2002.
[7]梁虹等编.信号与线性系统分析――基于MATLAB的方法与实现.北京:
高等教育出版社,2006.
[8]刘卫国主编.MATLAB程序设计与应用(第二版).北京:
高等教育出版社,2006.
附录:
globalmusic;
music=0;
[s,fs,nbits]=wavread('录音.wav');
s=s/max(s);
L=length(s);
S=fft(s,L);
axes(handles.axes1);
plot(s);title('原语音信号波形');
axes(handles.axes2);
plot(abs(S));title('原语音信号频谱');
music=audioplayer(s,fs);
play(music);
%---Executesonbuttonpressinpushbutton2.
functionpushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton2(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
globalmusic;
music=0;
[s,fs,nbits]=wavread('录音.wav');
FL=80;
WL=240;
P=10;
s=s/max(s);
L=length(s);
FN=floor(L/FL)-2;
Ec=zeros(L,1);
ZiPre=zeros(P,1);
Sre=zeros(L,1);
ZiPre=zeros(P,1);
EcS=zeros(L,1);
Ssn=zeros(L,1);
LastSn=0;
ZiSn=zeros(P,1);
EcSnT=zeros(L,1);
SsnT=zeros(L,1);
LastSnT=0;
ZiSn_t=zeros(P,1);
v=.5;
EcSnV=zeros(v\L,1);
SsnV=zeros(v\L,1);
LastSnV=0;
ZiSnV=zeros(P,1);
hw=hamming(WL);
forn=3:
FN
SW=s(n*FL-WL+1:
n*FL).*hw;
[AE]=lpc(SW,P);
SF=s((n-1)*FL+1:
n*FL);
[Ec1,ZiPre]=filter(A,1,SF,ZiPre);
Ec((n-1)*FL+1:
n*FL)=Ec1;
[Sre1,ZiPre]=filter(1,A,Ec1,ZiPre);
Sre((n-1)*FL+1:
n*FL)=Sre1;
s_Pitch=Ec(n*FL-222:
n*FL);
PT=findpitch(s_Pitch);
G=sqrt(E*PT);
TempSn=[1:
n*FL-LastSn]';
EcSn1=zeros(length(TempSn),1);
EcSn1(mod(TempSn,PT)==0)=G;
EcSn1=EcSn1((n-1)*FL-LastSn+1:
n*FL-LastSn);
[Ssn1,ZiSn]=filter(1,A,EcSn1,ZiSn);
EcSn((n-1)*FL+1:
n*FL)=EcSn1;
Ssn((n-1)*FL+1:
n*FL)=Ssn1;
LastSn=LastSn+PT*floor((n*FL-LastSn)/PT);
PT1=floor(PT/2);
poles=roots(A);
deltaOMG=150*2*pi/fs;
forp=1:
10
ifimag(poles(p))>0poles(p)=poles(p)*exp(j*deltaOMG);
elseifimag(poles(p))<0poles(p)=poles(p)*exp(-j*deltaOMG);
end
end
A1=poly(poles);
TempSnT=[1:
n*FL-LastSnT]';
EcSn1T=zeros(length(TempSnT),1);
EcSn1T(mod(TempSnT,PT1)==0)=G;
EcSn1T=EcSn1T((n-1)*FL-LastSnT+1:
n*FL-LastSnT);
[Ssn1T,ZiSn_t]=filter(1,A1,EcSn1T,ZiSn_t);
EcSnT((n-1)*FL+1:
n*FL)=EcSn1T;
SsnT((n-1)*FL+1:
n*FL)=Ssn1T;
LastSnT=LastSnT+PT1*floor((n*FL-LastSnT)/PT1);
end
S=fft(SsnT,L);
axes(handles.axes3);
plot(SsnT),title('合成女生信号波形'),XLim([0,length(EcSnT)]);
axes(handles.axes4);
plot(abs(S)),title('合成女生信号频谱'),XLim([0,length(SsnT)]);
music=audioplayer(SsnT,fs);
play(music);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 实验 报告 new