最近在看一些语音分离的文章,时间旧了,需要做一些总结。这篇文章先说一种传统而有效的方法,NMF(非负矩阵分解)。

将一个矩阵$\mathbf{V}$分解成两个非负矩阵的乘积形式,这种方法就叫非负矩阵分解,数学表达为:

若$\mathbf{V} \in \mathbf{R}^{F \times T}$,那么$\mathbf{W} \in \mathbf{R}^{F \times D}, \mathbf{H} \in \mathbf{R}^{D\times T}$,其中$D$为分解过程的一个超参数,在一些文献中,$\mathbf{W}$被称为dictionary或者basis functions,$\mathbf{H}$被称为atoms或者activations,这种称呼的原因会在后文中解释。

下面将从三个方面认识这个概念:

  1. 如何得到这种表示
  2. 这种表示的意义何在
  3. 在分离任务中如何应用
阅读全文 »

趁着最近手头上的事比较少,想把自己前段时间的事情总结一下,由于目前主流的开源识别项目Kaldi前端支持较差,我闲着没事干,把前期做的一些事情迁移到Kaldi上来。为啥叫做闲着没事呢,因为这些代码用python或者MATLAB实现相比C++真的太简单了(就当是为开源社区做点贡献吧)……不过话说回来,迁移到Kaldi上还是有一点方便的,就是速度,以后做一些验证性的实验或者前端baseline,前后端打通的话,基本做一下数据准备就OK了,省去了很多重新组织代码,脚本的时间。

阅读全文 »

本篇Blog虽然看起来像极了新闻稿,但实际上只是自己想做一个E2E的梳理(顺便交了某课程大作业),毕竟这玩意最近这么火。有一部分论文自己只看个大概,说法未必准确,各位看观小心~。

语音识别(Automatic Speech Recognition,ASR)是要完成输入音频的采样序列到字符序列的映射任务。传统识别模块主要包含声学模型,字典,语言模型三个部分,其中声学模型用于将输入特征转化为声学单元的后验概率,字典用于表示声学单元序列到字符的映射关系,而语言模型则用于表示字符上下文之间的条件概率。由于声学模型的训练需要预知声学单元和输入特征之间的对齐信息,而常见的声学单元,比如CD-state,CD-phone等的时间对齐信息无法直接从抄本中的字符序列中获知。因此,DNN等声学模型的训练需要以传统的HMM-GMM模型进行启动引导,获得帧级别的状态标签,这一步操作称为对齐。也正是由于CD-state之类的建模单元颗粒度太小,无法直接转化成字符级别的输出,因此,需要融合字典,语言模型等信息,信息融合在声学解码器中进行。

阅读全文 »

我在这一篇里推导一下RNN的反向传播算法,尝试从另一个角度来理解在RNN在时间轴上的依赖关系,由此导出所谓的梯度消失问题,即原始的RNN为什么难以训练。

首先定义RNN的前向过程如下:

网上常见的解释是,对于RNN,在$t$时刻的输入不仅可以直接影响当前时刻的输出$\mathbf{h}_t$,而且可以通过$\mathbf{h}_t$对下一时刻的输出$\mathbf{h}_{t + 1}$产生影响,因此计算梯度的时候,需将$t + 1$时刻的误差也传递到当前时刻。个人觉得这种解释没有真实的反映出时间序列上的依赖关系,因为$t$时刻输入会对后续时刻的整个序列的输出产生影响,不仅仅是下一个时刻的输出,因此,从这里理解,$t$时刻的误差应该是后续时间步上误差传递到当前时刻值的总和,也正是由于这种在时间轴上从后向前的传递,导致了在时间步(time step)变大时,靠后时刻的误差不能传递到序列的早期时刻,引发了所谓的梯度消失问题(长期依赖问题)。下面对这段文字描述做数学推导。

阅读全文 »

