博舍

嵌入式语音识别系统是什么 语音识别技术是什么主义的技术

嵌入式语音识别系统是什么

随着人工智能行业的兴起,对人工智能技术的研发,我们周身慢慢涌现了人工智能的身影,它可以化身为你的爱车,在沙漠、森林或小巷中风驰电掣;它可以是智慧公正的交警,控制红绿灯、缓解交通的拥挤;它可以是给人以贴心照顾的小助理,熟悉你生活中的每一处小怪癖。而语音识别它能满足我们的需求,用更自然的方式与机器/虚拟助理进行交互沟通,实现拟人对话、对设备的操控或者问题答案的获取。还可利用语义建模,对某些业务场景中比较关注的词/语义进行检索,或者将其抽取出来并进行结构化记录。

嵌入式语音识别系统是什么

嵌入式语音识别系统分为封闭域识别和开放域识别,封闭域识别范围围绕指定的字/词语集合,也就是说在开发系统的时候会设定好应识别的字或词语,对范围外的词语语音系统不会识别。而这样设定识别字或词的识别方式可通过声学模型和语音模型的裁剪,有利于识别引擎的运算量减小,再将引擎封到嵌入式芯片中,这样识别的过程便可完全脱离云端,无需连网便可以识别。如智能家居中的“打开窗帘”、“打开中央台”。开放域识别无需指定识别词集合,算法会在整个语音中大集合范围的在其中进行识别。为适应场景声学模型和语音模型一般会比较大,引擎运算量也比较大。如果将其封装到嵌入式芯片中,耗能会较高相对的也会影响识别效果。典型的就是,在手机浏览器的搜索框中录入语音,会根据用户发布的语音进行识别,搜索出相关的信息。

嵌入式语音识别系统在生活中的应用

嵌入式语音识别系统应用在我们的生活中会有哪些惊喜呢?嵌入式语音识别系统通过声学模型和语音模型的裁剪,有利于识别引擎的运算量减小,再将引擎封到嵌入式芯片中,这样识别的过程便可完全脱离云端,无需连网便可以识别。如智能家居中的“打开窗帘”、“打开中央台”。语音识别与其他生物识别技术相比,不仅具有不会遗失和忘记、不需记忆、使用方便等特点,而且还具有用户接受程度高,声音输入设备造价低廉等优点。由于涉及不到用户的隐私问题,所以可以方便的推广应用。

哈工大东亚电子公司集智慧型科技成果转化、高新技术产品研发、人工智能与大数据分析技术研发、系统集成及软件开发于一体的科技型企业。随着人工智能时代的到来,让我们的生活越发的便捷,通过嵌入式语音识别系统我们可以无需手动关灯,只需发出指令便可达到目的。现语音识别的产品成熟化已经走过了封闭域、到达了开放域,正在向各行各业的应用场景输送自己的洪荒之力!

打开APP阅读更多精彩内容

点击阅读全文

浅析语音识别技术的工作原理及发展

浅析语音识别技术的工作原理及发展

语音是人类最自然的交互方式。计算机发明之后,让机器能够“听懂”人类的语言,理解语言中的内在含义,并能做出正确的回答就成为了人们追求的目标。我们都希望像科幻电影中那些智能先进的机器人助手一样,在与人进行语音交流时,让它听明白你在说什么。语音识别技术将人类这一曾经的梦想变成了现实。语音识别就好比“机器的听觉系统”,该技术让机器通过识别和理解,把语音信号转变为相应的文本或命令。

 

语音识别技术,也被称为自动语音识别Automatic SpeechRecogniTIon,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列。语音识别就好比“机器的听觉系统”,它让机器通过识别和理解,把语音信号转变为相应的文本或命令。

语音识别是一门涉及面很广的交叉学科,它与声学、语音学、语言学、信息理论、模式识别理论以及神经生物学等学科都有非常密切的关系。语音识别技术正逐步成为计算机信息处理技术中的关键技术。

语音识别技术的发展

