基于Mask的语音分离 | 您所在的位置:网站首页 › 座机如何插卡图解 › 基于Mask的语音分离 |
Mask这个单词有的地方翻译成掩蔽有的地方翻译成掩膜,我个人倾向于掩蔽这个翻译,本文就用掩蔽来作为Mask的翻译。 时域掩蔽我们都知道语音信号可以通过时域波形或者频域的各种频谱来表示,此外语谱图可以同时展示时域和频域的信息,因此被广泛应用,如下图所示。
如果我们想将音乐信号从混合信号中抽离(这个过程叫语音分离)在时域方面是不容易做到的。现在我们从频域角度入手去解决语音分离问题。首先我们提出两个假设: 我们假设信号能量稀疏的,即对于大多数时频区域它的能量为零,如下图所示,我们可以看到大多数区域的值,即频域能量为0。基于以上两点假设,我们就可以分离我们想要的信号和噪声信号。给可能属于一个信号源的区域分配掩码为1,其余的分配掩码0,如下图所示。 我们通过0和1的二值掩码然后乘以混合信号的语谱图就可以得到我们想要喜好的语谱图了,如下图所示。 但是,这里存在一个问题,我们无法从语谱图中还原语音信号。为了解决这一问题,我们首先还原所有的频率分量,即对二值掩码做个镜像后拼接。假设我们计算语谱图时使用的是512点SFTF,我们一般去前257点进行分析和处理,在这里我们将前257点的后255做镜像,然后拼接在一起得到512点频率分量,如下图所示。 然后根据这个还原语音信号。这里指的一提的是,在进行STFT后的相位信息要保存,用于还原语音信号。接下来介绍如何计算掩蔽值,掩蔽值计算方法有许多,但一般来说有两种常用的计算方法,分别为理想二值掩蔽(Ideal Binary Mask, IBM)和理想比值掩蔽(Ideal Ratio Mask, IRM)。IBM的计算公式如下: 其中LC为阈值,一般取0,SNR计算公式为: IRM为一个[0-1]的值,计算公式为: 其中β为可调节尺度因子,一般取0.5。 语音分离我们使用上面的方法来尝试对混合语音进行分离,我们首先找两段语音,将它们混合,如下图所示。 然后看下混合后的语谱图 接着计算掩蔽值 最后,将掩蔽值与语谱图对位相乘后,根据ISTFT恢复被分离的语音信号。 本文代码在公众号语音算法组菜单栏点击Code获取 参考文献: [1]. Northwestern University,EECS 352 |
CopyRight 2018-2019 实验室设备网 版权所有 |