2019-07-24 21:57:01 alice_tl 阅读数 400
  • 深度学习--几种常见的循环神经网络视频教学(RNN+LSTM...

    深度学习的顶级循环神经网络的工作方式包括 LSTM、GRU 和 RNN. 循环神经网络(RNN)在自然语言处理、语音识别等有很广泛的用途。LSTM和GRU是目前使用最广泛的两个循环神经网络的模型变种。该视频课程内容主要分为三大部分,机器学习神经网络RNN教程、LSTM、GRU。

    1134 人正在学习 去看看 王而川

最近在学习语音识别的一些知识,做了一些笔记,这篇文章讲讲语音识别的发展,以及相关的几个容易混淆的概念。

 

语音识别的背景

从物理声音被转换为电信号,再通过模数转换器转换为数据。一旦被数字化,就可适用若干种模型。语音识别的技术,就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的技术。

 

发展阶段

50年代:贝尔实验室开始语音识别的研究,主要研究基于简单的孤立词的语音识别系统。实现针对特定说话人的十个英文数字的孤立词语音识别系统。

60年代:出现三个关键的技术,提出一种时间规整的机制,采用动态规划算法实现动态时间规整DTW技术,利用音素动态跟踪的方法进行连续语音识别的开创性工作。为语音识别的后来发展奠定了基础。

70年代:语音识别技术快速发展的时期。实现大规模语音识别,大词汇量,孤立词识别。

80年代:基于隐马尔科夫模型的声学建模和基于n.gram的语言模型。尝试大词汇量、非特定人连续语音识别。

90年代:语音识别技术基本成熟的时期,基于GMM-HMM的语音识别框架得到广泛使用和研究。

20年代初期:语音识别并没有得到非常好的应用,因为系统的错误率还很高。2006年开始再度兴起。

 

学科基础

通信基础知识和信号处理、声学基本知识和特征、概率论和信息论、统计学、机器学习等等。

 

相关概念

语音识别

简称ASR(Automatic,Speech,Recognition),将声学语音进行分析,并得到对应的文字或拼音信息。

自然语言处理

简称NLP(Neuro-linguistic programming),用于将用户的语音转换为结构化的、机器可以理解的语言。

语音唤醒

简称KWS(keyword spotting),技术通过在设备或软件中预置唤醒词,当用户发出该语音指令时,设备便从休眠状态中被唤醒,并响应指令。

语音合成

简称TTS(Text To Speech),即将文本转换成语音,实现让机器说话。

声纹识别

简称VPR(Voice Print Recognition),根据说话人的声波特性进行身份辨识的服务,是生物识别技术的一种。

 

区别与联系

应用场景的区别

语音识别、声纹识别、自然语言处理,以及语音合成四者的目的和应用场景是不同的。

类型

简称

目的

应用场景

语音识别

ASR

语音——》文字

生成字幕、智慧会场、语音唤醒、智能客服

声纹识别

VPR

识别说话人的身份

身份认证、公安刑侦

语音唤醒

KWS

语音——》指令

小度音箱、小爱音箱

语音合成

TTS

文字——》语音

智能音箱

语言处理

NLP

语音——》语言

同声翻译、自动阅卷

以小米音箱为例(来自MTSC大会上小米工程师的分享)。

 

在四个阶段里,输入和输出分别是下方的内容:

阶段

唤醒KWS

语音识别ASR

语音处理NLP

语音播报TTS

IN

关键字语音

用户指令语音

用户指令文字

播报文字

OUT

是否唤醒

文字

应对处理+播报文字

播报语音

示例

小爱同学

回复我在

现在几点了

Domin:time

Intention:current time

To_speek:现在时间是九点

播放MP3音频:现在时间是九点

出于保护用户隐私和减少误识别两个因素的考虑,智能音箱一般在检测到唤醒词之后,才会开始进一步的复杂信号处理(声源定位、波束形成)和后续的语音交互过程。

一般而言,唤醒模块是一个小型语音识别引擎。由于语音唤醒的目标单一(检测出指定的唤醒词),唤醒只需要较小的声学模型和语言模型来区分出有无唤醒词出现),声学评分和解码可以很快,空间占用少,能够在本地实时。

所以讲到这里,亚马逊的音响半夜突然启动和开始说话,就不奇怪了~

 

语音识别与声纹识别的区别

最多人容易将语音识别和声纹识别混淆。

声纹识别和语音识别在原理上一样,都是通过对采集到的语音信号进行分析和处理,提取相应的特征或建立相应的模型,然后据此做出判断。但语音识别是从不同人的词语信号中寻找共同因素,声纹识别是通过语音波形中反映说话人生理和行为特征的语音参数。

声纹识别一般会连接到公安部的声纹数据库,鉴别人的身份。所承载的功能特点和人脸识别是一样的,都是为了证明,“你是张三,还是李四”。所以声纹识别不注重语音信号的语义,而是从语音信号中提取个人声纹特征,挖掘出包含在语音信号中的个性因素。

 

语音识别的分类

按使用范围分类

从语音识别的使用范围分类,可分为封闭域识别和开放域识别,具体概念及优劣如下方表格:

范围

概念

算法

应用场景

提供形式

封闭域识别

以预先指定的字/词集合为识别范围,对范围之外的语音会拒识

声学模型和语言模型进行裁剪,使得识别引擎的运算量变小

不涉及到多轮交互和多种语义说法的场景。

如电视盒子,智能音箱

一般将引擎封到嵌入式芯片或者本地化的SDK中,从而使识别过程完全脱离云端,摆脱对网络的依赖,并且不会影响识别率

开放域识别

无需预先指定识别词集合,在整个语言大集合范围中进行识别

声学模型和语音模型一般都比较大,引擎运算量也较大

实时性要求不高的客服语音质检,录制完的视频转字幕配置等。如会议字幕系统

基本上都只以云端形式提供(云端包括公有云形式和私有云形式),依赖于网络

按识别对象分类

根据识别的对象不同,语音识别任务大体可分为三类,孤立词识别、关键词识别、连续语音识别。

范围

概念

应用场景

孤立词识别

识别事先已知的孤立的词

如“开机”、“关机”等

关键词识别

检测针对的是连续语音,但它并不识别全部文字,而只是检测已知的若干关键词在何处出现

如在一段话中检测“计算机”、“世界”这两个词

连续语音识别

识别任意的连续语音,

如一个句子或一段话

按发音人分类

根据发音人,可以把语音识别技术分为特定人语音识别和非特定人语音识别。

特定人语音识别(SD)只能识别一个或几个人的语音。

非特定人语音识别(SI)可以被任何人使用系统,更符合实际需要,但要比针对特定人的识别困难得多。