语音识别技术的研究最早开始于20世纪50年代,1952年贝尔实验室研发出了10个孤立数字的识别系统。从20世纪60年代开始,美国卡耐基梅隆大学的Reddy等开展了连续语音识别的研究,但是这段时间发展很缓慢。1969年贝尔实验室的 PierceJ甚至在一封公开信中将语音识别比作近几年不可能实现的事情。

20世纪80年代开始,以隐马尔可夫模型(hiddenMarkovmodel,HMM)方法为代表的基于统计模型方法逐渐在语音识别研究中占据了主导地位。HMM模型能够很好地描述语音信号的短时平稳特性,并且将声学、语言学、句法等知识集成到统一框架中。此后,HMM的研究和应用逐渐成为了主流。例如,第一个“非特定人连续语音识别系统”是当时还在卡耐基梅隆大学读书的李开复研发的SPHINX系统,其核心框架就是GMM-HMM框架,其中GMM(Gaussianmixturemodel,高斯混合模型)用来对语音的观察概率进行建模,HMM则对语音的时序进行建模。

20世纪80年代后期,深度神经网络(deepneuralnetwork,DNN)的前身——人工神经网络(artificialneuralnetwork,ANN)也成为了语音识别研究的一个方向。但这种浅层神经网络在语音识别任务上的效果一般,表现并不如GMM-HMM模型。

20世纪90年代开始,语音识别掀起了第一次研究和产业应用的小高潮,主要得益于基于GMM-HMM声学模型的区分性训练准则和模型自适应方法的提出。这时期剑桥发布的HTK开源工具包大幅度降低了语音识别研究的门槛。此后将近10年的时间里,语音识别的研究进展一直比较有限,基于GMM-HMM框架的语音识别系统整体效果还远远达不到实用化水平,语音识别的研究和应用陷入了瓶颈。

2006年Hinton]提出使用受限波尔兹曼机(restricted Boltzmannmachine,RBM)对神经网络的节点做初始化,即深度置信网络(deepbeliefnetwork,DBN)。DBN解决了深度神经网络训练过程中容易陷入局部最优的问题,自此深度学习的大潮正式拉开。

2009年,Hinton和他的学生MohamedD将DBN应用在语音识别声学建模中,并且在TIMIT这样的小词汇量连续语音识别数据库上获得成功。

2011年DNN在大词汇量连续语音识别上获得成功,语音识别效果取得了近10年来最大的突破。从此,基于深度神经网络的建模方式正式取代GMM-HMM,成为主流的语音识别建模方式。

语音识别的基本原理

所谓语音识别,就是将一段语音信号转换成相对应的文本信息,系统主要包含特征提取、声学模型,语言模型以及字典与解码四大部分,其中为了更有效地提取特征往往还需要对所采集到的声音信号进行滤波、分帧等预处理工作,把要分析的信号从原始信号中提取出来;之后,特征提取工作将声音信号从时域转换到频域,为声学模型提供合适的特征向量;声学模型中再根据声学特性计算每一个特征向量在声学特征上的得分;而语言模型则根据语言学相关的理论,计算该声音信号对应可能词组序列的概率;最后根据已有的字典,对词组序列进行解码,得到最后可能的文本表示。

声学信号预处理

作为语音识别的前提与基础,语音信号的预处理过程至关重要。在最终进行模板匹配的时候,是将输入语音信号的特征参数同模板库中的特征参数进行对比,因此,只有在预处理阶段得到能够表征语音信号本质特征的特征参数,才能够将这些特征参数进行匹配进行识别率高的语音识别。

首先需要对声音信号进行滤波与采样,此过程主要是为了排除非人体发声以外频率的信号与50Hz电流频率的干扰,该过程一般是用一个带通滤波器、设定上下戒指频率进行滤波,再将原有离散信号进行量化处理实现的;之后需要平滑信号的高频与低频部分的衔接段,从而可以在同一信噪比条件下对频谱进行求解,使得分析更为方便快捷;分帧加窗操作是为了将原有频域随时间变化的信号具有短时平稳特性,即将连续的信号用不同长度的采集窗口分成一个个独立的频域稳定的部分以便于分析,此过程主要是采用预加重技术;最后还需要进行端点检测工作,也就是对输入语音信号的起止点进行正确判断,这主要是通过短时能量(同一帧内信号变化的幅度)与短时平均过零率(同一帧内采样信号经过零的次数)来进行大致的判定。

