这次说一个single-channel noise reduction的经典方法,OMLSA(optimally-modified log-spectral amplitude)。这是Cohen在2001年提出的(目前matlab已经开源,在cohen的个人主页上),比较具有代表性,里面牵扯模块也比较多,涉及了很多signal processing领域非常经典的未知量估计问题,后面还被拓展到multi-channel中,和GSC-structure结合,做post-filtering等等,如果想要深纠的话,对这个算法还是要基本了解一下的。我头一次看的时候还被绕进去一两天……

阅读全文 »

最近在一批实录的数据上尝试了一下GWPE算法,发现有一定的效果,随之研究了一下原始论文,并在这里对其原理做一下简要介绍。

GWPE算法在提出的时候,对应用的声学环境没有建立一些常见的约束条件,比如speaker数量(原始WPE算法要求single source),noise环境等等,因此在一些复杂条件下的鲁棒性会相对强一些。原论文中将一些随机向量用黑体大写字母表示,实际观测向量用小写字母,在这篇文章中,我统一用后者表示。

从论文题目可以看出,GWPE解决的是MIMO下,impluse response的shorten问题,也可以理解为multi-channel的dereverbration。主要贡献在于使用了一种新的相关性度量作为predict filter估计的代价函数,并导出了对应的估计方法。

阅读全文 »

这里提一个(i)STFT的细节。做短时傅里叶分析的时候,通常会选取窗函数,缓解频谱泄露。把频域的谱通过OLA(overlap add)转换到时域上时,我以前的做法是选取相同的窗函数。这么做会带来一个问题,如果直接把OLA的结果写入磁盘,特别容易出现clipping,所以我通常会在OLA之后对samples做一个renorm/rescale操作,避免数值超出wav的采样单元,但是这么一做,往往就丢失了原先音频的能量信息。理想情况下,在频域不做任何处理,变换到时域,应该存在条件,使得时域结果完美重构的。

后来逐渐的在一些文献中看到了一些资料。发现这个窗函数的选取,不是那么随意,要想达到最佳重构,正逆过程的窗需要满足一个约束条件,有些文献中也称为双正交。正过程的窗称为分析(analysis)窗,逆过程的窗(synthesis)称为合成窗。下面导出这个约束条件。

阅读全文 »

最近听说上交提了一个SRNN,相比普通RNN的效率提升100+倍,这让想起了去年的QRNN[1]和SRU[2],借这篇文章说一下关于RNN的长期依赖和计算效率的问题。

RNN的效率瓶颈在于时间轴上state的传递依赖,借鉴现在大部分DL框架api的设计,可以用下式表示:

$\mathcal{C}$可以用于表示LSTM,GRU这类cell逻辑。如果具体展开的话,和$x$相关的计算,在每个时间步上没有依赖,因此可以一次计算完毕(即form成矩阵的形式),涉及到$h$相关的计算时,因为$h_{t}$需要等待$h_{t-1}$,因此,整个序列上的$h$推断过程需要串行进行(step by step)。QRNN这类方案的出发点都是对$h$的计算进行局部的依赖解除(但是不能完全解除,否则就不是传统意义上的循环结构了,因此必然存在recurrent逻辑),从而加速inference过程。

阅读全文 »

维纳滤波信号领域最基本,最常见的滤波方法之一,陈老师的麦克风阵列处理一书中首先介绍的就是维纳滤波。本篇文章中我简单的介绍一下维纳滤波。

因为是从ASR看到前端来的,因此,对维纳滤波的理解做不到十分深入。在我看来,维纳滤波的典型特征是MMSE准则,由此就带来一个困惑,没有参考信号或者目标信号,如何做均方误差最小化。换句话说,很多时候,如果已经知道参考信号了,那何须继续滤波呢……

阅读全文 »

上个月做了一下single-channel下supervised语音分离的两种比较经典的方法,DPCL和uPIT,略有感触。在这篇文章中,我结合我的实践和理解,对它们做一些简单介绍。

首先我再次用自己的语言介绍一遍mask,因为前几天突然有非语音相关的人突然问mask相关的概念。单通道的增强或者分离任务中的mask实际全称应该是TF-mask(TF表示time and frequency),定义在T-F域上。TF-mask被定义的前提通常是信号仅仅为加性混叠(分离任务,混叠信号为说话人,增强任务,混叠信号为语音和加性噪声),因此广泛应用于分离,增强,而非解混响等任务中。不做区分,定义混叠信号如下:

阅读全文 »

接着上次GCC-PHAT算法。

GCC-PHAT只利用了两个麦克风的信息,如果麦数多于两路,就可以使用其他的一些方法进行DoA估计,比如Music,SRP算法等等,前者是一个叫做子空间方法的应用,后者这篇文章会进行介绍。

首先认识一下SRP(steered response power)的概念。SRP可以用FS(filter and sum)beamformer的输出功率来表示,如果FS表达为:

注:实际中通常在短时频域进行计算,因此,上面的表达式我加上了时间项$t​$。

阅读全文 »

嗯,现在正式结合着我自己的实践,开讲mask在Speech Enhancement中的应用。

开门见山,本文主要focus下面三点:

  • mask的定义
  • mask的估计
  • mask的使用
阅读全文 »

在看前端方面的论文的时候,一定会遇到beam pattern这个概念,本篇文章主要讲述beam pattern的意义,应用以及可视化方面的东西。

beamformer很重要的一个性质就是它的指向性,指向性可以反映波束形成器对每个方向的信号,哪些频率进行增强,哪些频率进行抑制。如果可以准确的估计出DoA的话,增强声源方向的信号,抑制其他方向,就成为了beamformer的主要任务。

阅读全文 »

TDOA(Time Difference of Arrival,到达时间差)是一个在语音前端信号处理中很常见的名词,和它比较相像,也同样重要的还有一个DOA(Direction of Arrival,到达方向)。在麦克风拓扑结构已知的情况下,两者可以相互转换。TDOA表示不同通道之间语音信号的延迟程度,是一个相对的概念,一般用$\tau$表示。最简单的beamforming方法delay and sum中的delay针对的就是它。DOA表示信号源相对麦克风的到达角度,一般用$\theta$表示,如果是线阵的话,范围在0到180度之间。如下图所示,假设麦克风1和麦克风2之间的距离为$\delta$,DOA为$\theta_d$,声速$c$,那么$\tau_{12}$可以有简单的数学计算得到:

阅读全文 »