武汉科技大学语音信号处理课程设计报告.docx
- 文档编号:30506137
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:13
- 大小:106.11KB
武汉科技大学语音信号处理课程设计报告.docx
《武汉科技大学语音信号处理课程设计报告.docx》由会员分享,可在线阅读,更多相关《武汉科技大学语音信号处理课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
武汉科技大学语音信号处理课程设计报告
语音信号处理
课程考核报告
题目1:
9.不同窗长的修正自相关
题目2:
7.基于倒谱的基音检测
学号:
姓名:
班级:
2014年6月
----------------------------------------------------------------------------------------
评语:
1不同窗长的修正自相关3
1.1要求3
1.2原理分析3
1.3源代码4
1.4仿真图形5
1.5仿真分析6
2基于倒谱的基音检测6
2.1要求6
2.2原理分析6
2.3源代码7
2.4仿真图形9
2.5仿真分析10
3总结10
1不同窗长的修正自相关
1.1要求
绘制不同矩形窗长度的修正短时自相关函数。
1.2原理分析
对于语音来说,采用短时分析方法,语音短时自相关函数为
(1)
但是,在计算短时自相关时,窗选语音段为有限长度N,而求和上限为,因此当增加时可用于计算的数据就越来越少了,从而导致增加时自相关函数的幅度减小。
为了解决这个问题,提出了语音修正的短时自相关。
修正的短时自相关函数,其定义如下:
(2)
若令
,代入上式中得到
(3)
定义
则有
(4)
(5)
式中,K为k的最大值,即
。
由式(5)可知要使为非零值,必须使,考虑到,可得,故式(4)可以写成:
(6)
1.3源代码
fid=fopen('test.txt','rt')
b=fscanf(fid,'%f');
b1=b(1:
640);
N=320;%设定矩形窗长为320
A=[];
fork=1:
320;
sum=0;
form=1:
N;
sum=sum+b1(m)*b1(m+k-1);
end
A(k)=sum;
end
fork=1:
320
A1(k)=A(k)/A
(1);%归一化A(k)
end
figure
(1)
subplot(3,1,1)
plot(A1);
xlabel('延时k')
ylabel('R(k)')
legend('N=320')
axis([0,320,-1,1]);
b2=b(1:
320);
N=160;%设定矩形窗长为160
B=[];
fork=1:
160;
sum=0;
form=1:
N;
sum=sum+b2(m)*b2(m+k-1);
end
B(k)=sum;
end
fork=1:
160
B1(k)=B(k)/B
(1);%归一化B(k)
end
figure
(1)
subplot(3,1,2)
plot(B1);
xlabel('延时k')
ylabel('R(k)')
legend('N=160')
axis([0,320,-1,1]);
b3=b(1:
140);
N=70;%设定矩形窗长为70
C=[];
fork=1:
70;
sum=0;
form=1:
N;
sum=sum+b3(m)*b3(m+k-1);
end
C(k)=sum;
end
fork=1:
70
C1(k)=C(k)/C
(1);%归一化C(k)
end
figure
(1)
subplot(3,1,3)
plot(C1);
xlabel('延时k')
ylabel('R(k)')
legend('N=70')
axis([0,320,-1,1]);
1.4仿真图形
1.5仿真分析
假如使用短时自相关函数:
如果长基音周期用窄的矩形窗,将得不到预期的基音周期;但是如果是短的基音周期用长的矩形窗,自相关函数将对多个基音周期作平均计算,从而模糊语音的短时特性,这种结果是不希望出现的。
而采用短时的修正自相关函数由仿真图形可以看出,即使采用较窄的矩形窗不会出现上述问题,同时避免了短时自相关函数随k值增加而衰减不足的问题。
2基于倒谱的基音检测
2.1要求
基于倒谱图判断浊音的基音周期。
2.2原理分析
语音的倒谱是将语音的短时谱取对数后再进行IDFT得到的,所以浊音信号
的周期性激励反映在倒谱上是同样周期的冲激。
借此,可从倒谱波形中估计出基
音周期。
一般把倒谱波形中第二个冲激,认为即是对应激励源的基频。
下面给出一种倒谱法求基音周期的框图,如图1所示。
先计算倒谱.然后在
预期的基音周期附近寻找峰值。
如果倒谱的峰值超出了预先规定的门限,则输入
语音段定为浊音,而峰的位置就是基音周期的良好估值.如果投有超出门限的峰
值,则输入语音段定为清音,如果计算的是一个时变的倒谱,则可估计出激励源
模型及基音周期随时间的变化.一般每隔10-20ms,计算倒谱一次,这是因为在
一般语音中激励参数是缓慢变化的。
图1一种倒谱法求基音周期的实现框图
为了更好地估计共振峰的频率,通常还要进行平滑处理。
常见的平滑处理有线性平滑和中值平滑。
中值平滑是将相邻的几个数从大到小排列,(通常取5个或3个),取中间的数作为平滑后的值。
线性平滑则分别对这几个数进行加权并相加,加权系数之和为1。
2.3源代码
waveFile='qinghua.wav';
[y,fs,nbits]=wavread(waveFile);
time=(1:
length(y))/fs;
frameSize=floor(40*fs/1000);%帧长
startIndex=round(15000);%起始序号(浊音取15000)
endIndex=startIndex+frameSize-1;%结束序号
frame=y(startIndex:
endIndex);%取出该帧
frameSize=length(frame);
frame2=frame.*hamming(length(frame));%加汉明窗
rwy=rceps(frame2);%求倒谱
ylen=length(rwy);
cepstrum=rwy(1:
ylen/2);%基音检测
LF=floor(fs/500);%设置基音搜索的范围
HF=floor(fs/70);
cn=cepstrum(LF:
HF);
[mx_cepind]=max(cn);%设置门限找到峰值位置
ifmx_cep>0.08&ind>LF
a=fs/(LF+ind);%在round为15000情况下a=110.25
else
a=0;
end
figure
(1);
plot(time,y);title(waveFile);axistight
ylim=get(gca,'ylim');
line([time(startIndex),time(startIndex)],ylim,'color','r');
line([time(endIndex),time(endIndex)],ylim,'color','r');
title('语音波形');
figure
(2);
subplot(2,1,1);
plot(frame);
title('取出帧的波形');
subplot(2,1,2);
plot(cepstrum);
title('倒谱图');
[x,sr]=wavread('qinghua.wav');
meen=mean(x);
x=x-meen;
updRate=floor(20*sr/1000);%每20ms更新
fRate=floor(40*sr/1000);%40ms一帧
n_samples=length(x);
nFrames=floor(n_samples/updRate)-1;%Ö¡Êý
k=1;
pitch=zeros(1,nFrames);
f0=zeros(1,nFrames);
LF=floor(sr/500);
HF=floor(sr/70);
m=1;
avgF0=0;
fort=1:
nFrames
yin=x(k:
k+fRate-1);
cn1=rceps(yin);
cn=cn1(LF:
HF);
[mx_cepind]=max(cn);
ifmx_cep>0.08&ind>LF
a=sr/(LF+ind);
else
a=0;
end
f0(t)=a;
ift>2&nFrames>3%中值滤波对基音轨迹图进行平滑
z=f0(t-2:
t);
md=median(z);
pitch(t-2)=md;
ifmd>0
avgF0=avgF0+md;
m=m+1;
end
else
ifnFrames<=3
pitch(t)=a;
avgF0=avgF0+a;
m=m+1;
end
end
k=k+updRate;
end
figure(3)
subplot(211);
plot((1:
length(x))/sr,x);
ylabel('振幅');
xlabel('时间');
subplot(212);
xt=1:
nFrames;
xt=20*xt;
plot(xt,pitch)
axis([xt
(1)xt(nFrames)0max(pitch)+50]);
ylabel('基因频率/Hz');
xlabel('时间');
2.4仿真图形
2.5仿真分析
仿真过程中,首先取出浊音部分的帧,然后进行倒谱分析,然后逐帧取基音,画出基音轨迹图。
为了更好地估计共振峰的频率,仿真中进行了平滑处理。
对于语音信号做倒谱图分析,能够分析出较为理想的语音信号基音周期。
3总结
在一个学期的“语音信号处理”学习中,我先后学习了语音信号的基本特性、时域分析、傅里叶分析、倒谱分析、线性预测分析、语音检测分析等一系列知识。
在过去的“信号与系统”和“数字信号处理”两门课程中,我们所学习的都是信号的理论分析知识,几乎没有将实际信号进行分析与处理。
而在语音信号处理的课堂上,我接触了大量实际信号分析的技巧与特性,在此过程中不仅加深了我对信号与系统和数字信号处理的理解,而且让我学习到语音信号的一系列处理技巧。
通过这一次的语音信号处理考核,更是将我所学的相关知识投入到实战之中,在这一个过程中我也学到了很多东西,在课堂上有很多没有注意或者没有理
解的知识点,通过实践得到了理解。
此外,在课堂上虽然进行了大量语音信号处理理论知识的学习,但是并未进行过任何基于MATLAB的仿真讲解,在完成考核程序的过程中,我上网查阅了大量的MATLAB语音仿真的相关资料,参考了很多仿真源程序,最终结合自己所学的知识完成了指定程序的设计。
总的来说,整个“语音信号处理”课程学习过后,我在语音信号处理方面学到了不少知识,在这次考核过程中将所学的内容投入了应用,从中收获颇多。
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武汉 科技大学 语音 信号 处理 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)