声学特征提取

完成信号的预处理之后,随后进行的就是整个过程中极为关键的特征提取的操作。将原始波形进行识别并不能取得很好的识别效果,频域变换后提取的特征参数用于识别,而能用于语音识别的特征参数必须满足以下几点:

1、特征参数能够尽量描述语音的根本特征;

2、尽量降低参数分量之间的耦合,对数据进行压缩;

3、应使计算特征参数的过程更加简便,使算法更加高效。基音周期、共振峰值等参数都可以作为表征语音特性的特征参数。

目前主流研究机构最常用到的特征参数有:线性预测倒谱系数(LPCC)和Mel倒谱系数(MFCC)。两种特征参数在倒谱域上对语音信号进行操作,前者以发声模型作为出发点,利用LPC技术求倒谱系数。后者则模拟听觉模型,把语音经过滤波器组模型的输出做为声学特征,然后利用离散傅里叶变换(DFT)进行变换。

所谓基音周期,是指声带振动频率(基频)的振动周期,因其能够有效表征语音信号特征,因此从最初的语音识别研究开始,基音周期检测就是一个至关重要的研究点;所谓共振峰,是指语音信号中能量集中的区域,因其表征了声道的物理特征,并且是发音音质的主要决定条件,因此同样是十分重要的特征参数。此外,目前也有许多研究者开始将深度学习中一些方法应用在特征提取中,取得了较快的进展。

声学模型

声学模型是语音识别系统中非常重要的一个组件,对不同基本单元的区分能力直接关系到识别结果的好坏。语音识别本质上一个模式识别的过程,而模式识别的核心是分类器和分类决策的问题。

通常,在孤立词、中小词汇量识别中使用动态时间规整(DTW)分类器会有良好的识别效果,并且识别速度快,系统开销小,是语音识别中很成功的匹配算法。但是,在大词汇量、非特定人语音识别的时候,DTW识别效果就会急剧下降,这时候使用隐马尔科夫模型(HMM)进行训练识别效果就会有明显提升,由于在传统语音识别中一般采用连续的高斯混合模型GMM来对状态输出密度函数进行刻画,因此又称为GMM-HMM构架。

同时,随着深度学习的发展,通过深度神经网络来完成声学建模,形成所谓的DNN-HMM构架来取代传统的GMM-HMM构架,在语音识别上也取得了很好的效果。

高斯混合模型

对于一个随机向量x,如果它的联合概率密度函数符合公式2-9,则称它服从高斯分布,并记为x∼N(µ,Σ)。

其中,µ为分布的期望,Σ为分布的协方差矩阵。高斯分布有很强的近似真实世界数据的能力,同时又易于计算,因此被广泛地应用在各个学科之中。但是,仍然有很多类型的数据不好被一个高斯分布所描述。这时候我们可以使用多个高斯分布的混合分布来描述这些数据,由多个分量分别负责不同潜在的数据来源。此时,随机变量符合密度函数。

其中,M为分量的个数,通常由问题规模来确定。

我们称认为数据服从混合高斯分布所使用的模型为高斯混合模型。高斯混合模型被广泛的应用在很多语音识别系统的声学模型中。考虑到在语音识别中向量的维数相对较大,所以我们通常会假设混合高斯分布中的协方差矩阵Σm为对角矩阵。这样既大大减少了参数的数量,同时可以提高计算的效率。

使用高斯混合模型对短时特征向量建模有以下几个好处:首先,高斯混合模型的具有很强的建模能力,只要分量总数足够多,高斯混合模型就可以以任意精度来逼近一个概率分布函数;另外,使用EM算法可以很容易地使模型在训练数据上收敛。对于计算速度和过拟合等问题,人们还研究出了参数绑定的GMM和子空间高斯混合模型(subspaceGMM)来解决。除了使用EM算法作最大似然估计以外,我们还可以使用和词或音素错误率直接相关的区分性的误差函数来训练高斯混合模型,能够极大地提高系统性能。因此,直到在声学模型中使用深度神经网络的技术出现之前,高斯混合模型一直是短时特征向量建模的不二选择。

