首页 > 编程 > Python > 正文

MELP算法的Python实现(三)

2019-11-06 08:53:03
字体:
来源:转载
供稿:网友

上图直接截图至论文下面附上代码。

#本模块主要用来计算基音周期#position显示当前位置,应该为pitch_fr/2def find_PRimary_pitch(sig_in,position,lower,upper,length):    #print len(sig_in)    even_flag = 1    maxcorr = 0.0    ipitch = lower    cbegin = -((length+upper)/2)    #计算前前160的平方和    c0_0 = np.dot(sig_in[position+cbegin:position+cbegin+length],sig_in[position+cbegin:position+cbegin+length])    #print c0_0    cT_T = np.dot(sig_in[position+cbegin+upper:position+cbegin+length+upper],sig_in[position+cbegin+upper:position+cbegin+length+upper])    #print cT_T    for i in range(upper,lower-1,-1):        corr = np.dot(sig_in[position+cbegin:position+cbegin+length],sig_in[position+cbegin+i:position+cbegin+length+i])       # print corr        if corr>0.01:            #做归一化            corr = corr*corr/(c0_0*cT_T)        if corr>maxcorr:            #和当前最大值进行比较            maxcorr=corr            ipitch = i        if even_flag:            even_flag=0            c0_0 += (sig_in[cbegin +position+ length] * sig_in[cbegin +position+ length])            c0_0 -= (sig_in[cbegin+position] * sig_in[cbegin+position])            cbegin=cbegin+1        else:            even_flag=1            cT_T += (sig_in[cbegin+position + i - 1] * sig_in[cbegin + position+i - 1])            cT_T -= (sig_in[cbegin +position+ i - 1 + length] * sig_in[cbegin +position+ i - 1 + length])    pcorr = math.sqrt(maxcorr)    return ipitch,pcorr


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表