2016-03-02 09:08:50 qqh19910525 阅读数 3176
  • 深度学习--几种常见的循环神经网络视频教学(RNN+LSTM...

    深度学习的顶级循环神经网络的工作方式包括 LSTM、GRU 和 RNN. 循环神经网络(RNN)在自然语言处理、语音识别等有很广泛的用途。LSTM和GRU是目前使用最广泛的两个循环神经网络的模型变种。该视频课程内容主要分为三大部分,机器学习神经网络RNN教程、LSTM、GRU。

    1134 人正在学习 去看看 王而川

         语音识别技术所涉及的领域包括:信号处理模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。中国物联网校企联盟形象得把语音识别[1] 比做为“机器的听觉系统”。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。 语音识别技术主要包括特征提取技术、模式匹配准则及模型训练技术三个方面。语音识别技术车联网也得到了充分的引用,例如在翼卡车联网中,只需按一键通客服人员口述即可设置目的地直接导航,安全、便捷。

发展史

       1952年贝尔研究所Davis等人研究成功了世界上第一个能识别10个英文数字发音的实验系统。

1960年英国的Denes等人研究成功了第一个计算机语音识别系统
大规模的语音识别[2]  研究是在进入了70年代以后,在小词汇量、孤立词的识别方面取得了实质性的进展。
进入80年代以后,研究的重点逐渐转向大词汇量、非特定人连续语音识别。在研究思路上也发生了重大变化,即由传统的基于标准模板匹配的技术思路开始转向基于统计模型 (HMM)的技术思路。此外,再次提出了将神经网络技术引入语音识别问题的技术思路
        进入90年代以后,在语音识别的系统框架方面并没有什么重大突破。但是,在语音识别技术的应用及产品化方面出现了很大的进展。

DARPA(Defense Advanced Research Projects Agency)是在70年代由美国国防部远景研究计划局资助的一项10年计划,其旨在支持语言理解系统的研究开发工作。
到了80年代,美国国防部远景研究计划局又资助了一项为期10年的DARPA战略计划,其中包括噪声下的语音识别和会话(口语)识别系统,识别任务设定为“(1000单词)连续语音数据库管理”。
到了90年代,这一DARPA计划仍在持续进行中。其研究重点已转向识别装置中的自然语言处理部分,识别任务设定为“航空旅行信息检索”。
日本也在1981年的第五代计算机计划中提出了有关语音识别输入-输出自然语言的宏伟目标,虽然没能实现预期目标,但是有关语音识别技术的研究有了大幅度的加强和进展。
1987年起,日本又拟出新的国家项目---高级人机口语接口和自动电话翻译系统

中国发展

中国的语音识别研究起始于1958年,由中国科学院声学所利用电子管电路识别10个元音。直至1973年才由中国科学院声学所开始计算机语音识别。由于当时条件的限制,中国的语音识别研究工作一直处于缓慢发展的阶段。
进入80年代以后,随着计算机应用技术在中国逐渐普及和应用以及数字信号技术的进一步发展,国内许多单位具备了研究语音技术的基本条件。与此同时,国际上语音识别技术在经过了多年的沉寂之后重又成为研究的热点,发展迅速。就在这种形式下,国内许多单位纷纷投入到这项研究工作中去。

1986年3月中国高科技发展计划(863计划)启动,语音识别作为智能计算机系统研究的一个重要组成部分而被专门列为研究课题。在863计划的支持下,中国开始了有组织的语音

识别模式

这一时期的语音识别方法基本上是采用传统的模式识别策略。其中以苏联的Velichko和Zagoruyko、日本的迫江和千叶,以及当时在美国的板仓等人的研究工作最具有代表性。
· 苏联的研究为模式识别应用于语音识别这一领域奠定了基础;
· 日本的研究则展示了如何利用动态规划技术在待识语音模式与标准语音模式之间进行非线性时间匹配的方法;
·板仓的研究提出了如何将线性预测分析技术(LPC)加以扩展,使之用于语音信号的特征抽取的方法。

数据库

在语音识别的研究发展过程中,相关研究人员根据不同语言的发音特点,设计和制作了以汉语(包括不同方言)、英语等各类语言的语音数据库,这些语音数据库可以为国内外有关的科研单位和大学进行汉语连续语音识别算法研究、系统设计、及产业化工作提供充分、科学的训练语音样本。例如:MIT Media lab Speech Dataset(麻省理工学院媒体实验室语音数据集)、Pitch and Voicing Estimates for Aurora 2(Aurora2语音库的基因周期和声调估计)、Congressional speech data(国会语音数据)、Mandarin Speech Frame Data(普通话语音帧数据)、用于测试盲源分离算法的语音数据等。
识别技术

数据库

在语音识别的研究发展过程中,相关研究人员根据不同语言的发音特点,设计和制作了以汉语(包括不同方言)、英语等各类语言的语音数据库,这些语音数据库可以为国内外有关的科研单位和大学进行汉语连续语音识别算法研究、系统设计、及产业化工作提供充分、科学的训练语音样本。例如:MIT Media lab Speech Dataset(麻省理工学院媒体实验室语音数据集)、Pitch and Voicing Estimates for Aurora 2(Aurora2语音库的基因周期和声调估计)、Congressional speech data(国会语音数据)、Mandarin Speech Frame Data(普通话语音帧数据)、用于测试盲源分离算法的语音数据等。

技术发展

目前在大词汇语音识别方面处于领先地位的IBM语音研究小组,就是在70年代开始了它的大词汇语音识别研究工作的。AT&T的贝尔研究所也开始了一系列有关非特定人语音识别的实验。这一研究历经10年,其成果是确立了如何制作用于非特定人语音识别的标准模板的方法。
这一时期所取得的重大进展有:
隐式马尔科夫模型(HMM)技术的成熟和不断完善成为语音识别的主流方法。
⑵以知识为基础的语音识别的研究日益受到重视。在进行连续语音识别的时候,除了识别声学信息外,更多地利用各种语言知识,诸如构词、句法、语义、对话背景方面等的知识来帮助进一步对语音作出识别和理解。同时在语音识别研究领域,还产生了基于统计概率的语言模型。
人工神经网络在语音识别中的应用研究的兴起。在这些研究中,大部分采用基于反向传播算法(BP算法)的多层感知网络。人工神经网络具有区分复杂的分类边界的能力,显然它十分有助于模式划分。特别是在电话语音识别方面,由于其有着广泛的应用前景,成了当前语音识别应用的一个热点。

另外,面向个人用途的连续语音听写机技术也日趋完善。这方面,最具代表性的是IBM的ViaVoice和Dragon公司的Dragon Dictate系统。这些系统具有说话人自适应能力,新用户不需要对全部词汇进行训练,便可在使用中不断提高识别率。

· 在孤立字大词汇量语音识别方面,最具代表性的要数92年清华大学电子工程系与中国电子器件公司合作研制成功的THED-919特定人语音识别与理解实时系统。 在连续语音识别方面,91年12月四川大学计算机中心在微机上实现了一个主题受限的特定人连续英语——汉语语音翻译演示系统。

分类应用编辑

根据识别的对象不同,语音识别任务大体可分为3类,即孤立词识别(isolated word recognition),关键词识别(或称关键词检出,keyword spotting)和连续语音识别。其中,孤立词识别 的任务是识别事先已知的孤立的词,如“开机”、“关机”等;连续语音识别的任务则是识别任意的连续语音,如一个句子或一段话;连续语音流中的关键词检测针对的是连续语音,但它并不识别全部文字,而只是检测已知的若干关键词在何处出现,如在一段话中检测“计算机”、“世界”这两个词。
根据针对的发音人,可以把语音识别技术分为特定人语音识别和非特定人语音识别,前者只能识别一个或几个人的语音,而后者则可以被任何人使用。显然,非特定人语音识别系统更符合实际需要,但它要比针对特定人的识别困难得多。
另外,根据语音设备和通道,可以分为桌面(PC)语音识别、电话语音识别和嵌入式设备(手机、PDA等)语音识别。不同的采集通道会使人的发音的声学特性发生变形,因此需要构造各自的识别系统。
语音识别的应用领域非常广泛,常见的应用系统有:语音输入系统,相对于键盘输入方法,它更符合人的日常习惯,也更自然、更高效;语音控制系统,即用语音来控制设备的运行,相对于手动控制来说更加快捷、方便,可以用在诸如工业控制、语音拨号系统、智能家电、声控智能玩具等许多领域;智能对话查询系统,根据客户的语音进行操作,为用户提供自然、友好的数据库检索服务,例如家庭服务、宾馆服务、旅行社服务系统、订票系统、医疗服务、银行服务、股票查询服务等等。

识别方法编辑

语音识别方法主要是模式匹配法。
在训练阶段,用户将词汇表中的每一词依次说一遍,并且将其特征矢量作为模板存入模板库。
在识别阶段,将输入语音的特征矢量依次与模板库中的每个模板进行相似度比较,将相似度最高者作为识别结果输出。

主要问题编辑

语音识别主要有以下五个问题:
⒈对自然语言的识别和理解。首先必须将连续的讲话分解为词、音素等单位,其次要建立一个理解语义的规则。
⒉语音信息量大。语音模式不仅对不同的说话人不同,对同一说话人也是不同的,例如,一个说话人在随意说话和认真说话时的语音信息是不同的。一个人的说话方式随着时间变化。
⒊语音的模糊性。说话者在讲话时,不同的词可能听起来是相似的。这在英语和汉语中常见。
⒋单个字母或词、字的语音特性受上下文的影响,以致改变了重音、音调、音量和发音速度等。
⒌环境噪声和干扰对语音识别有严重影响,致使识别率低。

前端处理

前端处理是指在特征提取之前,先对原始语音进行处理,部分消除噪声和不同说话人带来的影响,使处理后的信号更能反映语音的本质特征。最常用的前端处理有端点检测和语音增强。端点检测是指在语音信号中将语音和非语音信号时段区分开来,准确地确定出语音信号的起始点。经过端点检测后,后续处理就可以只对语音信号进行,这对提高模型的精确度和识别正确率有重要作用。语音增强的主要任务就是消除环境噪声对语音的影响。目前通用的方法是采用维纳滤波,该方法在噪声较大的情况下效果好于其它滤波器。

声学特征

声学特征的提取与选择是语音识别的一个重要环节。声学特征的提取既是一个信息大幅度压缩的过程,也是一个信号解卷过程,目的是使模式划分器能更好地划分。由于语音信号的时变特性,特征提取必须在一小段语音信号上进行,也即进行短时分析。这一段被认为是平稳的分析区间称之为帧,帧与帧之间的偏移通常取帧长的1/2或1/3。通常要对信号进行预加重以提升高频,对信号加窗以避免短时语音段边缘的影响。

声学特征编辑

LPC

线性预测分析从人的发声机理入手,通过对声道的短管级联模型的研究,认为系统的传递函数符合全极点数字滤波器的形式,从而n 时刻的信号可以用前若干时刻的信号的线性组合来估计。通过使实际语音的采样值和线性预测采样值之间达到均方差最小LMS,即可得到线性预测系数LPC。对 LPC的计算方法有自相关法(德宾Durbin法)、协方差法、格型法等等。计算上的快速有效保证了这一声学特征的广泛使用。与LPC这种预测参数模型类似的声学特征还有线谱对LSP、反射系数等等。

CEP

利用同态处理方法,对语音信号求离散傅立叶变换DFT后取对数,再求反变换iDFT就可得到倒谱系数。对LPC倒谱(LPCCEP),在获得滤波器的线性预测系数后,可以用一个递推公式计算得出。实验表明,使用倒谱可以提高特征参数的稳定性。

Mel

不同于LPC等通过对人的发声机理的研究而得到的声学特征,Mel倒谱系数MFCC和感知线性预测 PLP是受人的听觉系统研究成果推动而导出的声学特征。对人的听觉机理的研究发现,当两个频率相近的音调同时发出时,人只能听到一个音调。临界带宽指的就是这样一种令人的主观感觉发生突变的带宽边界,当两个音调的频率差小于临界带宽时,人就会把两个音调听成一个,这称之为屏蔽效应。Mel刻度是对这一临界带宽的度量方法之一。

MFCC

首先用FFT将时域信号转化成频域,之后对其对数能量谱用依照Mel刻度分布的三角滤波器组进行卷积,最后对各个滤波器的输出构成的向量进行离散余弦变换DCT,取前N个系数。PLP仍用德宾法去计算LPC参数,但在计算自相关参数时用的也是对听觉激励的对数能量谱进行DCT的方法。

声学模型编辑

语音识别系统的模型通常由声学模型和语言模型两部分组成,分别对应于语音到音节概率的计算和音节到字概率的计算。本节和下一节分别介绍声学模型和语言模型方面的技术。
HMM声学建模:马尔可夫模型的概念是一个离散时域有限状态自动机,隐马尔可夫模型HMM是指这一马尔可夫模型的内部状态外界不可见,外界只能看到各个时刻的输出值。对语音识别系统,输出值通常就是从各个帧计算而得的声学特征。用HMM刻画语音信号需作出两个假设,一是内部状态的转移只与上一状态有关,另一是输出值只与当前状态(或当前的状态转移)有关,这两个假设大大降低了模型的复杂度。HMM的打分、解码和训练相应的算法是前向算法、Viterbi算法和前向后向算法。
语音识别中使用HMM通常是用从左向右单向、带自环、带跨越的拓扑结构来对识别基元建模,一个音素就是一个三至五状态的HMM,一个词就是构成词的多个音素的HMM串行起来构成的HMM,而连续语音识别的整个模型就是词和静音组合起来的HMM。
上下文相关建模:协同发音,指的是一个音受前后相邻音的影响而发生变化,从发声机理上看就是人的发声器官在一个音转向另一个音时其特性只能渐变,从而使得后一个音的频谱与其他条件下的频谱产生差异。上下文相关建模方法在建模时考虑了这一影响,从而使模型能更准确地描述语音,只考虑前一音的影响的称为Bi- Phone,考虑前一音和后一音的影响的称为Tri-Phone。
英语的上下文相关建模通常以音素为基元,由于有些音素对其后音素的影响是相似的,因而可以通过音素解码状态的聚类进行模型参数的共享。聚类的结果称为senone。决策树用来实现高效的triphone对senone的对应,通过回答一系列前后音所属类别(元/辅音、清/浊音等等)的问题,最终确定其HMM状态应使用哪个senone。分类回归树CART模型用以进行词到音素的发音标注。

语言模型编辑

语言模型主要分为规则模型和统计模型两种。统计语言模型是用概率统计的方法来揭示语言单位内在的统计规律,其中N-Gram简单有效,被广泛使用。
N-Gram:该模型基于这样一种假设,第n个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。
语言模型的性能通常用交叉熵和复杂度(Perplexity)来衡量。交叉熵的意义是用该模型对文本识别的难度,或者从压缩的角度来看,每个词平均要用几个位来编码。复杂度的意义是用该模型表示这一文本平均的分支数,其倒数可视为每个词的平均概率。平滑是指对没观察到的N元组合赋予一个概率值,以保证词序列总能通过语言模型得到一个概率值。通常使用的平滑技术有图灵估计、删除插值平滑、Katz平滑和Kneser-Ney平滑。

搜索编辑

连续语音识别中的搜索,就是寻找一个词模型序列以描述输入语音信号,从而得到词解码序列。搜索所依据的是对公式中的声学模型打分和语言模型打分。在实际使用中,往往要依据经验给语言模型加上一个高权重,并设置一个长词惩罚分数。
Viterbi:基于动态规划的Viterbi算法在每个时间点上的各个状态,计算解码状态序列对观察序列的后验概率,保留概率最大的路径,并在每个节点记录下相应的状态信息以便最后反向获取词解码序列。Viterbi算法在不丧失最优解的条件下,同时解决了连续语音识别中HMM模型状态序列与声学观察序列的非线性时间对准、词边界检测和词的识别,从而使这一算法成为语音识别搜索的基本策略。
由于语音识别对当前时间点之后的情况无法预测,基于目标函数的启发式剪枝难以应用。由于Viterbi算法的时齐特性,同一时刻的各条路径对应于同样的观察序列,因而具有可比性,束Beam搜索在每一时刻只保留概率最大的前若干条路径,大幅度的剪枝提高了搜索的效率。这一时齐Viterbi- Beam算法是当前语音识别搜索中最有效的算法。N-best搜索和多遍搜索:为在搜索中利用各种知识源,通常要进行多遍搜索,第一遍使用代价低的知识源,产生一个候选列表或词候选网格,在此基础上进行使用代价高的知识源的第二遍搜索得到最佳路径。此前介绍的知识源有声学模型、语言模型和音标词典,这些可以用于第一遍搜索。为实现更高级的语音识别或口语理解,往往要利用一些代价更高的知识源,如4阶或5阶的N-Gram、4阶或更高的上下文相关模型、词间相关模型、分段模型或语法分析,进行重新打分。最新的实时大词表连续语音识别系统许多都使用这种多遍搜索策略。
N-best搜索产生一个候选列表,在每个节点要保留N条最好的路径,会使计算复杂度增加到N倍。简化的做法是只保留每个节点的若干词候选,但可能丢失次优候选。一个折衷办法是只考虑两个词长的路径,保留k条。词候选网格以一种更紧凑的方式给出多候选,对N-best搜索算法作相应改动后可以得到生成候选网格的算法。
前向后向搜索算法是一个应用多遍搜索的例子。当应用简单知识源进行了前向的Viterbi搜索后,搜索过程中得到的前向概率恰恰可以用在后向搜索的目标函数的计算中,因而可以使用启发式的A算法进行后向搜索,经济地搜索出N条候选。

系统实现编辑

语音识别系统选择识别基元的要求是,有准确的定义,能得到足够数据进行训练,具有一般性。英语通常采用上下文相关的音素建模,汉语的协同发音不如英语严重,可以采用音节建模。系统所需的训练数据大小与模型复杂度有关。模型设计得过于复杂以至于超出了所提供的训练数据的能力,会使得性能急剧下降。
听写机:大词汇量、非特定人、连续语音识别系统通常称为听写机。其架构就是建立在前述声学模型和语言模型基础上的HMM拓扑结构。训练时对每个基元用前向后向算法获得模型参数,识别时,将基元串接成词,词间加上静音模型并引入语言模型作为词间转移概率,形成循环结构,用Viterbi算法进行解码。针对汉语易于分割的特点,先进行分割再对每一段进行解码,是用以提高效率的一个简化方法。
对话系统:用于实现人机口语对话的系统称为对话系统。受目前技术所限,对话系统往往是面向一个狭窄领域、词汇量有限的系统,其题材有旅游查询、订票、数据库检索等等。其前端是一个语音识别器,识别产生的N-best候选或词候选网格,由语法分析器进行分析获取语义信息,再由对话管理器确定应答信息,由语音合成器输出。由于目前的系统往往词汇量有限,也可以用提取关键词的方法来获取语义信息。(科大讯飞就是用的这种)

适应强健编辑

语音识别系统的性能受许多因素的影响,包括不同的说话人、说话方式、环境噪音、传输信道等等。提高系统鲁棒性,是要提高系统克服这些因素影响的能力,使系统在不同的应用环境、条件下性能稳定;自适应的目的,是根据不同的影响来源,自动地、有针对性地对系统进行调整,在使用中逐步提高性能。以下对影响系统性能的不同因素分别介绍解决办法。
解决办法按针对语音特征的方法(以下称特征方法)和模型调整的方法(以下称模型方法)分为两类。前者需要寻找更好的、高鲁棒性的特征参数,或是在现有的特征参数基础上,加入一些特定的处理方法。后者是利用少量的自适应语料来修正或变换原有的说话人无关(SI)模型,从而使其成为说话人自适应(SA)模型。
说话人自适应的特征方法有说话人规一化和说话人子空间法,模型方法有贝叶斯方法、变换法和模型合并法。
语音系统中的噪声,包括环境噪声和录音过程加入的电子噪声。提高系统鲁棒性的特征方法包括语音增强和寻找对噪声干扰不敏感的特征,模型方法有并行模型组合PMC方法和在训练中人为加入噪声。信道畸变包括录音时话筒的距离、使用不同灵敏度的话筒、不同增益的前置放大和不同的滤波器设计等等。特征方法有从倒谱矢量中减去其长时平均值和RASTA滤波,模型方法有倒谱平移。

识别引擎编辑

微软在office和vista中都应用了自己开发的语音识别引擎,微软语音识别引擎的使用是完全免费的,所以产生了许多基于微软语音识别引擎开发的语音识别应用软件,例如《语音游戏大师》《语音控制专家》《芝麻开门》《警卫语音识别系统》等等软件。其中《警卫语音识别系统是唯一可以控制单片机类的硬件设施!!
2009年微软发布windows 7操作系统,语音识别软件得到了更好的推广!

最新进展编辑

近几年来,特别是2009年以来,借助机器学习领域深度学习研究的发展,以及大数据语料的积累,语音识别技术得到突飞猛进的发展。
1、技术新发展
1)将机器学习领域深度学习研究引入到语音识别声学模型训练,使用带RBM预训练的多层神经网络,极大提高了声学模型的准确率。在此方面,微软公司的研究人员率先取得了突破性进展,他们使用深层神经网络模型(DNN)后,语音识别错误率降低了30%,是近20年来语音识别技术方面最快的进步。
2)目前大多主流的语音识别解码器已经采用基于有限状态机(WFST)的解码网络,该解码网络可以把语言模型、词典和声学共享音字集统一集成为一个大的解码网络,大大提高了解码的速度,为语音识别的实时应用提供了基础。
3)随着互联网的快速发展,以及手机等移动终端的普及应用,目前可以从多个渠道获取大量文本或语音方面的语料,这为语音识别中的语言模型和声学模型的训练提供了丰富的资源,使得构建通用大规模语言模型和声学模型成为可能。在语音识别中,训练数据的匹配和丰富性是推动系统性能提升的最重要因素之一,但是语料的标注和分析需要长期的积累和沉淀,随着大数据时代的来临,大规模语料资源的积累将提到战略高度。
2、技术新应用
近期,语音识别在移动终端上的应用最为火热,语音对话机器人、语音助手、互动工具等层出不穷,许多互联网公司纷纷投入人力、物力和财力展开此方面的研究和应用,目的是通过语音交互的新颖和便利模式迅速占领客户群。
目前,国外的应用一直以苹果的siri为龙头。
而国内方面,科大讯飞、云知声、盛大、捷通华声、搜狗语音助手、紫冬口译、百度语音等系统都采用了最新的语音识别技术,市面上其他相关的产品也直接或间接嵌入了类似的技术。