但是,高斯混合模型同样具有一个严重的缺点:高斯混合模型对于靠近向量空间上一个非线性流形(manifold)上的数据建模能力非常差。例如,假设一些数据分布在一个球面两侧,且距离球面非常近。如果使用一个合适的分类模型,我们可能只需要很少的参数就可以将球面两侧的数据区分开。但是,如果使用高斯混合模型描绘他们的实际分布情况,我们需要非常多的高斯分布分量才能足够精确地刻画。这驱使我们寻找一个能够更有效利用语音信息进行分类的模型。

隐马尔科夫模型

我们现在考虑一个离散的随机序列,若转移概率符合马尔可夫性质,即将来状态和过去状态独立,则称其为一条马尔可夫链(MarkovChain)。若转移概率和时间无关,则称其为齐次(homogeneous)马尔可夫链。马尔可夫链的输出和预先定义好的状态一一对应,对于任意给定的状态,输出是可观测的,没有随机性。如果我们对输出进行扩展,使马尔可夫链的每个状态输出为一个概率分布函数。这样的话马尔可夫链的状态不能被直接观测到,只能通过受状态变化影响的符合概率分布的其他变量来推测。我们称以这种以隐马尔可夫序列假设来建模数据的模型为隐马尔可夫模型。

对应到语音识别系统中,我们使用隐马尔可夫模型来刻画一个音素内部子状态变化,来解决特征序列到多个语音基本单元之间对应关系的问题。

在语音识别任务中使用隐马尔可夫模型需要计算模型在一段语音片段上的可能性。而在训练的时候,我们需要使用Baum-Welch算法[23]学习隐马尔可夫模型参数,进行最大似然估计(MaximumLikelihoodEstimation,MLE)。Baum-Welch算法是EM(Expectation-Maximization)算法的一种特例,利用前后项概率信息迭代地依次进行计算条件期望的E步骤和最大化条件期望的M步骤。

语言模型

语言模型主要是刻画人类语言表达的方式习惯,着重描述了词与词在排列结构上的内在联系。在语音识别解码的过程中,在词内转移参考发声词典、词间转移参考语言模型,好的语言模型不仅能够提高解码效率,还能在一定程度上提高识别率。语言模型分为规则模型和统计模型两类,统计语言模型用概率统计的方法来刻画语言单位内在的统计规律,其设计简单实用而且取得了很好的效果,已经被广泛用于语音识别、机器翻译、情感识别等领域。

最简单又却又最常用的语言模型是N元语言模型(N-gramLanguageModel,N-gramLM)。N元语言模型假设当前在给定上文环境下,当前词的概率只与前N-1个词相关。于是词序列w1,...,wm的概率P(w1,...,wm)可以近似为

为了得到公式中的每一个词在给定上文下的概率,我们需要一定数量的该语言文本来估算。可以直接使用包含上文的词对在全部上文词对中的比例来计算该概率,即

对于在文本中未出现的词对,我们需要使用平滑方法来进行近似,如Good-Turing估计或Kneser-Ney平滑等。

解码与字典

解码器是识别阶段的核心组件,通过训练好的模型对语音进行解码,获得最可能的词序列,或者根据识别中间结果生成识别网格(lattice)以供后续组件处理。解码器部分的核心算法是动态规划算法Viterbi。由于解码空间非常巨大,通常我们在实际应用中会使用限定搜索宽度的令牌传递方法(tokenpassing)。

