一、前言
本文主要介绍语音识别技术的基本原理,让大家对语音识别技术有一个感性的认识,不涉及到晦涩难懂的技术实现。
二、什么是语音识别技术?
语音识别技术的目标就是将人类语音中的词汇内容转换为计算机可读的输入。
语音识别技术的原理就是让机器通过识别,把语音信号转变为文本,然后将理解转变为指令的技术。目的就是为了使机器能够“听懂”人在说什么,并作出相应的反应。
语音识别系统由声学识别模型和语言理解模型两部分组成,分别是对语音到音节和音节到字的计算。一个连续语音识别系统包含了特征提取、声学模型、语言模型和解码器这四个主要部分。
特征提取是指在除去语音信号中对于语音识别无用的信息后,保留能够反映语音本质特征的关键信息,对其进行处理,再用特定的形式表示出来,用于后续的进一步处理。
声学模型可以理解为是对声音进行建模,把语音输入转换为声学表示的输出。
语言模型是用来计算出一个句子出现概率的模型,简单来说,就是计算出这个句子在语法上是否正确的概率。
解码器就是指语音技术中的识别过程。
语音识别的本质就是一种模式识别的过程,将未知的语音模式与已知的语音模式进行对比,最佳匹配的参考模式就被视为识别结果。
三、实现基本原理图
四、语音识别详解
整个语音识别的过程,先从本地获取音频,然后传到云端,最后识别出文本,就是一个声学信号转换成文本信息的过程。整个识别的过程如下图:
1、VAD技术
在开始语音识别之前,有时需要把首尾端的静音切除,降低对后续步骤造成干扰,这个切除静音的操作一般称为VAD。这个步骤一般是在本地完成的,这部分需要用到信号处理的一些技术。
VAD(Voice Activity Detection),也叫语音激活检测,或者静音抑制,其目的是检测当前语音信号中是否包含话音信号存在,即对输入信号进行判断,将话音信号与各种背景噪声信号区分出来,分别对两种信号采用不同的处理方法。
算法方面,VAD算法主要用了2-3个模型来对语音建模,并且分成噪声类、语音类和静音类。目前大多数还是基于信噪比的算法,也有一些基于深度学习(DNN)的模型。
一般在产品设计的时候,会固定一个VAD截断的时间,但面对不同的应用场景,可能会要求这个时间是可以自定义的。主要是用来控制多长时间没有声音进行截断。比如小孩子说话会比较慢,常常会留尾音,那么我们就需要针对儿童场景,设置比较长的VAD截断时间,而成人就可以相对短一点,一般会设置在400ms-1000ms之间。
2、本地上传(压缩)
人的声音信息首先要经过麦克风阵列收集和处理,然后再把处理好的音频文件传到云端,整个语音识别模型才开始工作。这里的上传并不是直接把收音到的音频丢到云端,而是要进行压缩的,主要考虑到音频太小,网络等问题,会影响整体的响应速度。从本地到云端是一个压缩➡上传➡解压的过程,数据才能够到达云端。整个上传的过程也是实时的,是以数据流的形式进行上传,每隔一段时间上传一个包。你可以理解为每说一个字,就要上传一次,这也就对应着我们常常看到的一个字一个字的往屏幕上蹦的效果,一般一句“明天天气怎么样?”,会上传大约30多个包到云端。
一般考虑我们大部分设备使用的都是Wi-Fi和4G网络,每次上传的包的大小在128个字节的大小,整个响应还是非常及时的。
麦克风阵列(Microphone Array),从字面上,指的是麦克风的排列。也就是说由一定数目的声学传感器(一般是麦克风)组成,用来对声场的空间特性进行采样并处理的系统。
3、信号处理
这里的信号处理一般指的是降噪,有些麦克风阵列本身的降噪算法受限于前端硬件的限制,会把一部分降噪的工作放在云端。像专门提供云端语音识别能力的公司,比如科大讯飞、谷歌,自己的语音识别模型都是有降噪能力的,因为你不知道前端的麦克风阵列到底是什么情况。
除了降噪以外可能还涉及到数据格式的归一化等。当然有些模型可能不需要这些步骤,比如自研的语音识别模型,只给自己的机器用,那么我解压完了就是我想要的格式。
4、特征提取
特征提取是语音识别关键的一步,解压完音频文件后,就要先进行特征提取,提取出来的特征作为参数,为模型计算做准备。简单理解就是语音信息的数字化,然后再通过后面的模型对这些数字化信息进行计算。
特征提取首先要做的是采样,前面我们说过音频信息是以数据流的形式存在,是连续不断的,对连续时间进行离散化处理的过程就是采样率,单位是Hz。可以理解为从一条连续的曲线上面取点,取的点越密集,越能还原这条曲线的波动趋势,采样率也就越高。理论上越高越好,但是一般10kHz以下就够用了,所以大部分都会采取16kHz的采样率。
具体提取那些特征,这要看模型要识别那些内容,一般只是语音转文字的话,主要是提取音素;但是想要识别语音中的情绪,可能就需要提取响度、音高等参数。
最常用到的语音特征就是梅尔频率倒谱系数(Mel-scaleFrequency Cepstral Coefficients,简称MFCC),是在Mel标度频率域提取出来的倒谱参数,Mel标度描述了人耳频率的非线性特性。
5、声学模型(AM)
声学模型将声学和发音学的知识进行整合,以特征提取模块提取的特征为输入,计算音频对应音素之间的概率。简单理解就是把从声音中提取出来的特征,通过声学模型,计算出相应的音素。
声学模型目前的主流算法是混合高斯模型+隐马尔可夫模型(GMM-HMM),HMM模型对时序信息进行建模,在给定HMM的一个状态后,GMM对属于该状态的语音特征向量的概率分布进行建模。现在也有基于深度学习的模型,在大数据的情况下,效果要好于GMM-HMM。
声学模型就是把声音转成音素,有点像把声音转成拼音的感觉,所以优化声学模型需要音频数据。
6、语言模型(LM)
语言模型是将语法和字词的知识进行整合,计算文字在这句话下出现的概率。一般自然语言的统计单位是句子,所以也可以看做句子的概率模型。简单理解就是给你几个字词,然后计算这几个字词组成句子的概率。
语言模型中,基于统计学的有n-gram 语言模型,目前大部分公司用的也是该模型。还有基于深度学习的语言模型。
语言模型就是根据一些可能的词(字典给的),然后计算出那些词组合成一句话的概率比较高,所以优化语言模型需要的是文本数据。
7、词典
词典就是发音字典的意思,中文中就是拼音与汉字的对应,英文中就是音标与单词的对应,其目的是根据声学模型识别出来的音素,来找到对应的汉字(词)或者单词,用来在声学模型和语言模型建立桥梁,将两者联系起来。简单理解词典是连接声学模型和语言模型的月老。
词典不涉及什么算法,一般的词典都是大而全的,尽可能地覆盖我们所有地字。
词典这个命名很形象,就像一本“新华字典”,给声学模型计算出来的拼音配上所有可能的汉字。
整个这一套组成了一个完整的语音识别模型,其中声学模型和语言模型是整个语音识别的核心,各家识别效果的差异也是这两块内容的不同导致的。一般我们更新的热词,更新的都是语言模型中的内容。
五、应用场景
语音输入
智能语音输入,可摆脱生僻字和拼音障碍,由实时语音识别实现,为用户节省输入时间、提升输入体验。
语音搜索
语音识别技术可用于语音搜索中,将搜索的内容直接以语音的方式输入,应用于手机搜索、网页搜索、车载搜索等多种搜索场景,很好地解放了人们的双手,让搜索变得更加高效。
语音指令
语音识别技术可用于语音指令中,不需要手动操作,可通过语音直接对设备或者软件发布命令,控制其进行操作,适用于视频网站、智能硬件等各大搜索场景。
社交聊天
语音识别技术可用于社交聊天中,直接用语音输入的方式转写成文字,让输入变得更快捷。或者在收到语音消息却不方便或者无法播放时,可直接将语音转换成文字进行查看,很好地满足了多样化的聊天场景,为用户提供了方便。
游戏娱乐
语音识别技术可用于游戏娱乐中,在游戏时,双手可能无法打字,语音输入可以将语音转换成文字,让用户在进行游戏娱乐的同时,也可直观地看到聊天内容,很好地满足了用户的多元化聊天需求。
字幕生成
语音识别技术可用于字幕生成中,可将直播和录播视频中的语音转换为文字,可以轻松便捷地生成字幕
会议纪要
语音识别技术可用于撰写会议纪要中,将会议、庭审、采访等场景的音频信息转换为文字,通过实时语音识别及时实现,有效降低人工记录的成本、提升效率。
其他
除了上面的应用场景外,其实还有很多场景,比如智能家居、 智慧生活与办公、智能汽车、语音质检、 智慧物流、 智慧教育、智能医疗等等很多领域中都有应用。
六、案例分析
我们先来看一个典型的用户通过语音同天猫精灵交互的流程图。
- 用户用语音唤醒天猫精灵,后者接收到用户语音,上传到智能应用平台。
- 平台使用 ASR(音频转文字)和 NLP(自然语言处理)技术,智能解析出用户发出语音包含的意图(通俗的说,即用户当前期望天猫精灵完成什么样的操作)。平台会自动将当前用户指令,匹配到开发人员创建的对应的技能和意图去。具体的匹配过程,就是将平台所有解析到的参数信息,通过 HTTPS 请求访问开发者提供的服务接口。
- 开发者负责实现的服务(托管在自己的应用服务器或者阿里云 Serverless 环境),接收到平台发送的请求参数,执行业务逻辑(比如天气预报查询,智力题,语音游戏等),并组装回复结果。
- 智能应用平台收到开发者服务执行完业务逻辑返回的响应数据后,使用 TTS(文字转音频)合成音频,并将音频推送回天猫精灵。
- 天猫精灵将收到的音频通过麦克风播报出来,本轮同用户的交互就完成了。
七、总结
- 语音识别就是把声学信号转化成文本信息的一个过程,中间最核心的算法是声学模型和语言模型,其中声学模型负责找到对应的拼音,语言模型负责找到对应的句子。
- 除了上面提到的基本内容外,其实还涉及到很多相关的内容,比如:方言识别/外语识别、语种识别(LID、声纹识别(VPR)、情绪识别等,感兴趣的可以自行查阅资料学习。