上图直接截图至论文下面附上代码。
#本模块主要用来计算基音周期#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
新闻热点
疑难解答