传统解码器会完全动态生成解码图(decodegraph),如著名语音识别工具HTK(HMMToolKit)中的HVite和HDecode等。这样的实现内存占用较小,但考虑到各个组件的复杂性,整个系统的流程繁琐,不方便高效地将语言模型和声学模型结合起来,同时更加难以扩展。现在主流的解码器实现会一定程度上使用预生成的有限状态变换器(FiniteStateTransducer,FST)作为预加载的静态解码图。这里我们可以将语言模型(G),词汇表(L),上下文相关信息(C),隐马尔可夫模型(H)四个部分分别构建为标准的有限状态变换器,再通过标准的有限状态变换器操作将他们组合起来,构建一个从上下文相关音素子状态到词的变换器。这样的实现方法额外使用了一些内存空间,但让解码器的指令序列变得更加整齐,使得一个高效的解码器的构建更加容易。同时,我们可以对预先构建的有限状态变换器进行预优化,合并和剪掉不必要的部分,使得搜索空间变得更加合理

语音识别技术的工作原理

首先,我们知道声音实际上是一种波。常见的mp3等格式都是压缩格式,必须转成非压缩的纯波形文件来处理,比如WindowsPCM文件,也就是俗称的wav文件。wav文件里存储的除了一个文件头以外,就是声音波形的一个个点了。下图是一个波形的示例。

图中,每帧的长度为25毫秒,每两帧之间有25-10=15毫秒的交叠。我们称为以帧长25ms、帧移10ms分帧。

分帧后,语音就变成了很多小段。但波形在时域上几乎没有描述能力,因此必须将波形作变换。常见的一种变换方法是提取MFCC特征,根据人耳的生理特性,把每一帧波形变成一个多维向量,可以简单地理解为这个向量包含了这帧语音的内容信息。这个过程叫做声学特征提取。

至此,声音就成了一个12行(假设声学特征是12维)、N列的一个矩阵,称之为观察序列,这里N为总帧数。观察序列如下图所示,图中,每一帧都用一个12维的向量表示,色块的颜色深浅表示向量值的大小。

接下来就要介绍怎样把这个矩阵变成文本了。首先要介绍两个概念:

音素:单词的发音由音素构成。对英语,一种常用的音素集是卡内基梅隆大学的一套由39个音素构成的音素集。汉语一般直接用全部声母和韵母作为音素集,另外汉语识别还分有调无调,不详述。

状态:这里理解成比音素更细致的语音单位就行啦。通常把一个音素划分成3个状态。

语音识别是怎么工作的呢?实际上一点都不神秘,无非是:

第一步,把帧识别成状态。

第二步,把状态组合成音素。

第三步,把音素组合成单词。

如下图所示:

图中,每个小竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态了,语音识别的结果也就出来了。

那每帧音素对应哪个状态呢?有个容易想到的办法,看某帧对应哪个状态的概率最大,那这帧就属于哪个状态。比如下面的示意图,这帧在状态S3上的条件概率最大,因此就猜这帧属于状态S3。

那这些用到的概率从哪里读取呢?有个叫“声学模型”的东西,里面存了一大堆参数,通过这些参数,就可以知道帧和状态对应的概率。获取这一大堆参数的方法叫做“训练”,需要使用巨大数量的语音数据。

但这样做有一个问题:每一帧都会得到一个状态号,最后整个语音就会得到一堆乱七八糟的状态号,相邻两帧间的状态号基本都不相同。假设语音有1000帧,每帧对应1个状态,每3个状态组合成一个音素,那么大概会组合成300个音素,但这段语音其实根本没有这么多音素。如果真这么做,得到的状态号可能根本无法组合成音素。实际上,相邻帧的状态应该大多数都是相同的才合理,因为每帧很短。

解决这个问题的常用方法就是使用隐马尔可夫模型(HiddenMarkovModel,HMM)。这东西听起来好像很高深的样子,实际上用起来很简单:

第一步,构建一个状态网络。

第二步,从状态网络中寻找与声音最匹配的路径。

这样就把结果限制在预先设定的网络中,避免了刚才说到的问题,当然也带来一个局限,比如你设定的网络里只包含了“今天晴天”和“今天下雨”两个句子的状态路径,那么不管说些什么,识别出的结果必然是这两个句子中的一句。

那如果想识别任意文本呢?把这个网络搭得足够大,包含任意文本的路径就可以了。但这个网络越大,想要达到比较好的识别准确率就越难。所以要根据实际任务的需求,合理选择网络大小和结构。

