fjiang9 / NKF-AEC

Acoustic Echo Cancellation with Nerual Kalman Filtering
239 stars 60 forks source link

在ICASSP 2021 AEC Challenge blind_test_set clean的测试结果与论文不一致 #15

Open SherryYu33 opened 12 months ago

SherryYu33 commented 12 months ago

您好

我使用您的checkpoint在ICASSP 2021 AEC Challenge blind_test_set clean上验证,没有取得相同的得分

ICASSP 2021 AEC Challenge blind_test_set clean: https://github.com/microsoft/AEC-Challenge/tree/20274d3a85f752d3fa41ed8e8915e73a5e39b7ff/datasets/blind_test_set/clean

AECMOS: https://github.com/microsoft/AEC-Challenge/blob/main/AECMOS/AECMOS_local/Run_1663915512_Stage_0.onnx

echo score: 3.32 degradation score: 3.10

fjiang9 commented 12 months ago

@SherryYu33 请问是否进行了信号对齐?

SherryYu33 commented 12 months ago

使用了如下的gcc_phat:

def gcc_phat(sig, refsig, fs=16000, max_tau=None, interp=1): if torch.is_tensor(sig): sig = sig.numpy() if torch.is_tensor(refsig): refsig = refsig.numpy()

n = sig.shape[0] + refsig.shape[0] SIG = np.fft.rfft(sig, n=n) REFSIG = np.fft.rfft(refsig, n=n) R = SIG np.conj(REFSIG) cc = np.fft.irfft(R / (np.abs(R)+1e-15), n=(interp n)) max_shift = int(interp n / 2) if max_tau: max_shift = np.minimum(int(interp fs max_tau), max_shift) cc = np.concatenate((cc[-max_shift:], cc[:max_shift + 1])) shift = np.argmax(np.abs(cc)) - max_shift tau = shift / float(interp fs) return tau

for X, e in self.dataloader_dt: X = X.numpy() e = e.numpy() min_len = np.min([len(X[0, :]), len(e[0, :])]) X = X[0, :min_len] e = e[0, :min_len] tau = gcc_phat(X, e) tau = max(0, int(tau*16000)) e = np.concatenate([np.zeros(tau, ), e])[:len(X)]

fjiang9 commented 12 months ago

@SherryYu33 X和e分别代表什么?

SherryYu33 commented 11 months ago

x指麦克风信号,e指参考信号

fjiang9 commented 10 months ago

@SherryYu33 上个月比较忙没来得及看,现在问题解决了吗?