语音识别技术_语音识别技术成本 - CSDN
精华内容
参与话题
  • 5分钟弄懂语音识别技术原理

    万次阅读 多人点赞 2018-02-08 22:49:56
    文/张俊博知乎链接:https://www.zhihu.com/question/20398418/answer/18080841简要给大家介绍一下语音怎么变文字的吧。希望这个介绍能让所有同学看懂。首先,我们知道声音实际上是一种波。常见的mp3、wmv等格式都是...

    文/张俊博

    知乎链接:https://www.zhihu.com/question/20398418/answer/18080841


    简要给大家介绍一下语音怎么变文字的吧。希望这个介绍能让所有同学看懂。


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


    640?wx_fmt=png&wxfrom=5&wx_lazy=1

    在开始语音识别之前,有时需要把首尾端的静音切除,降低对后续步骤造成的干扰。这个静音切除的操作一般称为VAD,需要用到信号处理的一些技术。要对声音进行分析,需要对声音分帧,也就是把声音切开成一小段一小段,每小段称为一帧。分帧操作一般不是简单的切开,而是使用移动窗函数来实现,这里不详述。帧与帧之间一般是有交叠的,就像下图这样:

    640?wx_fmt=png&wxfrom=5&wx_lazy=1

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


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


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

    640?wx_fmt=png

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

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

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


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

    第一步,把帧识别成状态(难点);

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

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


    如下图所示:

    640?wx_fmt=png

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


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

    640?wx_fmt=png

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


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


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

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

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


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


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


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

    640?wx_fmt=png

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

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

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

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


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


    以上介绍的是传统的基于HMM的语音识别。事实上,HMM的内涵绝不是上面所说的“无非是个状态网络”那么简单。以上的文字只是想让大家容易理解,并不追求严谨。

    展开全文
  • 语音识别技术构架

    千次阅读 2019-05-06 18:58:28
    很好的一篇文章,没有任何公式,但是把语音识别技术框架说的很清楚,适合刚接触语音识别的小伙伴看一下。我转来备份一下。 语音交互将会成为新的入口,也是各大公司务必争夺的资源之一,资源是指数据,不是技术,...

    转自:https://coffee.pmcaff.com/article/1055672606603392/pmcaff?utm_source=forum&from=search

    很好的一篇文章,没有任何公式,但是把语音识别的技术框架说的很清楚,适合刚接触语音识别的小伙伴看一下。我转来备份一下。

    语音交互将会成为新的入口,也是各大公司务必争夺的资源之一,资源是指数据,不是技术,因为技术会开放,而有价值的有标注的数据才是制胜法宝。

    所以,pm们需要了解语音识别技术的基础,总有一天你会用到,并且这一天不会太远。

    我会从以下几个方面介绍语音识别:

    fetch_filecf846290fcb9f703325107de65c57e25-picture

    语音识别基础.png

     

     

    一、 语音识别的基础概念

    1. 概念

    自动语音识别(Automatic Speech Recognition,ASR)技术是一种将人的语音转换为文本的技术。

    这项技术被当做是可以使人与人、人与机器更顺畅交流的桥梁,已经在研究领域活跃了50多年。

    2. 发展

    ASR在近几年的流行,与以下几个关键领域的进步有关:

    • 摩尔定律持续有效
      使得多核处理器、通用计算图形处理器GPGPU、CPU/GPU集群等技术,为训练复杂模型提供了可能,显著降低了ASR系统的错误率。
    • 大数据时代
      借助互联网和云计算,获得了真实使用场景的大数据训练模型,使得ASR系统更具鲁棒性(健壮性、稳定性)。
    • 移动智能时代
      移动设备、可穿戴设备、智能家居设备、车载信息娱乐系统,变得越来越流行,语音交互成为新的入口。

    3. 研究领域分类

    根据在不同限制条件下的研究任务,产生了不同的研究领域。如图:

    fetch_file50b36d84e20c7551062fd06ee5d6fbf9-picture

    研究领域分类

     

    4. 语音识别任务分类

    根据不同任务,语音识别可分为4类:

    fetch_file04a0efaab0aa2486f0a62d29c331307d-picture

    任务分类

     

    5. 应用

    fetch_file7f93b6ed70f710d461bbd40282d5bb12-picture

    语音交互作为新的入口,主要应用于上图中的两大类:帮助人与人的交流和人与机器的交流。

    • 帮助人与人的交流 HHC
      应用场景如,如翻译系统,微信沟通中的语音转文字,语音输入等功能。

      语音到语音(speech-to-speech,S2S)翻译系统,可以整合到像Skype这样的交流工具中,实现自由的远程交流。

      S2S组成模块主要是,语音识别-->机器翻译-->文字转语音,可以看到,语音识别是整个流水线中的第一环。

    • 帮助人与机器的交流 HMC
      应用场景如,语音搜索VS,个人数码助理PDA,游戏,车载信息娱乐系统等。

     

    6. 对话系统

    要注意的是,我们上面所说的应用场景和系统讨论,都是基于【语音对话系统】的举例。

    语音识别技术只是其中关键的一环,想要组建一个完整的语音对话系统,还需要其他技术。

    语音对话系统:(包含以下系统的一个或多个)
    1)语音识别系统: 语音-->文字
    2)语义理解系统:提取用户说话的语音信息
    3)文字转语音系统:文字-->语音
    4)对话管理系统:1)+ 2)+3)完成实际应用场景的沟通

    fetch_fileed822d1a2866f3a3b871342750e58c36-picture

    语音对话系统

    二、语音识别系统

    语音识别问题,其实是一个模式识别的问题。给你一段声波,机器判别是a还是b。

    这个过程有两大块,一个是生成机器能理解的声音向量。第二个是通过模型算法识别这些声音向量,最终给出识别结果。

    每一块中间都有很多细小的步骤,我们后面会提到。

    1. 系统架构概述

    下图是语音识别系统的组成结构,主要分4部分:
    信号处理和特征提取、声学模型(AM)、语言模型(LM)和解码搜索部分。

    fetch_filed4f7d6b58b5ab02862826c119b1d19dd-picture

    语音识别系统的架构

     

    左半部分可以看做是前端,用于处理音频流,从而分隔可能发声的声音片段,并将它们转换成一系列数值。

    声学模型就是识别这些数值,给出识别结果。后面我们会详细解释。

    右半边看做是后端,是一个专用的搜索引擎,它获取前端产生的输出,在以下三个数据库进行搜索:一个发音模型,一个语言模型,一个词典。

    【发音模型】表示一种语言的发音声音 ,可通过训练来识别某个特定用户的语音模式和发音环境的特征。
    【语言模型】表示一种语言的单词如何合并 。
    【词典】列出该语言的大量单词 ,以及关于每个单词如何发音的信息。

     

    a)信号处理和特征提取:
    以音频信号为输入,通过消除噪声和信道失真对语音进行增强,将信号从时域转化到频域,并为后面的声学模型提取合适的有代表性的特征向量。

    b)声学模型:
    将声学和发音学的知识进行整合,以特征提取部分生成的特征为输入,并为可变长特征序列生成声学模型分数。

    c)语言模型:
    语言模型估计通过训练语料学习词与词之间的相互关系,来估计假设词序列的可能性,又叫语言模型分数。如果了解领域或任务相关的先验知识,语言模型的分数通常可以估计的更准确。

    d)解码搜索:
    综合声学模型分数与语言模型分数的结果,将总体输出分数最高的词序列当做识别结果。

    2. 语音识别技术详解

    看完上面的架构图,你应该有个大致的印象,知道整个语音识别是怎么回事儿了。下面我们详细说一些重要的过程。

    2.1 语音识别单元

    我们的语音内容,由基本的语音单元组成。选择要识别的语音单元是语音识别研究的第一步。

    就是说,你要识别的结果是以什么为基础单位的?是单词还是元音字母?

    语音识别单元有单词 (句) 、音节和音素三种,具体选择哪一种,根据具体任务来定,如词汇量大小、训练语音数据的多少。

    fetch_fileae92b79a9a83af065fe5acf90d21aba1-picture

    语音识别单元

    【音素】:在汉语里,最小的语音单位是音素,是从音色的角度分出来的。

    【音节】:一个音素单独存在或几个音素结合起来,叫做音节。可以从听觉上区分,汉语一般是一字一音节,少数的有两字一音节(如“花儿”)和两音节一字。

    fetch_file9f6ad534e28ddfaff8433c6f6c87a23f-picture

    语音识别单元

    2.2 信号的数字化和预处理

    接下来就要将收集到的语音转化为一系列的数值,这样机器才可以理解。

    1)数字化

    声音是作为波的形式传播的。将声波转换成数字包括两个步骤:采样和量化。

    fetch_file5b87e304b32a267c5b8225019060c9b9-picture

    为了将声波转换成数字,我们只记录声波在等距点的高度,这被称为采样(sampling)。

    采样定理(Nyquist theorem)规定,从间隔的采样中完美重建原始声波——只要我们的采样频率比期望得到的最高频率快至少两倍就行。

     

    fetch_file62d81428af84807ab2825a95ae4c07ee-picture

     

    经过采样,我们获取了一系列的数字,这些数字才可以在机器上进行建模或计算。

    我们每秒读取数千次,并把声波在该时间点的高度用一个数字记录下来。把每一秒钟所采样的数目称为采样频率或采率,单位为HZ(赫兹)。

    「CD 音质」的音频是以 44.1khz(每秒 44100 个读数)进行采样的。但对于语音识别,16khz(每秒 16000 个采样)的采样率就足以覆盖人类语音的频率范围了。

     

    2)采样信号预处理

    这里的预处理主要指,分帧处理。
    因为语音信号是不平稳的、时长变化的,如下图:

    fetch_file38e5db9f8992aa9309687d73adb8731a-picture

    我们把它分隔为一小段一小段(10毫秒-40毫秒)的短语音,我们认为这样的小片段是平稳的,称之为【帧】。

    在每个帧上进行信号分析,称为语音的短时分析。

     

    fetch_filed83a8dc163bae603211e875027d7e138-picture

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

    帧移的事情就不详细解释了,它是为了保证语音信息的完整性。感兴趣的同学可以查一下,加窗/窗函数。

    那为什么需要平缓的分帧呢?因为我们需要做傅里叶变化,它适用于分析平稳的信号。(想弄明白傅里叶变换的,之后可以参考文章末尾的链接)

    人类是根据振动频率判断声音的,而以时间为横轴(时域)的波形图没有振幅描述,我们需要做傅里叶变换,将它变成以频率为横轴(频域)的振幅描述。

    2.3 特征提取

    特征提取就是从语音波形中提取出能反映语音特征的重要信息,去掉相对无关的信息(如背景噪声),并把这些信息转换为一组离散的参数矢量 。

    1)特征提取

    如何提取呢?我们经过采样,预处理,将这些数字绘制为简单的折线图,如下所示,我们得到了 20 毫秒内原始声波的大致形状:

    fetch_file80d04107949da47629b752e5d71b8f8a-picture

    这样的波形图对机器来说没有任何描述信息。这个波形图背后是很多不同频率的波叠加产生的。(准确的讲,它在时域上没有描述能力)

    我们希望一段声纹能够给出一个人的特性,比如什么时候高,什么时候低,什么时候频率比较密集,什么时候比较平缓等等。

    fetch_file1beaa222d245c3b63717c4b972cb1182-picture

     

    就是我们上面所说的,用傅里叶变化来完成时域到频域的转换。

    这就需要对每一帧做傅里叶变化,用特征参数MFCC得到每一帧的频谱(这个过程就是特征提取,结果用多维向量表示),最后可以总结为一个频谱图(语谱图)。

    如下图所示,是“hello”的频谱图,很酷是吧~
    横轴是时间,纵轴是频率。颜色越亮,表示强度越大。

    fetch_file5d33855c845fbc7b05006fbff69f38d4-picture

     

    2)常用的特性参数

    特性提取时,我们有常用的特征参数作为提取模板,主要有两种:

    • 线性预测系数(LPC)

      LPC 的基本思想是,当前时刻的信号可以用若干个历史时刻的信号的线性组合来估计。通过使实际语音的采样值和线性预测采样值之间达到均方差最小,即可得到一组线性预测系数。

      求解LPC系数可以采用自相关法 (德宾 durbin 法) 、协方差法、格型法等快速算法。

    • 倒谱系数

      利用同态处理方法,对语音信号求离散傅立叶变换后取对数,再求反变换就可得到倒谱系数。

      其中,LPC倒谱(LPCCEP)是建立在LPC谱上的。而梅尔倒谱系数(Mel Frequency Cepstrum Coefficient, MFCC)则是基于MEL谱的。不同于LPC等通过对人的发声机理的研究而得到的声学特征,MFCC 是受人的听觉系统研究成果推动而导出的声学特征。

      简单的说,经过梅尔倒谱分析,得到的参数更符合人耳的听觉特性。

     

    3)短语音识别为单词

    有了上面的特征提取,每一帧都可以表述为一个多维向量,接下来就是把向量识别为文本。

    这里我们需要多介绍一个概念,叫【状态】。
    你可以理解为,是比音素更细致的语音单位。通常把一个音素划分成3个状态。

    fetch_filea8c98f721a460e68fbaaf824b5eaff8c-picture

    如上图所示,识别过程无非是:
    1)把帧识别成状态(难点)。
    2)把状态组合成音素。
    3)把音素组合成单词。

    那每个音素应该对应哪种状态呢?这就需要用到声学模型了。

    2.4 声学模型

    声学模型是识别系统的底层模型,其目的是提供一种计算语音的特征矢量序列和每个发音模板之间的距离的方法。

    也就是说,提取到的语音特性,与某个发音之间的差距越小,越有可能是这个发音。

    或者说,某帧对应哪个状态的概率最大,那这帧就属于哪个状态。这个可以用GMM(混合高斯模型,就是一种概率分布)或DNN(深度神经网络)来识别。

    但这样识别出来的结果会比较乱,因为一个人讲话的速度不一样,每一帧识别出的结果可能是:....HHH_EE_LL__LLLL__OOO.....,如下图:

    fetch_fileaab0b96e9e8665e8a80d9d2bf16989c7-picture

     

    这个问题可以用DTW(动态时间规整)或HMM(隐马尔科夫模型)或CTC(改进的RNN模型)来对齐识别结果,知道单词从哪里开始,从哪里结束,哪些内容是重复的没有必要的。

     

    1)常用的声学建模方法包含以下三种:

    • 基于模式匹配的动态时间规整法(DTW);
    • 隐马尔可夫模型法(HMM);
    • 基于人工神经网络识别法(ANN);

    在过去,主流的语音识别系统通常使用梅尔倒谱系数(Mel-Frequency Cepstral Coefficient, MFCC)或者线性感知预测(Perceptual Linear Prediction, PLP)作为特征,使用混合高斯模型-隐马尔科夫模型(GMM-HMM)作为声学模型。

    近些年,分层鉴别模型比如DNN,变得可行起来,比如上下文相关的深度神经网络-隐马尔可夫模型(context-dependent DNN-HMM,CD-DNN-HMM)就比传统的GMM-HMM表现要好得多。

    如下图,你可以清晰的看到被替换的部分。

     

    fetch_file6fa639ac7be73a4fc1ec61d6fad36527-picture

    2)主要问题:

    我们要了解的是,声学模型存在2个问题:
    1. 特征向量序列的可变长;
    每个人说同一个单词的时间长度都不一样,声学模型要能从不同的时间长度的语音信号中识别出是同一个单词。

    解决方法就是DTW(动态时间规整)、 HMM(隐马尔可夫模型)。
    2. 音频信号的丰富变化性;
    如说话人的性别,健康状况,紧张程度,说话风格、语速,环境噪音,周围人声,信道扭曲,方言差异,非母语口音等。

    3)HMM 声学建模:

    对语音识别系统而言,HMM 的输出值通常就是各个帧的声学特征 。 为了降低模型的复杂度,通常 HMM 模型有两个假设前提,一是内部状态的转移只与上一状态有关,一是输出值只与当前状态或当前状态转移有关。除了这两个假设外,HMM 模型还存在着一些理论上的假设,其中之一就是,它假设语音是一个严格的马尔科夫过程 。

    2.5 语言模型

    如何将识别出的单词,组成有逻辑的句子,如何识别出正确的有歧义的单词,这些就用到语言模型了。

    由于语音信号的时变性、噪声和其它一些不稳定因素,单纯靠声学模型无法达到较高的语音识别的准确率。在人类语言中,每一句话的单词直接有密切的联系,这些单词层面的信息可以减少声学模型上的搜索范围,有效地提高识别的准确性,要完成这项任务语言模型是必不可少的,它提供了语言中词之间的上下文信息以及语义信息。

    随着统计语言处理方法的发展,统计语言模型成为语音识别中语言处理的主流技术,其中统计语言模型有很多种,如N-Gram语言模型、马尔可夫N元模型(Markov N-gram)、指数模型( Exponential Models)、决策树模型(Decision Tree Models)等。而N元语言模型是最常被使用的统计语言模型,特别是二元语言模型(bigram)、三元语言模型(trigram)。

    2.6 字典

    字典是存放所有单词的发音的词典,它的作用是用来连接声学模型和语言模型的。

    识别出音素,利用字典,就可以查出单词了。

    例如,一个句子可以分成若干个单词相连接,每个单词通过查询发音词典得到该单词发音的音素序列。相邻单词的转移概率可以通过语言模型获得,音素的概率模型可以通过声学模型获得。从而生成了这句话的一个概率模型。

    2.7 解码器

    解码器的作用就是将上述训练好的模型按照一定的规则组合起来,将新输入的语音识别出来。

     

    三、 语音识别评估标准

    在语音识别中,常用的评估标准为词错误率(Word Error Rate,WER)。

    我们上面讲了帧向量识别为单词,需要用声学模型。因为识别出来的整个词序列是混乱的,需要进行替换、删除、插入某些词,使得次序列有序完整。

    WER就是反映上述过程的标准,能直接反映识别系统声学模型的性能,也是其他评估指标如句错误率SER的基础。

    传统的词错误率评估算法在语音识别中存在三种典型的词错误:
    1)替换错误(Substitution)
    在识别结果中,正确的词被错误的词代替;
    2)删除错误(Deletion)
    在识别结果中,丢失了正确的词;
    3)插入错误(Insertion)
    在识别结果中,增加了一个多余的词;

    所以,词错误率为:

    fetch_fileb9a9e0eeef0f8d799d4bc7a7786ed8e3-picture

    S 为替代错误词数,D 为删除错误词数,I 为插入错误词数。T为参照句子中的所有词数。
    需要注意的是,因为有插入词,所以WER有可能大于100%。

     

     

    以上。

     

    --- 

     

    参考文章:

    《实用语音识别基础》 王炳锡,2005
    《解析深度学习-语音识别实践》邓力,2016

    展开全文
  • 浅析语音识别技术的工作原理及发展 语音是人类最自然的交互方式。计算机发明之后,让机器能够“听懂”人类的语言,理解语言中的内在含义,并能做出正确的回答就成为了人们追求的目标。我们都希望像科幻电影中那些...

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

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

     

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

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

    语音识别技术的发展

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

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

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

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

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

    2009 年,Hinton 和他的学生Mohamed D将 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 和子空间高斯混合模型 (subspace GMM) 来解决。除了使用 EM 算法作最大似然估计以外,我们还可以使用和词或音素错误率直接相关的区分性的误差函数来训练高斯混合模型,能够极大地提高系统性能。因此,直到在声学模型中使用深度神经网络的技术出现之前,高斯混合模型一直是短时特征向量建模的不二选择。

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

    隐马尔科夫模型

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

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

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

    语言模型

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

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

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

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

    解码与字典

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

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

    语音识别技术的工作原理

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

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

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

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

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

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

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

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

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

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

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

    如下图所示:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    语音识别技术的工作流程

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

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

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

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

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

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

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

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

    语音识别原理有三点:

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

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

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

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

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

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

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

    展开全文
  • 语音识别技术简述(概念->原理)

    千次阅读 2019-04-12 10:21:44
    语音识别技术简述(概念->原理) 目录 语音识别技术简述(概念->原理) 语音识别概念 语音识别原理 语音识别技术简介 1.动态时间规整(DTW) 2.支持向量机(SVM) 3.矢量量化(VQ) 4.隐马尔科夫...

                                 语音识别技术简述(概念->原理)

    目录

    语音识别技术简述(概念->原理)

    语音识别概念

    语音识别原理

    语音识别技术简介

       1.动态时间规整(DTW)

       2.支持向量机(SVM)

        3.矢量量化(VQ)

       4.隐马尔科夫模型(HMM)

       5.高斯混合模型(GMM)

       6.人工神经网络(ANN/BP)

     7.深度神经网络/深信度网络-隐马尔科夫(DNN/DBN-HMM)

      8.循环神经网络(RNN)

        9.长短时记忆模块(LSTM)

        10.卷积神经网络(CNN)

    识别技术的发展方向

    参考文献:


    本内容部分原创,因作者才疏学浅,偶有纰漏,望不吝指出。本内容由灵声讯音频-语音算法实验室整理创作,转载和使用请与“灵声讯”联系,联系方式:音频/识别/合成算法QQ群(696554058)


    • 语音识别概念

    语音识别技术就是让智能设备听懂人类的语音。它是一门涉及数字信号处理、人工智能、语言学、数理统计学、声学、情感学及心理学等多学科交叉的科学。这项技术可以提供比如自动客服、自动语音翻译、命令控制、语音验证码等多项应用。近年来,随着人工智能的兴起,语音识别技术在理论和应用方面都取得大突破,开始从实验室走向市场,已逐渐走进我们的日常生活。现在语音识别己用于许多领域,主要包括语音识别听写器、语音寻呼和答疑平台、自主广告平台,智能客服等。

    • 语音识别原理

    语音识别的本质是一种基于语音特征参数的模式识别,即通过学习,系统能够把输入的语音按一定模式进行分类,进而依据判定准则找出最佳匹配结果。目前,模式匹配原理已经被应用于大多数语音识别系统中。如图1是基于模式匹配原理的语音识别系统框图。

     一般的模式识别包括预处理,特征提取,模式匹配等基本模块。如图所示首先对输入语音进行预处理,其中预处理包括分帧,加窗,预加重等。其次是特征提取,因此选择合适的特征参数尤为重要。常用的特征参数包括:基音周期,共振峰,短时平均能量或幅度,线性预测系数(LPC),感知加权预测系数(PLP),短时平均过零率,线性预测倒谱系数(LPCC),自相关函数,梅尔倒谱系数(MFCC),小波变换系数,经验模态分解系数(EMD),伽马通滤波器系数(GFCC)等。在进行实际识别时,要对测试语音按训练过程产生模板,最后根据失真判决准则进行识别。常用的失真判决准则有欧式距离,协方差矩阵与贝叶斯距离等。

                                                 

                                                                                                     图1. 语音识别原理架图

    • 语音识别技术简介

    从语音识别算法的发展来看,语音识别技术主要分为三大类,第一类是模型匹配法,包括矢量量化(VQ) 、动态时间规整(DTW)等;第二类是概率统计方法,包括高斯混合模型(GMM) 、隐马尔科夫模型(HMM)等;第三类是辨别器分类方法,如支持向量机(SVM) 、人工神经网络(ANN)和深度神经网络(DNN)等以及多种组合方法。下面对主流的识别技术做简单介绍:

       1.动态时间规整(DTW)

    语音识别中,由于语音信号的随机性,即使同一个人发的同一个音,只要说话环境和情绪不同,时间长度也不尽相同,因此时间规整是必不可少的。DTW是一种将时间规整与距离测度有机结合的非线性规整技术,在语音识别时,需要把测试模板与参考模板进行实际比对和非线性伸缩,并依照某种距离测度选取距离最小的模板作为识别结果输出。动态时间规整技术的引入,将测试语音映射到标准语音时间轴上,使长短不等的两个信号最后通过时间轴弯折达到一样的时间长度,进而使得匹配差别最小,结合距离测度,得到测试语音与标准语音之间的距离。

       2.支持向量机(SVM)

    支持向量机是建立在VC维理论和结构风险最小理论基础上的分类方法,它是根据有限样本信息在模型复杂度与学习能力之间寻求最佳折中。从理论上说,SVM就是一个简单的寻优过程,它解决了神经网络算法中局部极值的问题,得到的是全局最优解。SVM已经成功地应用到语音识别中,并表现出良好的识别性能。

        3.矢量量化(VQ)

    矢量量化是一种广泛应用于语音和图像压缩编码等领域的重要信号压缩技术,思想来自香农的率-失真理论。其基本原理是把每帧特征矢量参数在多维空间中进行整体量化,在信息量损失较小的情况下对数据进行压缩。因此,它不仅可以减小数据存储,而且还能提高系统运行速度,保证语音编码质量和压缩效率,一般应用于小词汇量的孤立词语音识别系统。

       4.隐马尔科夫模型(HMM)

    隐马尔科夫模型是一种统计模型,目前多应用于语音信号处理领域。在该模型中,马尔科夫(Markov)链中的一个状态是否转移到另一个状态取决于状态转移概率,而某一状态产生的观察值取决于状态生成概率。在进行语音识别时,HMM首先为每个识别单元建立发声模型,通过长时间训练得到状态转移概率矩阵和输出概率矩阵,在识别时根据状态转移过程中的最大概率进行判决。

       5.高斯混合模型(GMM)

    高斯混合模型是单一高斯概率密度函数的延伸,GMM能够平滑地近似任意形状的密度分布。高斯混合模型种类有单高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian Mixture Model, GMM)两类。类似于聚类,根据高斯概率密度函数(Probability Density Function, PDF)参数不同,每一个高斯模型可以看作一种类别,输入一个样本x,即可通过PDF计算其值,然后通过一个阈值来判断该样本是否属于高斯模型。很明显,SGM适合于仅有两类别问题的划分,而GMM由于具有多个模型,划分更为精细,适用于多类别的划分,可以应用于复杂对象建模。目前在语音识别领域,GMM需要和HMM一起构建完整的语音识别系统。

       6.人工神经网络(ANN/BP)

    人工神经网络由20世纪80年代末提出,其本质是一个基于生物神经系统的自适应非线性动力学系统,它旨在充分模拟神经系统执行任务的方式。如同人的大脑一样,神经网络是由相互联系、相互影响各自行为的神经元构成,这些神经元也称为节点或处理单元。神经网络通过大量节点来模仿人类神经元活动,并将所有节点连接成信息处理系统,以此来反映人脑功能的基本特性。尽管ANN模拟和抽象人脑功能很精准,但它毕竟是人工神经网络,只是一种模拟生物感知特性的分布式并行处理模型。ANN的独特优点及其强大的分类能力和输入输出映射能力促成在许多领域被广泛应用,特别在语音识别、图像处理、指纹识别、计算机智能控制及专家系统等领域。但从当前语音识别系统来看,由于ANN对语音信号的时间动态特性描述不够充分,大部分采用ANN与传统识别算法相结合的系统。

     7.深度神经网络/深信度网络-隐马尔科夫(DNN/DBN-HMM)

    当前诸如ANN,BP等多数分类的学习方法都是浅层结构算法,与深层算法相比存在局限。尤其当样本数据有限时,它们表征复杂函数的能力明显不足。深度学习可通过学习深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式,并展现从少数样本集中学习本质特征的强大能力。在深度结构非凸目标代价函数中普遍存在的局部最小问题是训练效果不理想的主要根源。为了解决以上问题,提出基于深度神经网络(DNN) 的非监督贪心逐层训练算法,它利用空间相对关系减少参数数目以提高神经网络的训练性能。相比传统的基于GMM-HMM的语音识别系统,其最大的改变是采用深度神经网络替换GMM模型对语音的观察概率进行建模。最初主流的深度神经网络是最简单的前馈型深度神经网络(Feedforward Deep Neural Network,FDNN)。DNN相比GMM的优势在于:1. 使用DNN估计HMM的状态的后验概率分布不需要对语音数据分布进行假设;2. DNN的输入特征可以是多种特征的融合,包括离散或者连续的;3. DNN可以利用相邻的语音帧所包含的结构信息。基于DNN-HMM识别系统的模型如图2所示。

                                                                           

                                                                                      图2 基于深度神经网络的语音识别系统

      8.循环神经网络(RNN)

    语音识别需要对波形进行加窗、分帧、提取特征等预处理。训练GMM时候,输入特征一般只能是单帧的信号,而对于DNN可以采用拼接帧作为输入,这些是DNN相比GMM可以获得很大性能提升的关键因素。然而,语音是一种各帧之间具有很强相关性的复杂时变信号,这种相关性主要体现在说话时的协同发音现象上,往往前后好几个字对我们正要说的字都有影响,也就是语音的各帧之间具有长时相关性。采用拼接帧的方式可以学到一定程度的上下文信息。但是由于DNN输入的窗长是固定的,学习到的是固定输入到输入的映射关系,从而导致DNN对于时序信息的长时相关性的建模是较弱的。

                                                            

     

                                                                                                        图3 DNN和RNN示意图

    考虑到语音信号的长时相关性,一个自然而然的想法是选用具有更强长时建模能力的神经网络模型。于是,循环神经网络(Recurrent Neural Network,RNN)近年来逐渐替代传统的DNN成为主流的语音识别建模方案。如图3,相比前馈型神经网络DNN,循环神经网络在隐层上增加了一个反馈连接,也就是说,RNN隐层当前时刻的输入有一部分是前一时刻的隐层输出,这使得RNN可以通过循环反馈连接看到前面所有时刻的信息,这赋予了RNN记忆功能。这些特点使得RNN非常适合用于对时序信号的建模。

        9.长短时记忆模块(LSTM)

    长短时记忆模块 (Long-Short Term Memory,LSTM) 的引入解决了传统简单RNN梯度消失等问题,使得RNN框架可以在语音识别领域实用化并获得了超越DNN的效果,目前已经使用在业界一些比较先进的语音系统中。除此之外,研究人员还在RNN的基础上做了进一步改进工作,如图4是当前语音识别中的主流RNN声学模型框架,主要包含两部分:深层双向RNN和序列短时分类(Connectionist Temporal Classification,CTC)输出层。其中双向RNN对当前语音帧进行判断时,不仅可以利用历史的语音信息,还可以利用未来的语音信息,从而进行更加准确的决策;CTC使得训练过程无需帧级别的标注,实现有效的“端对端”训练。

                                                        

     

                                                                                         图4 基于RNN-CTC的主流语音识别系统框架

        10.卷积神经网络(CNN)

    CNN早在2012年就被用于语音识别系统,并且一直以来都有很多研究人员积极投身于基于CNN的语音识别系统的研究,但始终没有大的突破。最主要的原因是他们没有突破传统前馈神经网络采用固定长度的帧拼接作为输入的思维定式,从而无法看到足够长的语音上下文信息。另外一个缺陷是他们只是将CNN视作一种特征提取器,因此所用的卷积层数很少,一般只有一到二层,这样的卷积网络表达能力十分有限。针对这些问题,提出了一种名为深度全序列卷积神经网络(Deep Fully Convolutional Neural Network,DFCNN)的语音识别框架,使用大量的卷积层直接对整句语音信号进行建模,更好地表达了语音的长时相关性。

    DFCNN的结构如图5所示,它直接将一句语音转化成一张图像作为输入,即先对每帧语音进行傅里叶变换,再将时间和频率作为图像的两个维度,然后通过非常多的卷积层和池化(pooling)层的组合,对整句语音进行建模,输出单元直接与最终的识别结果比如音节或者汉字相对应。

                                                                    

                                                                                                              图5 DFCNN示意图

    • 识别技术的发展方向

    1. 更有效的序列到序列直接转换的模型。序列到序列直接转换的模型目前来讲主要有两个方向,一是CTC模型;二是Attention 模型。
    2. 鸡尾酒会问题(远场识别)。这个问题在近场麦克风并不明显,这是因为人声的能量对比噪声非常大,而在远场识别系统上,信噪比下降得很厉害,所以这个问题就变得非常突出,成为了一个非常关键、比较难解决的问题。鸡尾酒会问题的主要困难在于标签置换(Label Permutation),目前较好的解决方案有二,一是深度聚类(Deep Clustering);二是置换不变训练(Permutation invariant Training)。
    3. 持续预测与自适应模型。能否建造一个持续做预测并自适应的系统。它需要的特点一个是能够非常快地做自适应并优化接下来的期望识别率。另一个是能发现频度高的规律并把这些变成模型默认的一部分,不需要再做训练。
    4. 前后端联合优化。前端注重音频质量提升,后端注重识别性能和效率提升。
    • 参考文献:

    《解析深度学习:语音识别实践》-------俞栋,邓力著

    《实用语音识别基础》-------王炳锡,屈丹, 彭煊著

    《语音信号处理》--------赵力著


    本内容部分原创,因作者才疏学浅,偶有纰漏,望不吝指出。本内容由灵声讯音频-语音算法实验室整理创作,转载和使用请与“灵声讯”联系,联系方式:音频/识别/合成算法QQ群(696554058)


                                                                      

     

    福利小贴士:

    理科只是为自己插上腾飞的翅膀,文科才能让你飞黄腾达,同意的点赞,谢谢!

    赠送原创诗歌公众号“天一色”,以飨读者!

    展开全文
  • 语音识别三大关键技术

    万次阅读 多人点赞 2020-07-10 00:22:23
    论语音识别三大关键技术 李...数据、算法及芯片是语音识别技术的3个关键,大量优质的数据、精准快速的算法和高性能语音识别芯片是提升语音识别的核心。语音是人工智能产品的主要入口,乃兵家必争之地也。相关算法...
  • 语音识别技术

    2020-05-04 17:23:01
    的地方
  • 5分钟弄懂:语音识别技术原理

    千次阅读 2018-03-01 10:22:47
    简要给大家介绍一下语音怎么变文字的吧。希望这个介绍能让所有同学看懂。首先,我们知道声音实际上是一种波。...在开始语音识别之前,有时需要把首尾端的静音切除,降低对后续步骤造成的干扰。这个静音...
  • ASR自动语音识别技术

    万次阅读 2016-07-24 22:51:19
    自动语音识别技术(Automatic Speech Recognition)是一种将人的语音转换为文本的技术。语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。...
  • 语音识别之Python开发

    万次阅读 多人点赞 2017-12-18 05:43:39
    语音识别之Python教程概述技术原理教程开发案例参考案例python实现将文本转换成语音的方法Python如何实现文本转语音Python3.5 调用讯飞动态链接库实现语音识别Python建立简易语音识别系统Python 语音识别框架用...
  • 语音识别技术的发展与应用

    千次阅读 2019-02-18 15:13:47
    本内容原创,转载和使用请注明出处,谢谢配合; 欢迎大家加入音频/识别/合成算法群(696554058)交流学习,谢谢!
  • NLP之ASR:语音识别技术(Automatic Speech Recognition)的简介、发展历史、案例应用之详细攻略 目录 语音识别技术(Automatic Speech Recognition)的简介 1、ASR实现的原理—模式匹配法 2、ASR技术面临的五大...
  • 导读11 月 21 日到 23 日,搜狗、百度和科大讯飞三家公司接连召开了三场发布会,向外界展示了自己在语音识别和机器翻译等方面的最新进展。值得注意的是,这三家公司几乎在同一时段宣布了各自中文语音识别准确率达到...
  • 语音识别技术综述

    千次阅读 2008-03-14 11:30:00
    语音识别技术是2000年至2010年间信息技术领域十大重要的科技发展技术之一。它是一门交叉学科,正逐步成为信息技术中人机接口的关键技术。语音识别技术与语音合成技术结合使人们能够甩掉键盘,通过语音命令进行操作。...
  • 浅谈人工智能 | 语音识别面面观

    千次阅读 2018-09-30 13:46:22
    语音识别系统使消费者只需通过与之交谈即可与技术进行交互,从而实现免提请求、提醒和其他简单任务。 语音识别的工作原理 计算机上的语音识别软件要求将模拟音频转换为数字信号,称为模数转换。计算机如要解密信号,...
  • NLP之ASR:基于python和机器学习算法带你玩转的语音实时识别技术 导读 带你玩转python实现的语音实时识别技术(包括音频混音、回声消除、噪音滤除、杂音消除、静音检测等方法) 视频观看:软件设计之基于算法的...
  • 语音识别、声纹识别的区别及测试

    万次阅读 多人点赞 2018-09-02 22:15:45
    很多除接触AI的小伙伴, 不清楚语音识别和声纹识别的区别,经常混淆概念,以为语音识别、声纹识别、语义识别是同一回事,其实不然。这篇文章主要为小伙伴普及一下这三者的区别, 并且分别讲一讲如何测试。   语音...
  • 语音识别领域公司分析

    千次阅读 2016-12-26 17:36:37
    第一阵营:科大讯飞,腾讯,百度 第二阵营:苏州思必驰,捷通华声,云知声等等 ...第三阵营:很多小公司,背靠其他学术或技术团队 ...第一阵营的识别率和团队的技术实力都是最强的。 苏州思必驰在技术上也
  • 语音识别类书籍推荐

    千次阅读 2019-06-18 14:58:54
    Computational Models of Speech Pattern Processing
  • 几个常见的语音交互平台的简介和比较

    万次阅读 多人点赞 2014-01-19 16:05:03
    最近做了两个与语音识别相关的项目,两个项目的主要任务虽然都是语音识别,或者更确切的说是关键字识别,但开发的平台不同, 一个是windows下的,另一个是android平台的,于是也就选用了不同的语音识别平台,前者选...
  • 从这一篇开始,陆续学习语音识别技术,由浅入深。  这一篇是入门,主要学习的是语音识别技术的大致步骤,以及现在的几种主流方法。  下图是语音识别技术的系统框图:  主要包括这样几个步骤: 1)预处理。...
1 2 3 4 5 ... 20
收藏数 75,153
精华内容 30,061
关键字:

语音识别技术