搭建状态网络,是由单词级网络展开成音素网络,再展开成状态网络。语音识别过程其实就是在状态网络中搜索一条最佳路径,语音对应这条路径的概率最大,这称之为“解码”。路径搜索的算法是一种动态规划剪枝的算法,称之为Viterbi算法,用于寻找全局最优路径。

这里所说的累积概率,由三部分构成,分别是:

观察概率:每帧和每个状态对应的概率

转移概率:每个状态转移到自身或转移到下个状态的概率

语言概率:根据语言统计规律得到的概率

其中,前两种概率从声学模型中获取,最后一种概率从语言模型中获取。语言模型是使用大量的文本训练出来的,可以利用某门语言本身的统计规律来帮助提升识别正确率。语言模型很重要,如果不使用语言模型,当状态网络较大时,识别出的结果基本是一团乱麻。

这样基本上语音识别过程就完成了,这就是语音识别技术的工作原理。

语音识别技术的工作流程

一般来说,一套完整的语音识别系统其工作过程分为7步:

1、对语音信号进行分析和处理,除去冗余信息。

2、提取影响语音识别的关键信息和表达语言含义的特征信息。

3、紧扣特征信息,用最小单元识别字词。

4、按照不同语言的各自语法,依照先后次序识别字词。

5、把前后意思当作辅助识别条件,有利于分析和识别。

6、按照语义分析,给关键信息划分段落,取出所识别出的字词并连接起来,同时根据语句意思调整句子构成。

7、结合语义,仔细分析上下文的相互联系,对当前正在处理的语句进行适当修正。

语音识别原理有三点:

1、对语音信号中的语言信息编码是按照幅度谱的时间变化来进行;

2、由于语音是可以阅读的,也就是说声学信号可以在不考虑说话人说话传达的信息内容的前提下用多个具有区别性的、离散的符号来表示;

3、语音的交互是一个认知过程,所以绝对不能与语法、语义和用语规范等方面分裂开来。

预处理,其中就包括对语音信号进行采样、克服混叠滤波、去除部分由个体发音的差异和环境引起的噪声影响,此外还会考虑到语音识别基本单元的选取和端点检测问题。反复训练是在识别之前通过让说话人多次重复语音,从原始语音信号样本中去除冗余信息,保留关键信息,再按照一定规则对数据加以整理,构成模式库。再者是模式匹配,它是整个语音识别系统的核心部分,是根据一定规则以及计算输入特征与库存模式之间的相似度,进而判断出输入语音的意思。

前端处理,先对原始语音信号进行处理,再进行特征提取,消除噪声和不同说话人的发音差异带来的影响,使处理后的信号能够更完整地反映语音的本质特征提取,消除噪声和不同说话人的发音差异带来的影响,使处理后的信号能够更完整地反映语音的本质特征。

原文标题:语音识别技术概述

文章出处:【微信号:WW_CGQJS,微信公众号:传感器技术】欢迎添加关注!文章转载请注明出处。

基于深度学习的语音识别技术综述(1)

Deeplearningforautomaticspeechrecognitionsurvey[1]

这篇综述质量尚可(废话,TIST的文章能不好,你有本事发一个)。TIST是什么?PIA打飞,百度去。通讯作者是Schuller,被引次数超过3万的大佬。听大佬的,少走弯路(Doge脸)。

那这篇文章的关注点其实很聚焦:鲁棒的语音识别,也就是对有噪声语音的识别。所关注的技术是当红炸子鸡deeplearning。

有噪语音的识别,可以类比失真图像的识别。因为图像也好,语音也罢,本质上都是信号。那么有噪语音的问题其实也可以类比为图像失真——一种非线性的降质过程。这篇文章主要关注的噪声是non-stational的,就是非稳定的、突发的噪声,类似图像中的油渍、空洞等。而传统失真,比如高斯白噪声,是稳定的,可以用线性方程描述的(时域的卷积=频域的乘积)。

