微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

试图了解用于开始检测的频率估计代码

如何解决试图了解用于开始检测的频率估计代码

我试图了解下面的代码到底能做什么,但这并不容易。
它的最终目标是通过获取np.diff(ifr)来检测信号中的起始点。
但是,我无法确切了解最后一行的内容(#frequency估算)。

import numpy as np

audio,sr = librosa.load(audio_path,sr=None)

M = 1024
hopsize = int(M/16)
hopfac = int(M/hopsize)
nfft = M
overlap = nfft*(1-1/hopfac)
win = np.ones(nfft)

_,_,X = signal.stft(audio,fs=sr,window=win,nperseg=M,noverlap = overlap)

# FFT bins
k = np.arange(nfft/2 + 1)

ifr = np.zeros(np.shape(X))
T = np.zeros(np.shape(X)[1])

for i in range(0,np.shape(X)[1]):
# one instance of the spectrum
Xk = X[:,i]
Xkplus1 = np.append(Xk[1:],0.000001)
Xkminus1 = np.append(0.00001,Xk[0:-1])

# frequency estimation (hop one trick)
ifr[:,i] = np.multiply(sr,np.subtract(np.divide(k,nfft),np.imag(np.multiply(1j/nfft,np.divide(np.subtract(Xkplus1,Xkminus1),np.add(np.subtract(np.subtract(np.multiply(Xk,2),Xkplus1),2*0.000001))))))

特别是(Xkplus1-Xkminus1)/(2Xk-Xkplus1-Xkminus1)对我来说没有意义。
有人可以向我解释吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。