matlab提取音高的方法,语音中提取基音频率matlab程序(Matlab program for extracting pitch frequency in speech).doc...

语音中提取基音频率matlab程序(Matlab program for extracting pitch frequency in speech)

语音中提取基音频率matlab程序(Matlab program for extracting pitch frequency in speech)

% corr.m

基音估计的相关性

%旗= 1从左到右,否则,从右到左

% R =更正(S,L,标志)

%

%

%旗= = 1时

%

%

%

% | --我-- |

%s:.....................................................

%。

%。

%。

%。

%。

%。

%s:.....................................................

% | _______ D ________ | __________________ L-D _____________ |

%返回值是一个序列

%注意到在做自相关时,错位值从20开始

%考虑到在用这个自相关序列时可能是用于求周期,这个20时有利的

%语音的基音周期一般在20到140,因此小于20没有周期

而错开以上可以避免出现不是所求的峰值避免出错% 20

%求到结果后放到RR序列中时,注意到下标为我时实际上已经是错开

%我+ 20-1,因此球场。我在调用这个时需要有一句P = 19 + ind_pitch;

函数r(S,D,科尔旗)

ε= 1.0e-10;为避免除以零

l =长度(s);

NM = 120;

如果国旗= = 1%从左到右

我= 20分钟(L·d,NM)

温度=0;

temp1 = 0;

temp2 = 0;

对于j = 1:d

温度= s(j)s(j + i);

temp1 = temp1 + S(J +我)*(J +我);

temp2 = temp2 + S(J)*(J);

结束

PW1 = SQRT(temp1)+ε;

PW2 = SQRT(temp2)+ε;

R(i-19)=温度/(1×PW2);

结束

其他为从右到左

我= 20分钟(L·d,NM)

温度=0;

temp1 = 0;

temp2 = 0;

J = L + 1:L

温度=温度+ S(J-1)*(J);

temp1 = temp1 + S(J-1)*(J-1);

temp2 = temp2 + S(J)*(J);

结束

PW1 = SQRT(temp1)+ε;

PW2 = SQRT(temp2)+ε;

R(i-19)=温度/(1×PW2);

结束

结束

% Maxx。M

为找到所有功能大于局部极大值

t倍是全局最大值

% max_index = Maxx(S,T)

%输入一个序列和一个标量T

%的的最大值max_value首先求出序列

%然后如果序列中的一个点比相邻两个点都大

%而且还大于max_value的T倍

就把这个点的位置存放在序列MI中%

在序列MI最后再补上序列的最后一个点%

%考虑到第一个点和最后一个点有可能满足要求

%但这两个点都不能跟旁边的比较

%所以还是把这两个点保留了,放在MI序列的第一个和最后一个

实际上就是以最大值点的T倍为界找出这个界以上的极值点的位置%

功能MI = Maxx(S,T)

max_value = max(S);

老= 0;

l =长度(s);

j=1;

MI = [ 1 ];

对于i = 1:L-1

如果s(i)s(i + 1)

状态= 1;

结束

如果(我)T * max_value

j = j + 1;

MI(j)= i;

结束

结束

新老=;

结束

长度(MI);

MI(LL + 1)=长度(s);

%沥青。

%这是一个函数来找到足够长的讲话的基音周期。

%区间。为了找到正确的基音周期,有利于

选择短周期。即,如果P1P2 * Thr,我们选择P1

%而不是P2。

%

%使用情况[ p,MX=间距(s)

%输入一个序列,首先求出其自相关序列RR

%要求出第一个周期的极大值点

%首先求出序列的最大值格言所在的位置,如果这个位置在thr_largepitch以内

就认为这就是要求的点如果这个位置大于thr_largepitch,就考虑小于%。

% thr_largepitch的范围内有没有点满足以下条件:大于准则* thr_maxx的极值点,

%大于max(thr_corr,thr_pitch *准则)。

%如果有满足条件的,第一个点就是所求点

%至于为什么可以这样做,还没搞懂

%总的说来,这个函数返回一个序列的第一个周期

函数[ p,MX ] =音高(s)

thr_pitch = 0.75;

thr_maxx = 0.7;

thr_corr = 0.33;

thr_largepitch = 60;

ε= 1.0e-10;%用于避免被零除

l =长度(s);

D = 100;

RR =更正(S,D,0);%最后一个参数是0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值