ASR大致是两步走:第一步是从语音信号提取特征;第二步是构建声音模型,然后做一个分类。前者被作者称为front-endtechnique,后者被称为back-endtechnique。

Front-endtechniques

所谓front-end,有点像是featurerepresentation。但是又不太一样。front-endtechnique重点是从ASR的处理过程出发,更广泛地说,是speechapplication的一环。更像是pre-processing。其主要目的是从带噪声的声音中估计原始无失真信号。这就和图像去噪有点像了,或许和图像本征分解、去模糊等也类同的。本质上,还是一个非线性的、病态的问题。那么常用手段其实也就来了。

把深度学习用于front-end,无非就是如何训练的问题。目前(按这篇文章的2017年)主要还是有监督的。然后更细分一点,训练数据是用从原始无失真语音信号(cleanspeech)提取的特征,还是从原始无失真与噪声信号取mask后的特征,分为mapping-based和masking-basedmethods。

Mapping-basedmethod的实质是解一个优化方程:

J(θ)=1N∑n=1N∣∣F(y⃗n)−x⃗n∣∣2mathcal{J}( heta)=frac{1}{N}sum_{n=1}^{N}||F(vec{y}_{n})-vec{x}_{n}||^{2}J(θ)=N1​n=1∑N​∣∣F(y​n​)−xn​∣∣2

其中y⃗vec{y}y​是输入特征,x⃗vec{x}x是目标特征,θ hetaθ就是网络要学习的参数了。

这里按照历史变革,很自然有三种可用的网络技术:

自编码器或者玻尔兹曼机。这两种其实应算做是无监督方法(聚类)。但是在编码器之后加一个有监督的解码器,也就能做去噪了;LSTM-RNN。这是语音界老大哥,好处是保留了上下文信息。坏处是太没特色。硬要说的话,LSTM过分依赖标注信息吧;([2])CNN。学界前辈们发现语谱图其实也是一张图以后,就开始把CNN用在语谱图上了,各种语谱图,什么Mel谱图,log-Mel谱图都行。这类图一般横轴是时间,纵轴是频率信息。这样一来,用CNN卷积的话,从某种程度上算是保留了时空与的上下文结构。但是有一点——与幅值几乎同等重要的相位信息没了。([3])。2016年,WaveNet横空出世,据说可以保留所有音频信息。([4])

最后自然就是生成式网络啦——4.GAN。据说可以秒杀传统方法,比如维纳滤波器(看来比LSTM/CNN还是差一丢丢)。([5][6])

来看大佬总结的deeplearning杀进语音识别带来的变化:

超强的计算能力使得直接从原始数据获取特征表示成为可能;新型网络架构,如dilatedCNN,可以显著降低计算负载;云计算使得计算上述任务称为可能(俺们小作坊不关心)

但是大佬指出一个问题:就是大家在看待语谱图的时候,是不是太自然地将他与普通图像等量齐观了呢?普通图像中,相邻像素往往是相似的;但是语谱图里,沿着时间方向很相像,但是沿着频率方向相关性很小(必须的……因为是经过STFT了嘛)。这块需要留意。

Masking-based试图学习从带噪声的语谱图Y(n,f)Y(n,f)Y(n,f)到时-频maskM(n,f)M(n,f)M(n,f)的回归函数:

Y(n,f)→M(n,f)Y(n,f) ightarrowM(n,f)Y(n,f)→M(n,f)

Masking-based方法首先要圈定mask的形态。用什么样的mask?一种是binary-basedmask。这种二值的T-Fmask有点像Indicatorfunction,给一个SNR的阈值,大于阈值的认为是干净语音主导的,小于阈值的认为是噪声主导的。这么搞出来的mask是一个二值矩阵(Idealbinarymask,IBM);另一种是ratio-basedmask,T-Fmask的每个单元用的是干净语音和噪声语音的一种softratio(Idealratiomask,IRM)。相较而言,后者比前者保有的信息更多([7])。通过估计mask,就可以做到语音分解。T-Fmask也可以用Mel-frequency语谱图,log-Mel-frequency语谱图替代。后者效果更好(一切荣耀归于Mel!)。另外,估计mask的训练方式也从DNN转向LSTM-RNN。