吐槽:其实我特别反感老师自己不上课,让学生挨个领任务的这种行为,虽然好(jiu)像(shi)越来越多的老师喜(bian)欢(de)上(yue)这(lai)一(yue)点(lan)了。课下已经是百分之百靠自学,课上想听一下你的观点这么难?好吧,这个题目,其实是我领的任务……本身我也不想准备这个东西,但是恰逢考试周,老刷那些数学题也没啥意思,就花点时间做了个PPT当放松了。

下面进入正题。

阅读全文 »

来阿里iDST的第三周了,开始的两天在西溪园区里面还是有点晕头转向,不清楚工作区和食堂的结构,乃至于每次吃饭都从七号楼走到二号楼,因为不知道七号楼和八号楼有食堂……大概到了第四天就基本熟悉了,每天装的像个老员工一样上班,开会,吃饭,午休。

老实说,在这里的感觉和学校很相似,毕竟作为一个实习生,没有工作上的压力,也没有正式员工各种项目和各种会。每天和在校一样,跑实验,写代码,带着期待看实验结果……,效率上还是要优于学校的,很多方面原因吧,机器比实验室的好,实验跑的快,任务相关度较高,也没有学校的很多杂事,每天的精神高度集中,倒是每天早上要开个立会。考虑到人员的分布,所谓的立会也就是个电话会议,汇报一下前一天的工作,我的效率自我感觉还可以,每天的进展还是可以保证的。周末我还是照常去公司,我比较喜欢安静吧,周末去公司的员工比较少,一个人待在里面很安静,毕竟工作日的话,淹没在各种讨论,电话之中,心里还是有些不自在的。

阅读全文 »

好久没更……
过去一段时间接触了一下beamforming,连看论文加做实验,大概理出了一些头绪。初步理解beamforming就是对多路信号进行频域滤波,从而获取一路增强信号,所谓的增强就是最大可能的滤除噪声,同时保留我们期望的信号。比较经典的方法有:延时相加,Max-SNR,MVDR,GSC(LCMV)等等(详细可学习陈老师的麦克风阵列信号处理[2]一书)。学习期间会接触到一些非常频繁的概念,比如信噪比,相关系数矩阵,PSD(功率谱密度),steer vector,以及一些数学问题的求解方法,比如拉格朗日乘子法,广义特征值等问题,深层次的理解还是需要扎实的统计,矩阵,优化理论基础,相关概念以后可能会写一篇专做解释。

我这里从DS(延迟相加)开始,引入频域beamforming的一般数学模型,再介绍GEV,MVDR,PMWF三种beamformer。虽然我的出发点和实验都是和NN结合来做的,但是本篇里面不牵扯到NN(神经网络)的东西,只说纯粹的信号处理。

阅读全文 »

话说图像分类那边喜欢把网络往深处设计,语音这边也跟风走势,DeepRNN和DeepCNN接连出现在各种实验论文中。不过在网络成功走向深处之前,它的难点也是疑问在于,不加修正的加深网络层数,并不能获得相应的结果提升。于是各方大佬就进行了各种尝试和改良。截止目前,成功尝试包括以下三种:

  • Highway Network
  • Residual Network,可以看做HN的特殊情况,ResNet在图像分类上用的很成功
  • Recurrent Highway Network,中了ICML2017

语音这边也基本是拿大佬们成功的实践往声学模型上尝试,也得到了一些识别率上的提升。

阅读全文 »

ASR这块的CNN&RNN大约从13年开始就已经被陆续玩烂了。从CLDNN之后,最近几年貌似在深度和端到端上更加引人关注,例如DeepRNN(Highway, Residual等等)声学建模,DeepCNN的前端增强,前段时间看了一下Interspeech的论文,发现声学模型这块RNN和E2E明显成为两大热门专题。我之前看过KWS和解码的一些东西,没有过多的花精力在声学模型上。因此,也一直想多搭搭模型,跑跑实验,测测WER。

阅读全文 »