上圖直接截圖至論文下面附上代碼。
#本模塊主要用來計算基音周期#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
新聞熱點
疑難解答