查看: 10005|回复: 22|关注: 0

[已答复] 倒谱求基音周期

[复制链接]

新手

25 麦片

财富积分


050


4

主题

10

帖子

5

最佳答案
发表于 2008-7-22 11:13:33 | 显示全部楼层 |阅读模式
一个倒谱求基音周期的程序

倒谱求基音周期.rar

3.61 KB, 下载次数: 40801

新手

23 麦片

财富积分


050


71

主题

390

帖子

0

最佳答案
  • 关注者: 12
发表于 2009-12-14 14:52:47 | 显示全部楼层
语音的倒谱是将语音的短时谱取对数后再进行IDFT得到的,所以浊音信号
的周期性激励反映在倒谱上是同样周期的冲激。借此,可从倒谱波形中估计出基
周期。一般把倒谱波形中第二个冲激,认为即是对应激励源的基频。
下面给出一种倒谱法求基音周期的框图,如图2所示。先计算倒谱.然后在
预期的基音周期附近寻找峰值。如果倒谱的峰值超出了预先规定的门限,则输入
而峰的位置就是基音周期的良好估值.如果投有超出门限的峰值语音段定为浊音,则输入语音段定为清音,如果计算的是一个时变的倒谱,则可估计出激励源模型及基音周期随时间的变化.一般每隔10-20ms,计算倒谱一次,这是因为在一般语音中激励参数是缓慢变化的。数作为平滑后的值。为了更好地估计共振峰的频率,通常还要进行平滑处理。常见的平滑处理有
线性平滑和中值平滑。中值平滑是将相邻的几个数从大到小排列,(通常取5个或3个),取中间的线性平滑则分别对这几个数进行加权并相加,加权系数之和为1。

[filename,pathname]=uigetfile('D:\*.wav','open file:');
[y,fs,nbits]=wavread([pathname,filename]);%Reads input wav file
time=(1:length(y))/fs;
frameSize=floor(40*fs/1000);%帧长
startIndex=round(20000);%起始序号
endIndex=startIndex+frameSize-1;%结束序号
frame=y(startIndex:endIndex);%取出该帧
frameSize=length(frame);
frame2=frame.*hammin ming window
rwy=rceps(frame2);%求倒谱
ylen=length(rwy);
cepstrum=rwy(1:ylen/2);
%基音检测
LF=floor(fs/500);%设置基音搜索的范围
HF=floor(fs/70);
cn=cepstrum(LF:HF);
音检测
[mx_cep ind]=max(cn);
if mx_cep>0.08&ind>LF
a=fs/(LF+ind);
else
a=0;
end
pitch=a
%
figure(1);
plot(time,y);title(waveFile);axis tight
ylim=get(gca,'ylim');
line([time(startInd
line([time(endIndex),tim
figure(2);
subplot(2,1,1);
plot(frame);
title('Frame');
subplot(2,1,2);
plot(cepstrum);
title('cepstrum');

新手

5 麦片

财富积分


050


0

主题

25

帖子

0

最佳答案
发表于 2009-12-14 18:37:06 | 显示全部楼层
我来学习下

新手

5 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
发表于 2010-1-7 17:41:01 | 显示全部楼层
问题:Index exceeds matrix dimensions.

Error in ==> Untitled at 13
cn=cepstrum(LF:HF);

这个怎么解决呢?

新手

5 麦片

财富积分


050


0

主题

2

帖子

0

最佳答案
发表于 2010-4-2 18:13:31 | 显示全部楼层
LF=floor(fs/500);%设置基音搜索的范围
HF=floor(fs/70);
cn=cepstrum(LF:HF);
音检测
[mx_cep ind]=max(cn);
if mx_cep>0.08&ind>LF
a=fs/(LF+ind);
else
请问这个检测范围是如何确定的

新手

5 麦片

财富积分


050


0

主题

2

帖子

0

最佳答案
发表于 2010-5-19 17:04:43 | 显示全部楼层
来学习的

新手

5 麦片

财富积分


050


0

主题

6

帖子

0

最佳答案
发表于 2010-6-11 20:06:41 | 显示全部楼层
学习学习

新手

5 麦片

财富积分


050


0

主题

6

帖子

0

最佳答案
发表于 2010-7-19 21:30:20 | 显示全部楼层
拿走学习

新手

11 麦片

财富积分


050


3

主题

203

帖子

0

最佳答案
  • 关注者: 1
发表于 2010-11-21 16:14:53 | 显示全部楼层
学习一下呵呵

新手

5 麦片

财富积分


050


4

主题

20

帖子

0

最佳答案
发表于 2011-4-4 22:29:17 | 显示全部楼层
有错误呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表