语音识别技术,也被称为自动语音识别(Automatic Speech Recognition,ASR)。语音识别技术就是以语音为研究对象,让机器通过自动识别和理解过程把语音信号转变为相应的文本或命令的技术。涉及多种交叉学科,如声学、语音学、语言学、信息处理、模式识别、人工智能等。
语音识别是十年来发展最快的技术之一,随着人工智能的快速发展,语音识别技术得到了质的飞跃,开始从实验室走向市场,并逐步走到人们的生活中。例如手机中的语音转文字功能,以语音为智能交互的智能家居等,背后都涉及到语音识别技术。
如:小爱同学
小爱同学,我想听周杰伦的歌、大点声(听音乐)、7点叫我起床(闹钟)、我的手机在哪(万物互联,定位)……类似的还有小度。
此外智能家居还包括,语音电饭煲、能识别语音的电梯,家居语音识别,以及智能声控台灯等。煮饭,去十楼,打开卧室的灯,空调调到23度,打开台灯……
语音识别技术的发展过程如下:
1952年,贝尔研究所Davis等人,研究成功了世界上第一个能识别10个英文数字(0~9)发音的实验系统,且对熟人的准确度高达90%以上。
70年代以后,卡耐基梅隆大学研发出harpy(一种)语音识别系统,该系统能够识别1011个单词,在小词汇量、孤立词的识别方面取得了实质性的进展
80年代,逐渐由孤立词识别转向连接词识别,隐马尔科夫模型(HMM)、N-gram语言模型。
1987年12月,IT界知名人物李开复,开发出了世界上第一个“非特定人连续语音识别系统”,用统计方法提升语音识别率。
90年代以后,大词汇量连续语音识别得到优化,提出了区分性的模型训练方法MCE和MMI,使得语音识别的精确度日益提高,尤其适用于长句子的情况下,与此同时,还提出了模型自适应方法MAP和MLLR。
1997年IBM Viavoice首个语音听写产品问世,只要对着话筒喊出要输入的字符,它就可以自动判断并帮你输入文字。
语音识别技术改变未来科技的发展:
2010年,Google Voice Action支持语音操作与搜素。
2011年初,微软的DNN深度神经网络模型在语音搜索任务上获得成功,科大讯飞将DNN首次成功应用到中文语音识别领域,并通过语音云平台提供给广大开发者使用。
2011年10月,苹果iPhone 4S的发布,个人手机助理Siri人机交互新篇章。
2013年,穿戴式语音交互设备成为新热点,如Google发布的Google Glass,苹果研发的iWatch等。
语音识别技术进入工业、家电、通信、车载导航、医疗、家庭服务、消费电子产品等各个领域。
系统框架,语音识别的本质就是将语音序列转换为文本序列,其常用的系统框架如下。首先,介绍语音前端信号处理的相关技术,然后,解释语音识别基本原理,最后介绍声学模型和语言模型。
目前,大多数语音识别系统中应用模式匹配原理,其系统框图如下,首先对输入语音进行预处理(其中预处理包括分帧,加窗,预加重等)。其次是特征提取,选择合适的特征参数尤为重要。……系统通过学习,能够把输入的语音按一定模式进行分类,进而依据判定准则找出最佳匹配结果。
前端的信号处理是对原始语音信号进行的相关处理,使得处理后的信号更能代表语音的本质特征,相关技术点如下表所述:
1.语音活动检测:语音活动检测(Voice Activity Detection, VAD)用于检测出语音信号的起始位置,分离出语音段和非语音(静音或噪声)段。
2.降噪:在生活环境中通常会存在例如空调、风扇等各种噪声,降噪算法目的在于降低环境中存在的噪声,提高信噪比,进一步提升识别效果。
3.回声消除:采用自适应方法估计回波信号的大小,然后在接收信号中减去此估计值以抵消回波。
4.混响消除:语音信号在室内经过多次反射之后,被麦克风采集,得到的混响信号容易产生掩蔽效应,会导致识别率急剧恶化,需要在前端处理。提高语音识别系统性能,减少混响对声音接收系统的影响,降低混响对信号的掩蔽效应,提高语音识别率。
5.声源定位:使用麦克风阵列确定说话人位置,为识别阶段的波束形成处理做准备。
6.波束形成:波束形成是指将一定几何结构排列的麦克风阵列的各个麦克风输出信号,经过处理(如加权、时延、求和等)形成空间指向性的方法。
语音识别基本公式:
上式中W表示文字序列,Y表示语音输入。公式1表示语音识别的目标是在给定语音输入的情况下,找到可能性最大的文字序列。根据Baye’s Rule,可以得到公式2,其中分母表示出现这条语音的概率,它相比于求解的文字序列没有参数关系,可以在求解时忽略,进而得到公式3。公式3中第一部分表示给定一个文字序列出现这条音频的概率,它就是语音识别中的声学模型;第二部分表示出现这个文字序列的概率,它就是语音识别中的语言模型。
语音识别的三个过程:1. 把帧识别成状态(难点)。2. 把状态组合成音素。3. 把音素组合成单词。
该图中,每个竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态了,语音识别的结果也就出来了。
难点是:怎么判断每一帧语音对应哪个状态?看某帧对应哪个状态的概率最大,那这帧就属于哪个状态。P(o|s1)=0.45即该帧在s1状态上的概率为0.45。这帧在状态S3上的条件概率最大,因此就猜这帧属于状态S3。
这些参数全都保存在“声学模型”中,“声学模型”由巨大数量的语音数据训练得到,通过这些参数,就可以知道每一帧对应状态的概率。
搭建状态网络,是由单词级网络展开成音素网络,再展开成状态网络。语音识别过程其实就是在状态网络中搜索一条最佳路径,语音对应这条路径的概率最大,这称之为“解码”。
观察概率:每帧对应每个状态的概率
转移概率:每个状态转移到自身或转移到下个状态的概率
语言概率:根据语言统计规律得到的概率
其中,前两种概率从声学模型中获取,最后一种概率从语言模型中获取。
语言模型的物理意义反映字词出现的先验概率,比如“郝”和“好”,这两个字发音相同,但“郝”相对于“好”来说,出现的概率较低,一般都会出现在姓氏里。除此之外,语言模型的物理意义还在于反映词顺序是否符合语言习惯和反映词的语义信息。
语言模型与文本处理相关,比如我们使用的智能输入法,当我们输入“nihao”,输入法候选词会出现“你好”而不是“尼毫”,候选词的排列参照语言模型得分的高低顺序。
语音识别中的语言模型也用于处理文字序列,它是结合声学模型的输出,给出概率最大的文字序列作为语音识别结果。由于语言模型是表示某一文字序列发生的概率,一般采用链式法则表示,条件概率相关公式表示为:
由于条件太长,使得概率的估计变得困难,常见的做法是认为每个词的概率分布只依赖于前几个出现的词语,这样的语言模型成为n-gram模型。在n-gram模型中,每个词的概率分布只依赖于前面n-1个词。例如n取值为3时(trigram)模型,可将上式化简:
语言模型是使用大量的文本训练出来的,可以利用某门语言本身的统计规律来帮助提升识别正确率。语言模型很重要,如果不使用语言模型,当状态网络较大时,识别出的结果基本是一团乱麻。
工作流程:
预处理:1. 首尾端的静音切除,降低干扰,静音切除的操作一般称为VAD语言活动检测。2. 声音分帧,也就是把声音切开成一小段,每小段称为一帧,使用移动窗函数来实现,不是简单的切开,各帧之间一般是有交叠的。
特征提取:主要算法有线性预测倒谱系数(LPCC)和Mel倒谱系数(MFCC),目的是把每一帧波形变成一个包含声音信息的多维向量;
声学模型(AM):通过对语音数据进行训练获得,输入是特征向量,输出为音素信息;
字典:字或者词与音素的对应,简单来说,中文就是拼音和汉字的对应,英文就是音标与单词的对应;
语言模型(LM):通过对大量文本信息进行训练,得到单个字或者词相互关联的概率;
解码:就是通过声学模型,字典,语言模型对提取特征后的音频数据进行文字输出。
声学模型(Acoustic Model,AM)的发展:
- 传统模型
- CTC模型 Connectionist Temporal Classification,连接时序分类
- End-to-End模型
基于大数据和深度学习的端到端(End-to-End)方法正在不断发展,它可以将声学模型和语言模型作为整体进行处理。
CTC的全称是Connectionist Temporal Classification,中文翻译大概是连接时序分类。它要达到的目标就是直接将语音和相应的文字对应起来,实现时序问题的分类。
由于神经网络强大的建模能力,End-to-end的输出标签也不再需要像传统架构一样进行细分。例如对于中文,输出不再需要进行细分为状态、音素或者声韵母,直接将汉字作为输出即可;对于英文,考虑到英文单词的数量庞大,可以使用字母作为输出标签。
神经网络将声学符号到字符串的映射关系也一并建模学习了出来,这部分是在传统的框架中时词典所应承担的任务。声学模型和语言模型全都被建模在一个神经网络中。
参考链接:
https://baijiahao.baidu.com/s?id=1605133369887843752&wfr=spider&for=pc
https://zhuanlan.zhihu.com/p/62171354
https://blog.csdn.net/helaisun/article/details/105919929
https://www.zhihu.com/question/20398418
https://www.bilibili.com/video/BV17W411J75C?from=search&seid=2561416095834872315
https://www.zhihu.com/question/20398418/answer/167412177