我有一个源音频信号和其他6个部分的信号,短得多的原始,记录了一些麦克风。我需要找出这些子信号是从主音频的什么地方录下来的
我尝试将参考信号(长信号)与每个子信号关联起来,并找到最大互相关。六分之五有效
curFol = os.getcwd()
audioNames = [name for name in os.listdir(curFol) if name.endswith('wav')]
audioSignals, audioFs = [], []
for name in audioNames:
sig, fs = sf.read(name)
audioSignals.append(sig)
audioFs.append(fs)
sigSizes = [s.shape[0] for s in audioSignals]
refSignal = audioSignals[np.argmax(sigSizes)]
fs = np.unique(audioFs)
muRef = np.mean(refSignal)
sigmaRef = np.sqrt(np.mean(refSignal ** 2) - muRef ** 2)
muSigs = [np.mean(sig) for sig in audioSignals[1 : ]]
sigmaSigs = [np.sqrt(np.mean(sig ** 2) - muRef ** 2) for sig in audioSignals[1 : ]]
timeCorr = []
refSig = (refSignal - muRef) / sigmaRef
for (i, sig) in enumerate(audioSignals[1 : ]):
currSig = (sig - muSigs[i]) / sigmaSigs[i]
sigCorr = signal.correlate(refSig, currSig, mode = 'full', method = 'fft')
timeCorr.append(np.argmax(sigCorr) - sig.shape[0] + 1)
其中一个子信号在错误的位置具有最大的相关性。我需要更好更可靠的方法来解决这个问题
目前没有回答
相关问题 更多 >
编程相关推荐