2019-08-14 11:57:52 asrgreek 阅读数 1074
  • 深度学习--几种常见的循环神经网络视频教学(RNN+LSTM...

    深度学习的顶级循环神经网络的工作方式包括 LSTM、GRU 和 RNN. 循环神经网络(RNN)在自然语言处理、语音识别等有很广泛的用途。LSTM和GRU是目前使用最广泛的两个循环神经网络的模型变种。该视频课程内容主要分为三大部分,机器学习神经网络RNN教程、LSTM、GRU。

    1134 人正在学习 去看看 王而川

由于LSTM在序列化建模中的,在声学建模中经常使用LSTM模型。在语音识别中,通常为了获得更低的wer,我们通常使用多层的lstm结构。”多层“就会带来如下显而易见的问题:

  • 模型参数变多,训练慢
  • 梯度信息回流受阻,导致梯度消失

为了解决上述问题,下面我们介绍几种在声学建模中常见的lstm变种。

一、LSTMP

该变种的主要目的是为了减小模型参数。具体结构如下:
在这里插入图片描述
与传统的LSTM相比,LSTMP在记忆块(memory blocks)与模型的输出层之间引入了映射层。具体的公式对比如下:
在这里插入图片描述
需要说明的是:
1、rtr_{t}表示的是recurrent projection,也就是说rtr_{t}会作为下一个时间点各个门的输入;
2、ptp_{t}表示的是non-recurrent projection,这个映射可有可无,对结果影响不大。

通过加入了映射层,模型参数能得到有效减少,模型参数的计算可以参考https://blog.csdn.net/u014665013/article/details/81531620,下面我们给出直观的答案:
假设我们的cell units的大小是256,输入的维数是100,输出的维数是30,那么传统的LSTM参数个数是:在这里插入图片描述结果为:372992

但是加入projection layer之后,假设输出维度为128,的参数个数是:
结果为:270848在这里插入图片描述
模型参数减少了相对(372992-270848)/372992=27.39%。

参考文献:
1、《LONG SHORT-TERM MEMORY BASED RECURRENT NEURAL NETWORK ARCHITECTURES FOR LARGE VOCABULARY SPEECH RECOGNITION》
2、《Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling》

二、Highway LSTM

该变种的主要目的是为了解决多层LSTM网络引起的梯度弥散问题。Highway翻译成中文就是”高速公路“,也就是说Highway LSTM提供了一条”高速公路“,让信息(细胞状态)可以在不同层之间畅通无阻的流通。

具体结构如下:
在这里插入图片描述
通过上图,我们可以看出Highway LSTM增加了一个控制门,叫carry gate(上图中的dt(l+1)d_{t}^{(l+1)}),用来控制低层的细胞状态有多少信息可以传递给高层的细胞状态(这是一种空间上的捷径,具体什么叫空间上的捷径,在下面的Residual LSTM中会详细介绍)。如果carry gate为1,那么就像是一条”高速公路“,低层的细胞状态就可以畅通无阻的流向高层。

与传统的LSTM相比,公式如下:
在这里插入图片描述
从公式对比中我们可以看出,在Highway LSTM,l+1层t时刻的细胞状态不仅取决于l+1层t-1时刻的细胞状态(与传统LSTM相同),而且还取决于l层t时刻的细胞状态(Highway LSTM特有)

参考文献:
1、《Highway long short-term memory RNNs for distant speech recognition》

三、Residual LSTM

通过使用Highway LSTM建模发现,当从3层HLSTM增加到8层时,字错误率(wer)反而上升了,如下:
在这里插入图片描述
这就是所谓的Degration problem,即随着网络深度的增加训练/开发集的错误率不降反增。为了解决这个问题,Residual LSTM被提出。Residual LSTM也是借鉴了Highway LSTM的思想。具体结构如下:

在这里插入图片描述
从图中我们可以看出,
1、Residual LSTM有一条空间上的捷径(对应绿色方块的Shortcut Path)。绿色方块怎么理解呢?它表达的是l层的输入xtlx_{t}^{l}是来自l-1层的输出htl1h_{t}^{l-1}。这里的空间指的是不同层的LSTM之间(论文中空间上的捷径用a spatial shortcut表达)。当然Residual LSTM也有一条时间上的捷径,怎么体现呢?图中l层t时刻的细胞状态依赖于l层t-1时刻的细胞状态,因此说它也提供了一条时间上的捷径(这一点传统LSTM也有,论文中时间上的捷径用a temporal shortcut path表示)
2、与Highway LSTM不同,Highway LSTM通过额外引入了carry gate来限制空间上的捷径的畅通程度。而Residual LSTM则直接使用output gate代替carry gate来限制空间上的捷径的畅通程度。通过这个代替,能有效超过减少10%的参数数量。
3、与Highway LSTM不同,Highway LSTM的时间捷径和空间捷径是应用在同一个对象上,即细胞状态。而Residual LSTM的时间捷径是应用在细胞状态,而空间捷径是应用在输出层。
这样做的好处,引用论文原话为:

Compared with the previous work, high- way LSTM, residual LSTM separates a spatial shortcut path with temporal one by using output layers, which can help to avoid a conflict between spatial and temporal-domain gradient flows.

与传统LSTM相比,公式如下:
在这里插入图片描述
注意,Residual LSTM公式下的xtlx_{t}^{l}就是来自l-1层的输出htl1h_{t}^{l-1}
通过公式我们可以看到,Residual LSTM也有一个映射层,即mtlm_{t}^{l}。与LSTMP不同的是,LSTMP是先通过输出门在做映射,而Residual LSTM是先映射在通过输出门。

作者使用了3,5,10层的Highway LSTM和Residual LSTM做实验,实验结果如下:
在这里插入图片描述
实验结果表明随着层数的加深,Residual LSTM的wer不断地在提升,而Highway LSTM反而变差。说明Residual LSTM能很好的解决Degration problem。

参考文献:
1、《Design of a Deep Recurrent Architecture for Distant Speech Recognition》

2018-05-03 20:20:03 luodongri 阅读数 8517
  • 深度学习--几种常见的循环神经网络视频教学(RNN+LSTM...

    深度学习的顶级循环神经网络的工作方式包括 LSTM、GRU 和 RNN. 循环神经网络(RNN)在自然语言处理、语音识别等有很广泛的用途。LSTM和GRU是目前使用最广泛的两个循环神经网络的模型变种。该视频课程内容主要分为三大部分,机器学习神经网络RNN教程、LSTM、GRU。

    1134 人正在学习 去看看 王而川

目前主流的语音识别都大致分为特征提取,声学模型,语音模型几个部分。目前结合神经网络的端到端的声学模型训练方法主要CTC和基于Attention两种。

本文主要介绍CTC算法的基本概念,可能应用的领域,以及在结合神经网络进行CTC算法的计算细节。

CTC算法概念

CTC算法全称叫:Connectionist temporal classification。从字面上理解它是用来解决时序类数据的分类问题。

传统的语音识别的声学模型训练,对于每一帧的数据,需要知道对应的label才能进行有效的训练,在训练数据之前需要做语音对齐的预处理。而语音对齐的过程本身就需要进行反复多次的迭代,来确保对齐更准确,这本身就是一个比较耗时的工作。

这里写图片描述
图1 “你好”发音的波形示意图

如图1所示,是“你好”这句话的声音的波形示意图, 每个红色的框代表一帧数据,传统的方法需要知道每一帧的数据是对应哪个发音音素。比如第1,2,3,4帧对应n的发音,第5,6,7帧对应i的音素,第8,9帧对应h的音素,第10,11帧对应a的音素,第12帧对应o的音素。(这里暂且将每个字母作为一个发音音素)

与传统的声学模型训练相比,采用CTC作为损失函数的声学模型训练,是一种完全端到端的声学模型训练,不需要预先对数据做对齐,只需要一个输入序列和一个输出序列即可以训练。这样就不需要对数据对齐和一一标注,并且CTC直接输出序列预测的概率,不需要外部的后处理。

既然CTC的方法是关心一个输入序列到一个输出序列的结果,那么它只会关心预测输出的序列是否和真实的序列是否接近(相同),而不会关心预测输出序列中每个结果在时间点上是否和输入的序列正好对齐。
这里写图片描述
图2 ctc预测结果示意图

CTC引入了blank(该帧没有预测值),每个预测的分类对应的一整段语音中的一个spike(尖峰),其他不是尖峰的位置认为是blank。对于一段语音,CTC最后的输出是spike(尖峰)的序列,并不关心每一个音素持续了多长时间。
如图2所示,拿前面的nihao的发音为例,进过CTC预测的序列结果在时间上可能会稍微延迟于真实发音对应的时间点,其他时间点都会被标记会blank。
这种神经网络+CTC的结构除了可以应用到语音识别的声学模型训练上以外,也可以用到任何一个输入序列到一个输出序列的训练上(要求:输入序列的长度大于输出序列)。
比如,OCR识别也可以采用RNN+CTC的模型来做,将包含文字的图片每一列的数据作为一个序列输入给RNN+CTC模型,输出是对应的汉字,因为要好多列才组成一个汉字,所以输入的序列的长度远大于输出序列的长度。而且这种实现方式的OCR识别,也不需要事先准确的检测到文字的位置,只要这个序列中包含这些文字就好了。

RNN+CTC模型的训练

下面介绍在语音识别中,RNN+CTC模型的训练详细过程,到底RNN+CTC是如何不用事先对齐数据来训练序列数据的。
首先,CTC是一种损失函数,它用来衡量输入的序列数据经过神经网络之后,和真实的输出相差有多少。

比如输入一个200帧的音频数据,真实的输出是长度为5的结果。 经过神经网络处理之后,出来的还是序列长度是200的数据。比如有两个人都说了一句nihao这句话,他们的真实输出结果都是nihao这5个有序的音素,但是因为每个人的发音特点不一样,比如,有的人说的快有的人说的慢,原始的音频数据在经过神经网络计算之后,第一个人得到的结果可能是:nnnniiiiii…hhhhhaaaaaooo(长度是200),第二个人说的话得到的结果可能是:niiiiii…hhhhhaaaaaooo(长度是200)。这两种结果都是属于正确的计算结果,可以想象,长度为200的数据,最后可以对应上nihao这个发音顺序的结果是非常多的。CTC就是用在这种序列有多种可能性的情况下,计算和最后真实序列值的损失值的方法。

详细描述如下:

训练集合为S={(x1,z1),(x2,z2),...(xN,zN)}, 表示有N个训练样本,x是输入样本,z是对应的真实输出的label。一个样本的输入是一个序列,输出的label也是一个序列,输入的序列长度大于输出的序列长度。

对于其中一个样本(x,z)x=(x1,x2,x3,...,xT)表示一个长度为T帧的数据,每一帧的数据是一个维度为m的向量,即每个xiRmxi可以理解为对于一段语音,每25ms作为一帧,其中第i帧的数据经过MFCC计算后得到的结果。

z=(z1,z2,z3,...zU)表示这段样本语音对应的正确的音素。比如,一段发音“你好”的声音,经过MFCC计算后,得到特征x, 它的文本信息是“你好”,对应的音素信息是z=[n,i,h,a,o](这里暂且将每个拼音的字母当做一个音素)。

特征x在经过RNN的计算之后,在经过一个softmax层,得到音素的后验概率yykt(k=1,2,3,...n,t=1,2,3,...,T)表示在t时刻,发音为音素k的概率,其中音素的种类个数一共n个, k表示第k个音素,在一帧的数据上所有的音素概率加起来为1。即:

t1Tykt=1,ykt0

这个过程可以看做是对输入的特征数据x做了变换Nw:(Rm)T(Rn)T,其中Nw表示RNN的变换,w表示RNN中的参数集合。

过程入下图所示:
这里写图片描述

以一段“你好”的语音为例,经过MFCC特征提取后产生了30帧,每帧含有12个特征,即xR30×14(这里以14个音素为例,实际上音素有200个左右),矩阵里的每一列之和为1。后面的基于CTC-loss的训练就是基于后验概率y计算得到的。

路径π和B变换

在实际训练中并不知道每一帧对应的音素,因此进行训练比较困难。可以先考虑一种简单的情况,已知每一帧的音素的标签z, 即训练样本为xz,其中z不再是简单的[n,i,h,a,o]标签,而是:

z=[n,n,n,...,nT1,i,i,i,...iT2,h,h,h,...hT3,a,a,a,...,aT4,o,o,o,...,oT5]

T1+T2+T3+T4+T5=T
在我们的例子中, z=[n,n,n,n,n,n,n,i,i,i,i,i,i,h,h,h,h,h,h,h,a,a,a,a,a,a,o,o,o,o,o,o,o]z包含了每一帧的标签。在这种情况下有:
p(z|x)=p(z|y=Nw(x))=yz11yz22yz33....yzTT (1)

该值即为后验概率图中用黑线圈起来的部分相乘。我们希望相乘的值越大越好,因此,数学规划可以写为:

minwlog(yz11.yz22.yz33...yzTT) (2)

subject to: y=Nw(x) (3)

目标函数对于后验概率矩阵y中的每个元素ykt的偏导数为:
log(yz11.yz22.yz33...yzTT)ykt={yz11...yzi1i1.yzi+1i+1....yzTTyz11.yz22.yz33...yzTT,ifk=ziandt=i0

也就是说,在每个时刻t(对应矩阵的一列),目标只与yztt是相关的,在这个例子中是与被框起来的元素相关。

其中Nw可以看做是RNN模型,如果训练数据的每一帧都标记了正确的音素,那么训练过程就很简单了,但实际上这样的标记过的数据非常稀少,而没有逐帧标记的数据很多,CTC可以做到用未逐帧标记的数据做训练。

首先定义几个符号:
L={a,o,e,i,u,uˇ,b,p,m,...}

表示所有音素的集合

π=(π1,π2,π3,...,πT),πiL

表示一条由L中元素组成的长度为T的路径,比如z就是一条路径,以下为几个路径的例子:

π1=(j,j,i,n,y,y,e,e,w,w,u,u,u,r,r,e,e,n,n,r,r,u,u,sh,sh,u,u,i,i)
π2=(n,n,n,n,i,i,i,i,h,h,h,h,a,a,a,a,a,a,a,a,a,o,o,o,o,o,o,o,o,o)
π3=(h,h,h,h,h,h,a,a,a,a,a,a,a,o,o,o,o,n,n,n,n,n,n,i,i,i,i,i,i,i)
π4=(n,i,h,a,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o)
π5=(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,i,h,a,o)
π6=(n,n,n,i,i,i,h,h,h,h,h,a,,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o)

这6条路径中,π1可以被认为是“今夜无人入睡”, π2可以被认为是在说“你好”,π3可以被认为是在说“好你”,π4,π5,π6都可以认为是在说“你好”。

定义B变换,表示简单的压缩,例如:
B(a,a,a,b,b,b,c,c,d)=(a,b,c,d)

以上6条路径为例:
B(π1)=(j,i,n,y,e,w,u,r,e,n,r,u,s,h,u,i)
B(π2)=(n,i,h,a,)
B(π3)=(h,a,o,n,i)
B(π4)=(n,i,h,a,o)
B(π5)=(n,i,h,a,o)
B(π6)=(n,i,h,a,o)

因此,如果有一条路径πB(π)=(n,i,h,a,o),则可以认为π是在说“你好”。即使它是如π4所示,有很多“o”的音素,而其他音素很少。路径π=(π1,π2,...,πT)的概率为它所经过的矩阵y上的元素相乘:

p(π|x)=p(π|y=Nw(x))=p(π|y)=t=1Tyπtt

因此在没有对齐的情况下,目标函数应该为{π|B(π)=z}中所有元素概率之和。 即:
maxwp(z|y=Nw(x))=p(z|x)=B(π)=zp(π|x) (4)

在T=30,音素为[n,i,h,a,o]的情况下,共有C295120000条路径可以被压缩为[n,i,h,a,o]。 路径数目的计算公式为CT1,量级大约为(T1)。一段30秒包含50个汉字的语音,其可能的路径数目可以高达108,显然这么大的路径数目是无法直接计算的。因此CTC方法中借用了HMM中的向前向后算法来计算。

训练实施方法

CTC的训练过程是通过p(z|x)w调整w的值使得4中的目标值最大,而计算的过程如下:
这里写图片描述

因此,只要得到p(z|x)ykt,即可根据反向传播,得到p(z|x)w。下面以“你好”为例,介绍该值的计算方法。

首先,根据前面的例子,找到所有可能被压缩为z=[n,i,h,a,o]的路径,记为{π|B(π)=z}。 可知所有π均有[n,n,n,....,n,i,.....,i,h,.....h,a,....a,o,...,o]的形式,即目标函数只与后验概率矩阵y中表示n,i,h,a,o的5行相关,因此为了简便,我们将这5行提取出来,如下图所示。

这里写图片描述

在每一个点上,路径只能向右或者向下转移,画出两条路径,分别用q和r表示,这两条路径都经过yh14这点,表示这两点路径均在第14帧的时候在发“h”音。因为在目标函数4的连加项中,有的项与yh14无关,因此可以剔除这一部分,只留下与yh14有关的部分,记为{π|B(π)=z,π14=h}

p(z|y)yh14

= B(π)=zp(π|y)yh14

= B(π)=zt=1Tyπttyh14
=B(π)=z,π14=ht=1Tyπttyh14+B(π)=z,π14ht=1Tyπttyh14yh14

=B(π)=z,π14=ht=1Tyπttyh14

这里的q和r就是与yh14相关的两条路径。用q1:13q15:30分别表示qyh14之前和之后的部分,同样的,用r1:13r15:30分别表示ryh14之前和之后的部分.。可以发现,q1:13+h+r15:30r1:13+h+q15:30同样也是两条可行的路径。q1:13+h+r15:30r1:13+h+q15:30qr这四条路径的概率之和为:
yq11..yq1313.yh14.yq1515....yq3030q

+yq11..yq1313.yh14.yr1515....yr3030q1:14+r14:30

+yr11..yr1313.yh14.yq1515....yq3030r1:14+q14:30

+yr11..yr1313.yh14.yr1515....yr3030r

=(yq11....yq1313+yr11.....yr1313).yh14.(yq1515....yq1530+yr1515....yr3030)

可以发现,该值可以总结为:(前置项).yh14.(后置项)。由此,对于所有的经过yh14的路径,有:

B(π)=z,π14=ht=1Tyπtt=().yh14.(后置项)$

定义:
α(14)(h)=().yh14=B(π1:14)=[n,i,h]t=1tyπtt

该值可以理解为从初始到yh14这一段里,所有正向路径的概率之和。并且发现,α14(h)可以由α13(h)α13(i)递推得到,即:
α14(h)=(α13(h)+α13(i))yh14

该递推公式的含义是,只是在t=13时发音是“h”或“i”,在t=14时才有可能发音是“h”。那么在t=14时刻发音是“h”的所有正向路径概率α14(h)就等于在t=13时刻,发音为“h”的正向概率α13(h)加上发音为“i”的正向概率α13(i),再乘以当前音素被判断为“h”的概率yh14。由此可知,每个αt(s)都可以由αt1(s)αt1(s1)两个值得到。α的递推流程如下图所示:

这里写图片描述

即每个值都由上一个时刻的一个或者两个值得到,总计算量大约为2.T.。类似的,定义βt(s), 递推公式为:

β14(h)=(β15(h)+β15(a))yh14

因此有:

B(π)=z,π14=ht=1Tyπtt=().yh14.(后置项)$

=α14(h)yh14.yh14.β14(h)yh14

=α14(h)β14(h)yh14

然后:

p(z|y)yh14

= B(π)=z,π14=ht=1Tyπttyh14

= α14(h)yh14.yh14.β14(h)yh14yh14

=α14(h)β14(h)(yh14)2

得到此值后,就可以根据反向传播算法进行训练了。
可以看到,这里总的计算量非常小,计算αβ的计算量均大约为(2.T.),(加法乘法各一次),得到αβ之后,在计算对每个ykt的偏导值的计算量为(3.T.),因此总计算量大约为(7.T.),这是非常小的,便于计算。

目前,深度学习的算法已经大规模应用于腾讯云的语音识别产品中。腾讯云拥有业内最先进的语音识别技术,基于海量的语音数据,积累了数十万小时的标注语音数据,采用LSTM,CNN,LFMMI,CTC等多种建模技术,结合超大规模语料的语言模型,对标准普通话的识别效果超过了97%的准确率。腾讯云的语音技术,应用涵盖范围广泛,具备出色的语音识别、语音合成、关键词检索、静音检测、语速检测、情绪识别等能力。并且针对游戏,娱乐,政务等几十个垂直做特殊定制的语音识别方案,让语音识别的效果更精准,更高效,全面满足电话客服质检、语音听写、实时语音识别和直播字幕等多种场景的应用。

2018-01-05 10:58:01 w_manhong 阅读数 14626
  • 深度学习--几种常见的循环神经网络视频教学(RNN+LSTM...

    深度学习的顶级循环神经网络的工作方式包括 LSTM、GRU 和 RNN. 循环神经网络(RNN)在自然语言处理、语音识别等有很广泛的用途。LSTM和GRU是目前使用最广泛的两个循环神经网络的模型变种。该视频课程内容主要分为三大部分,机器学习神经网络RNN教程、LSTM、GRU。

    1134 人正在学习 去看看 王而川

语音识别对特征参数有如下要求:

1. 能将语音信号转换为计算机能够处理的语音特征向量

2. 能够符合或类似人耳的听觉感知特性

3. 在一定程度上能够增强语音信号、抑制非语音信号

常用特征提取方法有如下几种:

(1)线性预测分析(LinearPredictionCoefficients,LPC)

    拟人类的发声原理,通过分析声道短管级联的模型得到的。假设系统的传递函数跟全极点的数字滤波器是相似的,通常用12-16个极点就可以描述语音信号的特征。所以对于n时刻的语音信号,我们可以用之前时刻的信号的线性组合近似的模拟。然后计算语音信号的采样值和线性预测的采样值。并让这两者之间达到均方的误差(MSE)最小,就可以得到LPC。

(2)感知线性预测系数(PerceptualLinearPredictive,PLP)

    一种基于听觉模型的特征参数。该参数是一种等效于LPC的特征,也是全极点模型预测多项式的一组系数。不同之处是PLP是基于人耳听觉,通过计算应用到频谱分析中,将输入语音信号经过人耳听觉模型处理,替代LPC所用的时域信号,这样的优点是有利于抗噪语音特征的提取。

(3)Tandem特征和Bottleneck特征

    这是两种利用神经网络提取的两类特征。Tandem特征是神经网络输出层节点对应类别的后验概率向量降维并与MFCC或者PLP等特征拼接得到。Bottleneck特征是用一种特殊结构的神经网络提取,这种神经网络的其中一个隐含层节点数目比其他隐含层小的多,所以被称之为Bottleneck(瓶颈)层,输出的特征就是Bottleneck特征。

(4)基于滤波器组的Fbank特征(Filterbank)

    亦称MFSC,Fbank特征的提取方法就是相当于MFCC去掉最后一步的离散余弦变换,跟MFCC特征相比,Fbank特征保留了更多的原始语音数据。

(5)线性预测倒谱系数(LinearPredictiveCepstralCoefficient,LPCC)

    基于声道模型的重要特征参数。LPCC是丢弃了信号生成过程中的激励信息。之后用十多个倒谱系数可以代表共振峰的特性。所以可以在语音识别中取得很好的性能。

(6)梅尔频率倒谱系数(MelFrequencyCepstrumCoefficient,MFCC)

     基于人耳听觉特性,梅尔频率倒谱频带划分是在Mel刻度上等距划分的,频率的尺度值与实际频率的对数分布关系更符合人耳的听觉特性,所以可以使得语音信号有着更好的表示。1980年由Davis和Mermelstein搞出来的。从那时起。在语音识别领域,MFCC可谓是鹤立鸡群,一枝独秀。

Q: MFCC为何一枝独秀

    人通过声道产生声音,声道的shape决定了发出怎样的声音。声道的shape包括舌头,牙齿等。如果我们可以准确的知道这个形状,那么我们就可以对产生的音素phoneme进行准确的描述。声道的形状在语音短时功率谱的包络中显示出来。而MFCC就是一种准确描述这个包络的一种特征。

声谱图

    处理语音信号,如何去描述它很重要,因为不同的描述方式放映它不同的信息,而声谱图的描述方式是最利于观测和理解的。

    由上图可知,这段语音被分为很多帧,每帧语音都对应于一个频谱(通过短时FFT计算),频谱表示频率与能量的关系。在实际使用中,频谱图有三种,即线性振幅谱、对数振幅谱、自功率谱(对数振幅谱中各谱线的振幅都作了对数计算,所以其纵坐标的单位是dB(分贝)。这个变换的目的是使那些振幅较低的成分相对高振幅成分得以拉高,以便观察掩盖在低幅噪声中的周期信号)。

 

                        

    先将其中一帧语音的频谱通过坐标表示出来,如上图(a)。旋转90度,得到图(b)。把这些幅度映射到一个灰度级表示,得到了图(c)。这样操作的原因是为了增加时间维度,,得到一个随着时间变化的频谱图,这个就是描述语音信号的声谱图(spectrogram)。这样就可以显示一段语音而不是一帧语音的频谱,而且可以直观的看到静态和动态的信息。

       

倒谱分析(CepstrumAnalysis)

    下面是一个语音的频谱图。峰值就表示语音的主要频率成分,我们把这些峰值称为共振峰(formants),而共振峰就是携带了声音的辨识属性,用它就可以识别不同的声音。因此,需要把它提取出来。要提取的不仅是共振峰的位置,还得提取它们转变的过程。所以我们提取的是频谱的包络(SpectralEnvelope)。这包络就是一条连接这些共振峰点的平滑曲线。

                      

    由上图可以看出,原始的频谱由两部分组成:包络和频谱的细节。因此需要把这两部分分离开,就可以得到包络了。按照下图的方式进行分解,在给定logX[k]的基础上,求得logH[k]和logE[k]满足logX[k]=logH[k]+logE[k]。

     

    由上面这个图我们可以看到,包络主要是低频成分,而高频主要是频谱的细节。把它俩叠加起来就是原来的频谱信号了。即,h[k]是x[k]的低频部分,因此将x[k]通过一个低通滤波器就可以得到h[k]了,也就是频谱的包络。

 

    以上解卷过程的专业术语叫做同态信号处理,(另一种方法为基于线性变换)。语音本身可以看成是声道冲击信息(包括话者个性信息、语义信息,表现为频谱低频成分)经过声门激励的一个响应函数,在时域上表现为卷积形式。为将二者分离开来,求得声道共振特征和基音周期,需要把这种非线性问题转化为线性问题第一步通过FFT将其变成了乘性信号(时域的卷积相当于频域的乘积);第二步通过取对数将乘性信号转化为加性信号;第三步进行逆变换,使其恢复为卷性信号。此时,虽然前后均是时域序列,但它们所处的离散时域显然不同,所以后者称为倒谱频域。计算过程如下图所示。

 

附上MFCC求取流程:https://blog.csdn.net/xiaoding133/article/details/8106672

 

CTC语音识别

阅读数 764

没有更多推荐了,返回首页