第1章 语音识别综述
目录认识语音什么是语音音频的相关概念语音的声学分析语音中包含的信息言语工程认识语音识别什么是语音识别语音识别如何评估智能语音的应用SpeechProduction语音的产生基音频率/基频音素共振峰和协同发音音素抄本和音节语音产生和语音识别语音感知声音三要素响度音色音调掩蔽效应语音感知和语音识别语音识别的挑战性语音识别的发展历史语音识别的深度学习时代现代语音识别框架语料库与工具包认识语音什么是语音语音是人类自然交流的一种工具,是语言的物质外壳,是人类语言在声学上的表现形式。语音技术的发展带来了语音通信等一系列技术的变化,包括人机语音交互等研究工作。语音识别是人机语音交互过程中的一个重要环节。声是引起的一种震动,包括可听声和不可听声,而语音是整个声的范畴下的一小部分,是围绕着人类交流的发声系统所发出的声音。
声学(Acoustics)声学是研究声波的物理学科,研究声波的产生、传播和接收等基本原理。声学主要关注声音本身的物理特性,例如声音的频率、振幅、速度、波长等。声学也涉及到声音在不同媒介中的传播,例如在空气、水、固体等媒介中的传播。音频(Audio)音频是指声音的电子表示形式,它通常是通过将声波转换为电信号来生成的。音频可以被记录、编辑、存储、传输和播放。音频可以是音乐、语音、环境声音等,它是人们在日常生活和工作中经常使用的一种媒介。语音(Speech):语音是音频下的一个概念,是人类交流的一种声音。语音是指人类在语言交流中使用的声音,它是一种特定类型的音频。语音通常包括语言的声音、语调和节奏等元素。语音可以传达语言的含义和情感,因此在人类交流中起着至关重要的作用。语音技术的发展已经使得语音识别、语音合成等应用成为可能,这些应用对于人机交互、自然语言处理等领域具有重要意义。音频的相关概念下面简单介绍一些音频相关的基本概念,包括采样率、量化位数、通道数等,以及音频的编码方法和格式。
音频基本概念采样率:指音频数据在单位时间内采集的样本数。例如采样率为16KHz是指每秒钟采集的样本数为16,000个。量化位数:指采样数据的精度,通常用位数表示,例如16位(16bit)是指每个采样点可以表示2162^{16}216个不同的取值。通道数:指音频信号中的声道数量,常用的通道数有单声道(mono)、立体声(stereo,2声道)和多声道(N-Channels)。声道布局:指不同通道之间的位置关系和声音传播方向。常用的声道布局有2.0、5.1(5个主要声道+1个低音炮)、7.1等。音频编码方法参数编码参数编码是指将音频信号的某些参数,如频率、振幅、相位等信息进行编码,然后再将这些编码后的参数进行传输或存储。常见的参数编码方法包括ADPCM(自适应差分脉冲编码)、PCM(脉冲编码调制)等。参数编码具有压缩比较高的优点,但是需要解码器进行解码,会有一定的解码延迟。波形编码波形编码是指将音频信号的波形形状进行编码,然后再将编码后的音频数据进行传输或存储。常见的波形编码方法包括PCM、DPCM(差分脉冲编码调制)、Delta编码等。波形编码具有解码速度较快的优点,但是压缩比较低,需要较大的存储空间。混合编码混合编码是指将参数编码和波形编码结合起来,将音频信号的波形形状和某些参数信息同时进行编码和传输或存储。常见的混合编码方法包括MP3(MPEG-1音频层3)、AAC(高级音频编码)、Opus等。混合编码具有压缩比较高和解码速度较快的优点,是目前音频编码中应用最广的一种编码方式。音频编码格式PCM/WAVPCM(PulseCodeModulation)是一种无损音频编码格式,也是WAV文件格式的基础。PCM将模拟音频信号转换为数字信号,采用脉冲编码调制(PCM)将数字信号编码成音频文件。PCM/WAV文件通常采用的是16位、44.1kHz的采样率和量化位数,能够提供高质量的音频。MP3MP3(MPEGAudioLayer-3)是一种有损音频编码格式,具有较高的压缩比,通常压缩率可达到1:10。MP3采用了一些音频信号处理算法,如人耳掩蔽现象、频域编码等,以减小音频文件的大小。由于MP3采用有损压缩技术,因此会有一定的音频质量损失。MP3是目前应用最广泛的音频格式之一,适用于音乐、电影、电视等娱乐领域。SILKSILK是一种由Skype开发的音频编码格式,主要用于语音通信领域。SILK采用了一些高级音频编码技术,如可变比特率编码、宽频编码等,以提供更高的语音质量和更低的传输延迟。SILK支持多种采样率和比特率,适合于在不同网络环境下进行语音通信,如互联网电话、网络会议等。语音的声学分析语音是一种波,因此可以通过频率分析的方法对其进行分析。一般来说,一个波具有两个特性,即频率和振幅。频率指的是波在一秒钟内重复振动的次数,通常用每秒钟的周数来度量。振幅则表示波的能量。语音信号可以从时域和频域这两个方面进行分析。
时域
可以看到语音信号的波形,也就是声音的振幅随时间的变化。这些波形显示了声音的音量、时长、音调等特征。频域
傅里叶分析:分解语音信号,每个复杂的波形都能转化为由不同频率的正弦波组成的频域信号。语谱(spectra):语音信号在频域上的表示,描述了语音信号中包含的不同频率成分和它们的幅度。语谱可以用来描绘语音信号的频率特征,例如共振峰和基频等。语谱图(spectrogram):一种将语谱可视化的方式,通常是一个二维图像,其中横轴表示频率,纵轴表示时间,而颜色或亮度表示相应频率成分的幅度或能量大小。在观察音频信号时,我们通常需要将其转换到频率域中,从而更好地理解语音信号中不同频率成分的贡献。这可以通过傅里叶变换来实现。傅里叶分析是一种特殊的频率分析方法,它可以将复杂的波形分解为不同频率的正弦波组成。通过傅里叶分析,我们可以得到信号在频率域中的成分和幅度,这可以用语谱图来表示。语谱图可以是二维的,也可以是三维的,用来表示信号在时间和频率上的变化。
语音中包含的信息语音信号本质上就是一个波形,尽管它看上去非常简单,但其中所包含的信息却十分丰富。在我们说话的过程中,语音信号会受到环境和信道的影响,例如我们在不同的空间中说话时,会将不同的环境信息包含在录音当中。同时,如果我们需要将声音传输到远方,也会受到传输信道的影响。因此,我们需要对语音信号进行增强、分离和去混响等处理,以去除噪声和分离不同人的声音信号成分。此外,我们的语音信号还包含有情感信息,比如当人处于高兴、悲伤或生病等状态时,语音信号会发生相应的变化。因此,我们需要对情感状态进行识别和分析。其次,我们需要对语音信号中的内容信息进行解析。语音信号中的内容信息是指我们所说话的内容,包括语音识别和理解。语音识别是将语音信号转换为文本的过程,而理解则是对文本内容进行分析和理解。这也是我们进行自然语言处理的重要环节。同时,语音信号中也包含着语种、方言和口音等信息。因此,我们需要对这些信息进行识别和理解,以更好地理解语音信号中所包含的内容信息。最后,语音信号还包含着身份信息。每个人的声音都有其独特的特征,因此我们可以通过声音来识别身份。这也是声纹识别或者说话识别的一种应用场景。因此,我们需要对语音信号中的身份信息进行识别和分析。
言语工程实际上我们讲的是目前的语音技术,它是一个叫做言语工程的学科。语音技术是一个非常典型的交叉学科,可以用简单的一张图来描述,比如一些语音和语音学的知识,听觉和声学相关的知识,信号处理相关的知识,以及在语音辨识时需要的计算机学习和模式识别的知识,还需要进行算法设计等等来处理语音技术。这里面设计到几个不同的概念,需要大家了解一下。
语言学(Linguistics)语言学,是文科的一个概念,研究语言现象。目前还有一个计算语言学(computationallinguistics),实际上是跟自然语言处理非常相关的一个学科和概念,是通过计算机去研究这些语言现象。
语音学(Phonetics)分析一些语音现象,总结语音现象的规律等等,也是一门学科。
语音科学(Science)研究语音的一些机理性的东西,如语音的发音方式,人类如何获取和感知语音,以及语音与大脑之间的关联等等,这些属于语音科学的范畴。
言语工程(Engineering)我们实际上在做的属于言语工程,借助很多工具去做一些特别的言语任务,如语音编码、语音增强、语音识别、语音合成、声纹识别等等。
认识语音识别什么是语音识别回到语音识别这个话题,什么是语音识别呢?在英文中,我们称之为ASR(AutomaticSpeechRecognition),即自动语音识别,或称为语音转文本(SpeechtoText,STT)。它解决机器听清人类讲话的问题,但是不涉及听懂,也就是不会去理解讲话的内容,理解属于语义理解或自然语言理解范畴。语音识别要解决声学和(部分)语言混淆的问题,这里(部分)语言混淆举两个例子:例如,“Recognizespeech”or“Wreckanicebeach”这两个发音非常接近,但在语音识别中我们要区分它们的不同。另一个例子是“帮我拿快递”和“帮我拿块地”,发音基本一模一样,但最后的文字不同。后面要将的语言模型是解决这个问题的关键,它是根据语言的统计知识来解决这些问题的。
在语音识别中,我们解决的是共性问题,也就是当每个人发出相同的音并说出相同的话时,我们都能识别出同样的内容。例如,当你和我都说“今天天气不错”时,都能正确识别出这句话的文本。然而,语音识别并不解决以下两个问题。第一个不解决的问题是谁在说话,这涉及到说话人识别或声纹识别。第二个不解决的问题是语音的表达方式,也就是语音中包含的一些附加信息,例如语音的质量、韵律、情感、状态等,这些信息被称为paralinguistic信息或副语言信息。第三个也就是上面提到的,语音识别只关注将语音转换为文本的任务,而不涉及语音的意图或含义,这需要自然语言理解的任务来解决。
语音识别如何评估智能语音的应用SpeechProduction语音交互实际上具有一个称为“语音链条”的过程。这个语音链条涉及到三个层面,即发音者、听者,和讲话者的听觉反馈。
语音的产生发音者通过大脑控制发音器官的协调运动来发出声音。声音通过声波传到接收者的耳朵,接收者的耳朵通过大脑进行理解和感知。这个过程涉及到生理和心理层面。具体来说,发音的过程由大脑控制,神经肌肉发出命令给发音器官,协调运动产生声音。气流从肺部流向发音器官,最终从口鼻喷出声音。在这个过程中,有许多发音器官的介入,包括肺部、声门、软骨、舌头、牙齿和唇等。它们在发音过程中扮演不同的角色。正常情况下,人类产生语音是非常自然的现象。但是,一些疾病可能会影响肌肉系统或神经系统,导致人们无法正常发音。利用语音合成的技术可以帮助不能发音的人合成自然的音色,是一个非常有前途的应用。
发音和声音接收的过程由声门快速打开和关闭产生震动,声道、口腔和鼻腔接收震动形成共振,空气波动传到接收者的耳朵中,耳膜震动,内耳再经过神经接收,传到大脑进行辨识。
基音频率/基频我们可以将语音生成的过程简化为一个源滤波器模型,其中信号源表示声门,经过一系列的滤波器包括口腔鼻腔嘴型等等来产生声音。我们也可以从图中看到,声音的产生过程由门的阀决定,这个阀就决定了我们在发音过程中发出的是浊音还是清音。发音中的浊音由声带振动产生,这导致声音的波形具有明显的周期性,人类声音中最低的周期性振动频率成分被称为基音频率或基频(fundamentalfrequency,F0)。基频是声门振动产生的,它的频率决定了人类声音的音高。另一种声音叫做清音或无声音,在这种情况下,声带不振动,声门打开,气流从声门喷出,在通过其他部位的阻碍后产生声音。在这种声音中,我们不能明显地感受到某个音高的存在,其波形看起来像随机的噪声。因此,在记录声音波形时,清音和浊音有不同的表现。
在波形图和频谱图中,浊音和清音有不同的表现。对于浊音,可以看到明显的周期性和共振峰,而在清音中则没有。上图的最右列,在“threeo’clock”发音过程中,基频会随时间变化而变化。基音因为是由声门振动产生的,所以它的频率与声门振动的周期有关。在说话时,声门振动的周期由呼吸和声带张力等因素决定,不同人的基音频率也因此会有所不同。男性的基音频率一般较低,女性的基音频率一般较高,在成年人中男性的基音频率大约在85-180Hz之间,女性的基音频率大约在165-255Hz之间。关于声音的表达,我们可以从基频和声调两方面来看。英语是一种没有声调的语言,虽然有时会有句调,但是发音并不会有明显的音高变化。相比之下,中文普通话是一种带调的语言,我们通常会用四个标准声调和一个清音来表达意思,这四个声调分别是平声、仄声、上声和去声,如果我们统计每个声调的基频走势,我们会发现它们在高低音上有明显的区别。因此,我们说中文的四个声调是根据基频的走势定义的。
音素在语音的声学过程中,我们用音素(Phonemes)来描述语音的最小单元(primitivesounds),也就是可以区分的最小发音单元。不同语言中的音素数量是不同的,英文一般有40到50多个音素。此外,音素的表现也会受到上下文和语境的影响,同一个音素在不同条件下的表现可能不同,我们称之为同位异音(allophone)。例如,“spin”和“pin”中的/p/音,以及“bat”和“bad”中的/a/音。
在语音表达中,还有一个重要的概念需要了解——“词素(语素)”(morpheme),是语言中最小的具有语义的结构单元。在中文中,一个汉字通常可以被看作是一个词素或语素,这个概念是从字形上来区分的,与音素是不同的概念。
音素可以分为辅音音素可以分为辅音(consonants)音素和元音(vowels)音素。辅音是由限制或者阻隔气流而产生的音,可以按照发音时气流受到最大阻挡的位置进行分类,例如唇音、齿音、齿龈音等;也可以按照发音行为进行分类,例如爆破音、摩擦音、鼻音等。元音是由于声带振动而产生的音,通常是浊音,例如[aa],[ae],[ao],[ih]。元音也可以根据发音位置的不同进行描述,例如舌头的位置、嘴唇的圆度等。在英语中,不同的单词中,元音的发音位置也可能不同,例如下图中“beat”、“bat”和“boot”中的元音发音时舌头的位置就不同。
共振峰和协同发音接下来,我们将介绍两个与音素相关的重要概念:共振峰((formant)和协同发音(Coarticulation),它们对于语音识别非常重要。在语音信号的产生过程中,声音从声带的振动开始,然后通过共振腔道的共振作用,声音受到了滤波的作用,使得频域中的不同频率的能量进行了重新的分配。一部分频率因为共振腔道的共振作用得到了强化,而另一部分会受到衰减。共振峰可以帮助我们理解语音信号在频域中的能量分布情况。在频域中,能量比较集中的区域被称为共振峰,即声学中声音频谱中具有相对于周围频率范围内较高的峰值的频率点。共振峰的位置与共振腔道的形状有关,不同的共振峰对应着不同的共振腔道形状,因此反映了声道的物理特性。通过观察语音信号的共振峰位置,我们可以识别出不同的语音单元,例如不同的音素和音节。另一个重要概念是协同发音,也称为共同发音。我们的发音过程在发每一个音时都会受到前后发音的影响,即前一个音可能还需要一段时间才能到位,而后一个音的发音器官的惯性也会影响到当前音的发音。这种影响被称为协同发音作用。这种音素在不同上下文中的表现形式有很大的不同,因此在语音识别中,我们需要考虑上下文相关的现象,建立上下文相关的模型。例如,我们可以建立三音素和三音子的模型,即A-B+C,考虑前一个音素和后一个音素的情况。具体的建模方法将在第五章基于GMM-HMM的语音识别中进行详细描述。我们可以从上图看到,在不同的语境下,同一个音的发音表现形式有很大的不同,这也是协同发音的表现形式之一。
音素抄本和音节**音素抄本(PhoneticTranscription)**是一种使用特定符号或字母来表示语音音素的书写系统。它将口语中的音素(语音中最小的音位单位)转写成书写体系中的符号,以便于语音研究、语音教学和语音识别等方面的应用。音素抄本通常使用国际音标(InternationalPhoneticAlphabet,简称IPA)来表示不同的语音音素。国际音标是一种被广泛采用的音标系统,它包括了所有语言中可能出现的音素,并为每个音素分配了一个唯一的符号。通过使用音素抄本,人们可以更准确地记录和描述不同语言的发音,从而促进不同语言之间的交流和研究。如何获得音素的时间边界?一种方法是通过人工听写和标注,另一种方法是“强制对齐”技术,利用语音识别来实现。在进行声学建模之前,我们需要音素边界或者更小的音素状态边界。因为在声学模型训练中,我们是以帧为单位进行建模的。因此,音素抄本和它所对应的语音数据是进行声学模型训练的必要条件。
**音节(Syllable)**是组成语音的基本单位之一,通常由一个或多个音素组成,是一个有声音和时间长度的基本单位。一个基本的音节通常至少包括一个元音音素,也可能包括一个或多个辅音音素,其组合形式取决于不同的语言。在一个单词中,每个音节可以被看作是一个可辨认的音节节拍,通常由一个主要的元音音素和一个或多个辅音音素组成,例如英语单词“cat”就是一个由一个辅音/k/和一个元音/æ/组成的音节。音节在语言学中具有重要的地位,因为它们是组成单词的基本单位之一,同时也影响着单词的发音和韵律。在语音识别中,音节也可以作为解模单元,尤其是在端到端语音识别的框架下。
语音产生和语音识别上面我们讲了语音的产生或生成的过程,以及语音的单元音素是如何进行区分和归类的。我们怎么从中借鉴一些思想,用于语音识别呢?首先,我们可以直接使用声学语音学的特征,例如我们可以从发音的位置和行为中提取一些发音特征,或者抽象出发音的属性。我们可以直接使用这些特征或属性进行语音识别。然而,研究发现使用这些属性和特征进行语音识别的建模效果有限。尽管如此,这些语音生成的过程知识对我们的语音信号处理仍然具有指导意义。比如,我们可以将发音的过程抽象为一个源滤波器的过程,这样的数学模型在语音相关的许多任务中得到了应用。此外,我们可以利用一些激励信息来配合语音识别,例如升调的信息,对于英文可以忽略,但对于中文来说是很重要的,因为中文是带调的语言。语音产生的过程对建模单元也具有指导意义,比如我们了解到协同发音的现象,所以可以考虑建立上下文相关的模型来提高语音识别的性能。此外,发音的上下文还有一些类似的现象,例如发某一个音的时候左边可能都是纯齿音,右边可能都是爆破音。我们可以利用这些发音上下文的类似现象,对A-B+C的上下文相关的模型进行聚类,把它们聚成更有意义的一些类别,每个类别共享一组参数。这就是决策树聚类,我们在后续的课程中会深入讲解这个系统发音,并说明如何将其应用于语音识别。
语音感知研究语音非常有意思,我们不仅要研究发音,还要研究听觉。也就是说,我们需要了解人类如何辨识声音,如何辨识不同的发音。实际上,语音感知的过程是由人耳完成的。人耳接收声音后将其传递到大脑进行理解。因此,人耳是非常重要的一个器官,我们可以将它看作是一个频谱分析仪。这也可以从心理物理学的一些证据中得到证明,即人耳在语音处理中进行频率分析。
声音三要素下面了解一下在感知声音方面的物理特性以及人耳的主观听觉特性。我们可以通过描述声音的物理量,如声强、基频、频谱形状、起始和结束时间以及双耳的相位差等,来了解人类主观感知声音所对应的量是什么。其中,声强对应响度,基频对应音高或音调,频谱形状对应音色或音位,而双耳的相位差可以帮助我们主观地定位声源。这里面涉及到声音的三个要素,也就是主观感知声音的三个心理量:响度、音高和音色。其中,响度是指人主观感觉到的不同频率成分的声音强度,而人对不同频率声音的响度感觉并不平坦,而是非线性的。在讲解响度之前,我们先了解一下声压级。声压级是声音强弱的单位,我们可以通过设备采集声压来测量声音强度。通常所说的声音分贝数实际上是声压级的一种表示。P0(ThresholdofHearing)是能够刚好听到的声音的声压级,我们将其定义为0分贝(0dB)。在右上图的表中,我们可以看到不同场景下的声压级。
响度响度是指人对于不同频率的声音感受到的主观强度。在不同频率下,人耳感受到的声音响度是不平坦的,也就是说它是一个非平稳的过程,这意味着频率和响度之间的关系是非线性的。我们可以从上图右侧中看到,每一条曲线都代表着一个等响度曲线。横轴表示频率,人类能够听到的频率范围通常在20Hz到20kHz之间。纵轴表示声压级,也就是声音的强度。每一条等响度曲线上,人类主观感受到的响度是相等的,也就是说,同一条曲线上的不同点所产生的响度是相同的。在等响度曲线中,有两条特殊的曲线。最下面的一条线是闻阈,代表人类能够刚好听到声音的响度下限。而另外一条线则是痛阈,也就是最上面的一条线,如果声音的响度超过了这条线,人类就会感到非常疼痛,即痛阈代表着可能引起疼痛的响度上限。
音色音色,又称音品,影响音色特征的因素有:
由声音波形的谐波频谱和包络形状决定。谐波频谱指的是声音中各个谐波成分的相对强度和比例,包络则是指语音信号在时间上的振幅变化曲线,可以用来描述声音的强度和瞬态特性。
每个基音都有固有的频率和不同强度的谐波成分,基音的强度和谐波成分的相对强度和比例在很大程度上决定了语音的音色特征。基音是声音波形的基频,它是声波中频率最低的成分,也是人耳能够听到的最清晰的音。在说话或唱歌时,人类的声带会周期性地振动,产生一系列的声波,其中最低频率的成分就是基音,基音的频率决定了人类声音的音高。泛音是指高于基音频率的周期性振动频率成分,也称为谐波。泛音是由于声带振动引起的共振现象产生的。当声带振动时,它会产生一定的声波,这些声波会在喉咙和口腔等共鸣腔内发生反射和共振。由于不同共鸣腔的大小和形状不同,它们对不同频率的声波会产生不同的共振增强效果。这就意味着,声带振动所产生的声波中,与共鸣腔中的谐波频率相对应的成分会被共振增强,从而在声波中表现出比较明显的能量峰。这些能量峰就是谐波或泛音。单一频率的音称为纯音,而具有谐波的音称为复音。
语音信号中的谐波成分随着频率的增加而逐渐衰减,衰减率可以影响谐波成分的相对强度和比例,进而影响语音的音色特征。音调由于基频会随着时间的变化而产生变化,从而形成语音信号的音调。音调指的就是语音信号的基频在时间上的变化,它可以反映说话人的情感、语气、语言习惯等方面的信息,不同的语言和方言有不同的音调系统。因此音调是说话人的语音特征之一。
音调通常用基频f0f_0f0来描述,而基频的单位是Hz,也可以用kHz表示。基频f0f_0f0和频率fff的关系可以用公式f=nf0f=nf_0f=nf0表示,其中,nnn是一个整数,称为谐波编号。谐波是指基频的整数倍频率的成分,也就是2f02f_02f0、3f03f_03f0、4f04f_04f0等等。
梅尔是一种人耳听觉感知频率的度量方式,它与物理频率fff之间存在非线性关系,但并不直接表示音调。梅尔的单位为Mel,可以用梅尔频率公式将物理频率fff转换为梅尔频率MMM:M=2595log10(1+f700)M=2595log_{10}(1+frac{f}{700})M=2595log10(1+700f)
掩蔽效应语音感知和语音识别让我们来总结一下语音感知和语音识别之间的关系。
语音识别的挑战性对于10个不同口音的说话人,我们在一个语音识别系统里面去测试字错误率,可以看到是完全不一样的。
语音识别的发展历史语音识别的深度学习时代现代语音识别框架语料库与工具包