星空体育·(StarSky Sports)官方网站-星空官方认证

深度学习案例教程教案第9章语音识别原理docx-星空体育官方网站

新闻资讯
质量为本、客户为根、勇于拼搏、务实创新

深度学习案例教程教案第9章语音识别原理docx

日期:2025-05-30 浏览: 

  (p2)首先我们先学习一下语音识别原理,语音识别,也被称为自动语音识别,其目标是将人类的语音转换为文字。

  从语音识别的应用方式来看,语音应用经常被分为离线语音识别,和实时在线语音识别两大类。

  离线语音识别:指包含语音的音频文件已经存在,需使用语音识别应用对音频的内容进行整体识别这样的情况。典型应用有音视频会议记录转写、音频内容分析及审核、视频字幕生成等。

  实时在线语音识别:指包含语音的实时音频流,被连续不断地送入语音识别引擎,过程中获得的识别结果即时返回给调用方。典型应用有手机语音输入法、交互类语音产品(如智能音箱、车载助手)、会场同声字幕生成和翻译、网络直播平台实时监控、电话客服实时质量检测等。

  声音(sound)是由物体振动产生的声波。是通过介质,比如:空气或固体、液体来传播的。红白机,由电流带动主板上的8bit蜂鸣器,就可以产生简单朴素的音乐。电流控制蜂鸣器振动,振动的快,音阶就高;反之则低,同一时间点只有一种频率,所以听起来十分的朴素简单。(如果人的说话声音和蜂鸣器一样,语音识别将变得很简单)

  人说话的声音,对比蜂鸣器就会复杂很多,但是基本原理还是振动,从生物学的角度来看,是气流通过声带、咽喉、口腔、鼻腔等发出声音,同一时间内,会产生不同频率的是振动;从信号的角度来看,不同位置的震动频率不一样,最后的信号是由基频和一些谐波构成。

  人发出声频率在100Hz到10000Hz范围内。同一时间内一段人声会混杂着多组不同频率的波。在振动学里认为,一个振动产生的波是一个,具有一定频率的,振幅最大的,正弦波叫基波。这些高于基波频率的小波就叫作谐波。

  比如第一个(音位,音素),这是声音的最基本单位,每个词语token的声音由多个音位组成。

  第2个(字位),这是每个单词书写最基本的单位,简单来说:英文的字位可以认为是词缀,由[26个英文字母+空格+标点符号]组成。中文的字位是就是汉字

  第3个,词。英文可以用单词作为语音识别的最基本单位,但包括中文在内的很多语言无法使用词作为最基本的单位(词的数量太过于庞大,词之间难于分隔等)

  第5个bytes字节,用字节的序列来表示计算机中的每个字符(比如使用utf-8对字符编码),用字节作为语音识别的基本单位可以让是识别系统将不同的语言统一处理,和语言本身无关。

  (p5)根据基本的单元,我们需要做语音预处理。那具体这么做呢?在进行语音识别的时候,最原始的输入是一个音频文件。将音频文件读取到程序后,它们是一系列离散的采样点,通常采样率是16k/8k,即一秒钟采样16000/8000个点,每个采样点表示该时刻声音的振幅。在这个采样率下,一条只有几秒钟的输入音频,其序列长度也会非常长,且每个采样点所包含的语音信息比较少,因此原始音频不适合直接作为模型的输入。无论是传统方法的语音识别技术还是基于神经网络的语音识别技术,都需要进行语音的预处理。

  其中,预加重,分帧,加窗都是为快速傅立叶变换做准备的。这样做会使得傅立叶变换转换后的音频的质量更高。

  step1预处理。格式转换、压缩编解码、音频数据抽取、声道选择、重采样,FBank特征提取等等。其中常见的识别引擎和模型采样率一般为8kHz、16kHz。

  step2话音检测与断句。对于离线语音识别应用,断句模块的作用是快速过滤并切分出音频文件中的人声片段,且尽最大可能保证每个片段都为完整的一句话;对于实时在线语音识别应用,断句模块则需要能够从一个持续的语音流中,第一时间检测出用户什么时候开始说话(也称为起点检测),以及什么时候说完(也称为尾点检测)。

  step3音频场景分析。除断句外,由于一些应用本身的复杂性,导致原生的音频在被送入识别引擎之前,还需要进一步进行分析和过滤,我们把这类统称为音频场景分析。一般情况语种识别也会放在这里。

  关于语音识别的研究最早可追溯到20世纪50年代,三个BellLabs的研究人员开发了一个叫做Audrey的系统用来识别数字,并且只能识别固定的某个人说的数字.早期的语音识别系统只能支持单个说话者和十几个单词的识别.现在的语音识别体系相比于早期已经进步了不少,他们能够支持多个说话者,能够识别数以万计的单词以及多个语种,比如中文,英文,法文,甚至是各地的方言.

  语音识别必不可缺的原材料当然是语音啦.我们都知道计算机本质上只能处理数字,所以为了让计算机能够识别语音,首先呢,我们会借助麦克风将人说的话记录下来,这样语音就从物理声音转换成了电信号.然后我们再通过模拟-数字转换器将语音从电信号转换成数字信号.这样一来,我们就可以用模型把语音转换成文本啦.

  (p8)说到语音识别系统,我们不得不提的一个算法就是HMM隐马尔可夫模型.从20世纪80年代隐马尔可夫模型开始崭露头角一直到21世纪,隐马尔可夫模型在语音识别领域一直独占鳌头.虽然现在基于深度学习的端到端语音模型在逐渐兴起,但是目前市面上我们能接触到的在线语音识别系统还是在使用隐马尔可夫模型作为语音识别的理论基础.隐马尔可夫模型基于这样一个假设,当我们把连续的语音信号切分成极小的片段,比如10ms.在这样的情况下,一小段语音信号可以被合理的近似认为是一个连续的过程,也就是说在这个过程中,统计性质是不随时间变化的.

  在一个典型的基于隐马尔可夫模型语音识别体系,连续的语音信号被切分为以20-30ms为单位长度的碎片.「频谱图」尝试从频率的角度去刻画语音信号碎片.通常来说,将语音信号转换成频谱图是进行语音特征提取的第一步.在这一步,我们将语音碎片转换成对应的实数向量,称之为「倒谱系数」,这个向量维度一般很低,有时甚至少于10维.当然更准确的语音识别体系使用的向量也许会有32维甚至更多.隐马尔可夫模型最终连续输出一系列的这些向量.

  为了把语音转成文本,一组向量会被转成一个或多个「音素」-语音识别的最小单位.这个计算需要训练,因为一个「音素」的声音会随着说话者的不同而变化.甚至同一个说话者在不同的语句中声音也是不同的.我们需要一个特定的算法去决定这一系列的音素最有可能是在说哪个单词.

  整个基于隐马尔可夫模型的语音识别的系统需要大量的计算力,为了解决这一问题,在许多现代的语音识别体系,运用神经网络去进行特征转换和减少特征维度.另外,声音活动检测器通过剔除语音信号中最有可能静音的地方,也可以用来减少语音信号,从而避免语音识别系统在不必要的语音片段上浪费时间。

  (p9)在21世纪早期,在语音识别领域,传统的统计方法例如我们上面浓墨重彩提到的隐马尔科夫模型任然占主导地位,然而到了今天,许多语音识别的概念已经被深度学习的方法取代。比如长短期记忆网络LSTM,它是一个循环神经网络,在1997年推出。长短时记忆循环网络避免了梯度消失的问题,它特别擅长长时记忆。这个特性毫无疑问对于语音识别来说是重要的。在2007年,由CTC训练的长短时记忆网络开始在特定的应用上超过传统的语音识别方法。在2015年,谷歌的语音识别声称通过CTC训练的长短时记忆网络,使得自己的语音识别性能上升了49%。

  在语音识别的漫长历史中,不管是浅层或者深层神经网络,都已经在20世纪80年代,90年代以及21世纪的几年里,得到深入的探索。但是这些方法从来没有打败过通过区别训练语音生成模型:也就是高斯混合模型/隐马尔可夫模型(GMM-HMM)技术。大量的关键性困难阻止了神经网络在语音识别领域的发展。比如梯度消失问题,比如在神经预测模型中弱时序相关的结构。另外还有缺乏大量的数据以及今天超强的计算能力。

  随着大数据时代的来临以及计算能力的快速升级,深度学习模型在语音识别领域也表现得越来越好。在2017年,微软研究者在电话录音语音识别任务中,到达了人类历史的里程碑。大量的深度学习模型被用来去优化语音识别的准确率。在同一个标准数据集上,IBM波士顿语音团队声称他们的语音识别系统的错误率是人类自己识别错误率的1/4。

  随着人工智能的发展以及容易被采集的语音数据的增多,有很大的可能性语音识别将会成为接下来人工智能领域研究的热点。

  (p10)同学们大家好,本节课我们来学习传统语音识别方法。通常,?语音识别过程大致分为两步:?

  第1步,?首先对语音信号提取特定的声学特征,?然后对声学特征进行“学习”或者说是“训练”,?即建立识别基本单元的声学模型,和进行语言语法分析的语言模型;?

  第2步是“识别”,?根据识别系统的类型选择能够满足要求的识别方法,?采用语音分析方法分析出这种识别方法所要求的语音特征参数星空体育登录入口 星空体育在线官网,?按照一定的准则和测度与系统模型进行比较,?通过判决得出识别结果.

  (p11)从语音识别系统的构成来讲,?一套完整的语音识别系统包括:预处理、特征提取、声学模型、语言模型以及搜索算法等模块,?其结构示意图如图所示.?其中较为重要的特征提取、声学模型和语言模型.

  1预处理包括预滤波、采样、模数转换、分帧加窗、端点检测等操作.?其中,?信号分帧是将数字化后的语音信号分成短时信号作为识别的基本单位.?这主要是因为语音信号是非平稳信号,?且具有时变特性,?不易分析;?但其通常在短时间范围内其特性基本不变,?具有短时平稳性,?可以用来分析其特征参数,这个时间一般为10–30?ms.但是不同语言的加窗的宽度是不一样的,需要根据语言的特点来设定。另外,每个语言中,同样的发音可能代表很多个词语,所以还需要根据上下文来联合计算出当前信号对应的文字,这一点在深度学习中表现会好很多。

  2搜索模块是指在训练好声学模型和语言模型后,根据字典搜索最优路径,?即最可能的输出词序列.?传统的语音识别解码建立在加权有限状态转换所构成的动态网络上,?将HMM状态、词典和语法等结合起来.?目前端到端模型中主流的搜索算法为Beam?Search等。

  (p12)通常,?在进行语音识别之前,?需要根据语音信号波形,提取有效的声学特征.?特征提取的性能对后续语音识别系统的准确性极其关键,?因此需要具有一定的鲁棒性和区分性.?目前语音识别系统常用的声学特征有梅尔频率倒谱系数(简称,MFCC)、感知线性预测系数(简称,?PLP)、线性预测倒谱系数(简称,?LPCC)、以及梅尔滤波器组系数等等.

  MFCC是最为经典的语音特征,?其提取过程如图所示.?MFCC的提取模仿了人耳的听觉系统,?计算简单,低频部分也有良好的频率分辨能力,?在噪声环境下具有一定的鲁棒性.?因此,?现阶段语音识别系统大多仍采用MFCC作为特征参数,?并取得了不错的识别效果。

  (p13)语音的特征提取可以把音频从时域转换到频域,单纯的时域数据不能直观反映数据的特点以及包含的信息,那就需要将时域信息转化为频域信息。频域信息简单点来讲就是来计算信号的频率,对于简单的sin函数,可以有一个频率,但是复杂的波形就需要通过傅立叶变化来得到不同频率的能量,也就是说一个波形可能存在多个频率叠加。另外,我们一整段的音频就可以直接得到不同的频率能量了,但是我们语音中,不同时间讲话的频率是不同的,所以还需要在不用时间上,提取不同频率的能量,就是需要做加窗的傅立叶变换。提取完了之后,大家可以看到,从上面的音频数据转化为下面的频域数据了。频域图里面,横坐标还是时间,纵坐标是频率,具体数值通过每个位置像素的颜色来表示。数据展示的维度也比上面的多的,这样信息就更加丰富。

  (p14)接下来,我们来做的是,声学模型。声学模型在语音特征与音素之间建立映射关系,?即给定模型后产生语音波形的概率。也就是说,需要告诉模型,这个声音特征,对应的是哪个字,不是简单告诉他就好了,而是需要通过计算、映射,找到他们之间的关系。声学模型的输入是语音信号经过特征提取后,得到的特征向量序列。声学模型是整个语音识别系统中最重要的部分,?只有学好了发音,?才能顺利和发音词典、语言模型相结合得到较好的识别性能.

  GMM-HMM也就是高斯混合-隐马尔可夫模型,是最为常见的一种声学模型,?该模型利用HMM对时间序列的建模能力,?描述语音如何从一个短时平稳段过渡到下一个短时平稳段;?此外,?HMM的隐藏状态和观测状态的数目互不相干,?可以解决语音识别中输入输出不等长的问题.?该声学模型中的每个HMM都涉及到3个参数:?初始状态概率、状态转移概率和观测概率,?其中观测概率依赖于特征向量的概率分布,?然后,采用高斯混合模型进行建模.

  基于高斯混合的声学模型在语音识别领域有很重要的地位,?其结构简单且训练成熟,?训练速度也相对较快.?然而该模型中的GMM忽略时序信息,?每帧之间相对孤立,?对上下文信息利用并不充分.?且随着数据量的上升,?GMM需要优化的参数急剧增加,?这给声学模型带来了很大的计算负担,?浅层模型也难以学习非线性的特征变换.

  语音识别技术已经出现很长的时间,在深度学习技术没有发展之前,用传统的方法也可以比较有效地进行语音识别。

  经典的语音识别概率模型,分为声学模型和语言模型两部分,先将语音转换为音素,再将音素转换为单词。

  优点就是,速度快。因为传统的方法一般计算量不是很大,所以计算快,这样就可以部署在嵌入式设备。如果在一些精度不需要很高的地方使用,效果还是很不错的。

  在深度学习中,对语音识别的处理一般使用seq2seq结构的模型,而seq2seq结构有LAS、CTC、RNN-T、MoChA等结构。下面我们介绍以下这几个结构。

  (p16)LAS模型是一个seq2seq的结构的模型,他由3部分组成,其中:

  Listen(是一个encoder结构,)这部分可以使用多种网络结构,主要作用是进行注意力机制和过滤噪声等工作,encoder可以是CNN、LSTM、BILSTM、CNN+RNN、Self-Attention或多层上述的组合结构等。

  Attend就是一般的Attention结构,由encoder的输出和decoder(RNN)上一时刻的输入变换后,经过点乘或相加得到。

  Spell(是一个decoder结构)他一般是RNN或者LSTM结构,这部分可以认为是模型中的语言模型,因此LAS可以不在模型之后添加其他的语言模型,但是再接一个语言模型会得到更好的效果。

  2.Attention过程:将decoder上一时刻的输出和encoder的每个输出分别做match得到每个encoder输出的权重参数,然后对权重参数进行softmax,最后将权重参数作为权重,对隐藏层参数进行加权求和得到语义变量。

  3.将上一步的语义变量作为decoder(RNN),并将decoder结果作为LAS当前时刻的输出返回。

  因为语音识别的数据量很大,因此在LAS的encoder内往往需要对数据进行下采样的操作,从而降低数据维度,在RNN中,一般使用如下两种方式进行下采样:

  第2个技术是,Beamsearch。这个是用来选择最优匹配token的方法,对于一些语言模型,词汇在模型中以树状方式储存,当token来识别文字时,会根据概率逐层获取文字。如何选择最优路线匹配文字就是一个重要的问题,如果每一层都按照概率最大来选择,并不一定会得到综合概率最大的匹配的文字。比如,第一层概率稍微大一点的分支中,后面的概率都很小,反而第一层概率小一点的分支,后面的概率都很大,于是综合概率就更大了。为了避免这种情况,Beamsearch采用多条路线同时计算的方式,最后选择综合概率最大的文字,其中beamsize就表示线路的数量。

  一种是上文提到的,将decoder的当前时刻隐藏层数据在encoder的输出上做Attention,并将此生成的语义变量作为下一时刻decoder(RNN)的输入;

  另一种是将decoder的当前时刻隐藏层和在encoder的输出上做Attention,并将此生成的语义变量和当前时刻的隐藏层作为当前时刻decoder(RNN)的输入放入RNN中

  这两种注意力的区别在,注意力得到的结果是下一个时间使用还是当前时间使用。第一篇拿Seq2Seq做语音识别的论文,用的是二者的合体版本。

  (p19)下面我们来介绍以下CTC模型,CTC模型主要用来解决输入序列和输出序列难以一一对应的问题,和LAS相比,CTC能够实现实时识别的功能。

  举例来说,在语音识别中,我们希望音频中的音素和翻译后的字符可以一一对应,这是训练时一个很天然的想法。但是要对齐是一件很困难的事,如图所示,有人说话快,有人说话慢,每个人说话快慢不同,不可能手动地对音素和字符对齐,这样太耗时。所以需要设计一种模型,能够自动将序列一一对应。

  (p20)那CTC模型是如何解决这个问题的呢?我们下面看一下CTC模型的构造方式。首先,模型先通过一个encoder结构将输入的token转化为一个高维隐层嵌入,然后对于每一个token的输出使用一个分类器(全连接网络)进行分类,最终的到每个token对应的预测结果;虽然CTC网络没有Attentio

  《静女》《涉江采芙蓉》《鹊桥仙》爱情诗联读+课件26张++2023—2024学年统编版高中语文必修上册.pptx

  原创力文档创建于2008年,本站为文档C2C交易模式,即用户上传的文档直接分享给其他用户(可下载、阅读),本站只是中间服务平台,本站所有文档下载所得的收益归上传人所有。原创力文档是网络服务平台方,若您的权利被侵害,请发链接和相关诉求至 电线) ,上传者