经典的实现由两篇论文构成:
意义:
现有研究:
A2-1 理论
众所周知,中值滤波在抑制异常值,尤其是明显的椒盐噪声时具有非常好的效果。
因而逐行滤波,得到抑制打击乐后的幅值图像 $Y_H[k, m]$;逐列滤波,得到抑制乐音信号后的幅值图像 $Y_P[k, m]$。
对于幅值图像的每个位置,求出二者的掩码 $M_H[k, m], M_P[k, m]$。可以直接取较大值作为硬掩码(binary mask),也可以使用软掩码。
硬掩码定义如下(${\mathbb I}$ 为指示函数):
$$ M_H[k, m] = {\mathbb I} (Y_H[k, m] > Y_P[k, m]) \\
M_P[k, m] = {\mathbb I} (Y_P[k, m] < Y_H[k, m]) $$
软掩码定义如下($\epsilon$ 用于防止除以 0):
$$ M_H[k, m] = \frac {Y_H[k, m]}{Y_H[k, m] + Y_P[k, m] + \epsilon}\\ M_P[k, m] = \frac {Y_P[k, m]}{Y_H[k, m] + Y_P[k, m] + \epsilon} $$
之后只需要做 $H[k, m] = M_H[k, m]X[k, m], \ P[k, m] = M_P[k, m]X[k, m]$,就可以求得乐音信号和打击乐信号的频谱,作 IFFT 还原得到二者的信号。
A2-2 实践与效果
240116 HarmonicPercussiveSeparation.ipynb
提取出来的乐音和打击乐音分别如下。可以听到提取的不是很分明,只是各自稍微增强了一些,这被称为泄漏现象。