当然,IBM/IRM方法也存在上述致命缺陷,就是没有把纤维信息考虑进去。事实上,相位信息对语音增强是很有用的。因此,又有一种mask叫Phase-sensitivemask(PSM),把干净语音和噪声语音的相位角差引入mask表示;还有进一步保留相位信息的complexIRM。

确定的mask之后,就是定义目标函数了。Inputy⃗vec{y}y​是从噪声信号Y(n,f)Y(n,f)Y(n,f)得到的;目标x⃗vec{x}x是根据干净语音和噪声语音计算的T-Fmask,θ hetaθ是网络参数。目标函数就是:

J(θ)=1N∑n=1N∣∣F(y⃗n−M(n,f)∣∣2mathcal{J}( heta)=frac{1}{N}sum_{n=1}^{N}||F(vec{y}_{n}-M(n,f)||^{2}J(θ)=N1​n=1∑N​∣∣F(y​n​−M(n,f)∣∣2

估计到maskM^(n,f)=F(y⃗n)hat{M}(n,f)=F(vec{y}_{n})M^(n,f)=F(y​n​)后,可以把它与带噪信号的频谱卷积,然后再变换回时域,就能把干净信号分离出来(这里的mask实质上就是信号处理里的滤波器)。这类目标函数叫MA(Maskapproximation)。

还有一类目标函数叫Signalapproximation(SA),是比较卷积后信号频谱与干净信号频谱的MSE:

J(θ)=1N∑n=1N∣∣y⃗n⊗M^(n,f)−x⃗n∣∣2mathcal{J}( heta)=frac{1}{N}sum_{n=1}^{N}||vec{y}_{n}otimeshat{M}(n,f)-vec{x}_{n}||^{2}J(θ)=N1​n=1∑N​∣∣y​n​⊗M^(n,f)−xn​∣∣2

使用SA比MA好一点,原因不明(本文认为是sourceseparation)。但这里有一个思路可以借鉴,就是ResNet里为何使用Residual而不是sum?应该还是数值计算的问题。最后还有考虑相位信息的目标函数Phase-sensitiveSA。

多任务网络也已经发现了这片热土——同时训练noise-speech和mask([8])。

[1]Jiang,Dan-Ning,LieLu,Hong-JiangZhang,Jian-HuaTao,andLian-HongCai.“Musictypeclassificationbyspectralcontrastfeature.”InMultimediaandExpo,2002.ICME‘02.Proceedings.2002IEEEInternationalConferenceon,vol.1,pp.113-116.IEEE,2002.[2]Wollmer,Martin,etal.“FeatureenhancementbybidirectionalLSTMnetworksforconversationalspeechrecognitioninhighlynon-stationarynoise.”2013IEEEInternationalConferenceonAcoustics,SpeechandSignalProcessing.IEEE,2013.[3]ParkSR,LeeJ.Afullyconvolutionalneuralnetworkforspeechenhancement[J].arXivpreprintarXiv:1609.07132,2016.[4]OordA,DielemanS,ZenH,etal.Wavenet:Agenerativemodelforrawaudio[J].arXivpreprintarXiv:1609.03499,2016.[5]PascualS,BonafonteA,SerraJ.SEGAN:Speechenhancementgenerativeadversarialnetwork[J].arXivpreprintarXiv:1703.09452,2017.[6]MichelsantiD,TanZH.Conditionalgenerativeadversarialnetworksforspeechenhancementandnoise-robustspeakerverification[J].arXivpreprintarXiv:1709.01703,2017.[7]WangY,NarayananA,WangDL.Ontrainingtargetsforsupervisedspeechseparation[J].IEEE/ACMtransactionsonaudio,speech,andlanguageprocessing,2014,22(12):1849-1858.[8]HuangPS,KimM,Hasegawa-JohnsonM,etal.Deeplearningformonauralspeechseparation[C]//2014IEEEInternationalConferenceonAcoustics,SpeechandSignalProcessing(ICASSP).IEEE,2014:1562-1566.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