《spoken language processing》
pitch 音调 以HZ为单位
基频又称音高
能量又称音强
说话的声音(声带震动)和其他声音相比,有独特的时域和频域模式。声带的震动产生基频(fundamental frequency),口腔共振(the pharyngeal and oral resonance cavities)等产生高频谐波
就是声带的闭-开频率
语图纵坐标是Frequency (Hz) ,横坐标是Time (s) 。语图上还有第三个维度,颜色的深浅,就是表示振幅的大小,即音强(sound intensity)。每隔5ms进行一次傅里叶变换。
语图某段频率相对于周围较黑,就是说这里振幅较大,音强较大。我们把这一段称为「共振峰」。相对周围较黑的有几处,就有几个共振峰。一般以一段较黑的条纹的中间位置作为共振峰的频率值,是一个声音区别于其他声音的主要特征,观察共振峰和它们的转变可以更好的识别声音。也就是说,共振峰是声音的主要特征。人耳就像一个滤波器组一样,它只关注某些特定的频率分量,所以人的听觉系统是一个特殊的非线性系统,它响应不同频率信号的灵敏度是不同的。
form https://www.zhihu.com/question/24190826/answer/32315664
• 1、辅音发音时,气流在通过咽头、口腔的过程中, 要受到某部位的阻碍;元音发音时,气流在咽头、 口腔不受阻碍。这是元音和辅音最主要的区别。
• 2、辅音发音时,发音器官成阻的部位特别紧张; 元音发音时发音器官各部位保持均衡的紧张状态。
• 3、辅音发音时,气流较强;元音发音时,气流较 弱。
• 4、辅音发音时,声带不一定振动,声音一般不响 亮;元音发音时,声带振动,声音比辅音响亮。
一般只有元音(一些介于元音辅音中间分类不明的音暂不讨论)才会有共振峰,而元音的音质由声道的形状决定,而声道的形状又通过发音的动作来塑造(articulatory+movements)。
语谱图上频率能量峰值按照时间延伸形成带状
from 安时
Discrete-time model for speech production.
语音编码技术的目的:为了减少传输码率或存储量,以提高传 输或存储的效率。经过这样的编码之后,同样的信道容量能传 输更多路的信号,如用于存储则只需要较小容量的存储器。因 而这类编码又称为压缩编码。需要在保持可懂度与音质、降低数码率 和降低编码过程的计算代价三方面折衷。
电话的语音采样频率为8khz. 评价分辨率好坏的标准:the Mean Opinion Score (MOS)
解码延迟: Coder delay is the sum of different types of delay. The first is the algorithmic delay arising because speech coders usually operate on a block of samples, called a frame, which needs to be accumulated before processing can begin. Often the speech coder requires some additional look-ahead beyond the frame to be encoded. The computational delay is the time that the speech coder takes to process the frame. For realtime operation, the computational delay has to be smaller than the algorithmic delay. A block of bits is generally assembled by the encoder prior to transmission, possibly to add error-correction properties to the bit stream, which cause multiplexing delay. Finally, there is the transmission delay, due to the time it takes for the frame to traverse the channel. The decoder will incur a decoder delay to reconstruct the signal. In practice, the total delay of many speech coders is at least three frames.
编码纠错[1]
Fundamental Equation of Statistical Speech Recognition
解码(decoding):把直接的观测结果看作是源码的编码,那么根据编码推测源码就是解码过程,是根本目的。解码可以是直接在可行解空间进行搜索。一般来说遍历搜索是不可行的,因为解空间是巨大的,甚至是无穷大的,普遍采用的是启发式搜索(即生成式搜索,另一种搜索思路是进化搜索)。
决定语音分布的因素(因此在生成训练样本需要下面因素的变化才能拟合正式环境下的语音分布):
端点检测:
过零率[2]
谱熵分布
频带方差
二分类器
the EM algorithm can iteratively estimate the Gaussian parameters without having a precise segmentation between speech and noise segments.
决定短时能量特性有两个条件:不同的窗口的形状和长度。
窗长越长,频率分辨率越高,而时间分辨率越低。如果很大,它等效于很窄的低通滤波器,此时随时间的 变化很小,不能反映语音信号的幅度变化,信号的变化细节 就看不出来;反之,窗长太小时,滤波器的通带变宽,随时 间有急剧的变化,不能得到平滑的能量函数。
矩形窗谱平滑性能好,但损失高频成分,波形细节丢失, 海明窗与之相反
提取MFCC特征的过程:
1)先对语音进行预加重[3]、分帧[4]和加窗[5];
2)对每一个短时分析窗,通过FFT得到对应的频谱[6];
3)将上面的频谱通过Mel滤波器组[7]得到Mel频谱;
4)在Mel频谱上面进行倒谱分析(取对数,做逆变换,实际逆变换一般是通过DCT离散余弦变换来实现,取DCT后的第2个到第13个系数作为MFCC系数),获得Mel频率倒谱系数MFCC,这个MFCC就是这帧语音的特征;
Mel三角滤波器组
MFCC参数提取
![特征普遍采用的语音特征[8]](http://upload-images.jianshu.io/upload_images/3444195-0882821befe50ddc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
模板匹配语音识别系统基本构成
语音识别模式匹配的问题:时间对准
方法1:线性时间规整,均匀伸长或缩短 – 依赖于端点检测; – 仅扩展时间轴无法精确对准;
方法2:动态时间规整 – DTW-Dynamic Time Warping; – 60年代Itakura提出来的;其思想是:由于语音信号是一种具有相当大随机性的信号, 即使相同说话者对相同的词,每一次发音的结果都是不同 的,也不可能具有完全相同的时间长度。因此在与已存储 模型相匹配时,未知单词的时间轴要不均匀地扭曲或弯折, 以使其特征与模板特征对正。 动态时间规整DTW是一个典型的优化问题,它用满足一定条 件的时间规整函数描述输入模板和参考模板的时间对应关 系,求解两模板匹配时累计距离最小所对应的规整函数。
DTW的问题:
DTW适合于特定人基元较小的场合,多用于孤立 词识别;
phoneme是用于区别词汇的最小单元,音节(Syllables)介于音素和单词的中间,说话时一次发出的, 具有一个响亮的中心,并被明显感觉的语音片断。为什么不以词语作为识别单元?词汇太多;无法应对新产生的词。声学单元越小,其数量也就越少,训 练模型的工作量也就越小;但另一方面,单元越 小,对上下文的敏感性越大,越容易受到前后相 邻的影响而产生变异,因此其类型设计和训练样 本的采集更困难。不过phone是一个相邻无关的单元,而triphone是考虑到相邻phone对当前phone的影响,于是认为只有当前后及本身的phone都相同时才认为是同样的triphone. 每个词的发音可能有多种变化方式,在子词串接时,必须有所体现。
替换:即词中的某个音子可能被用其它相似 而略有差异的子词单元所替换。
插入和删除:词中有时增加了一个不是本词 成分的子词单元,有时又将本词成分中的某个 子词删除。
声学模型选择---声学单元如何组成词
我们认为语音是由许多状态组成的一个HMM序列所生成出来的:每一个时刻t到达某个状态s,s按照自己的分布产生一个采样(观测),这个采样就是MFCC参数,于是一段时间内产生了一个MFCC参数序列,即是特征提取后的语音。生成一段语音的GMM-HMM模型不是固定的,而是很多building block组合起来的,building block可以是一个状态,也可以是三个状态(triphone)。我们需要确定的模型参数就是所有这些building block的观测分布(GMM参数)以及它们之间的相互转移与自转移概率(HMM参数)。另外,根据一段语音的MFCC参数,在已知GMM、HMM参数的情况下,计算可能的状态序列概率,以找出最大可能的状态序列(decoding).
对于一个给定的观测序列(O1,O2,O3),计算某状态序列(1->2->2)的概率。可以看到每隔状态对应一个分布,而观测是分布的一个采样
根据HMM的分布观测样本空间的是否离散,HMM分为离散HMM和连续HMM. 由于原始输入的信号是连续空间的,转化为离散HMM需要进行"采样",也就是将连续样本空间划分成M块,用块值代替原始的样本。
半连续HMM(SCHMM):相当于离散HMM和连续HMM的混合。状态输出的特征向量是连 续的,也是用多个高斯分布的加权和来近似概率分布函数,但是 用来作加权和的高斯函数的集合是固定的,类似于对高斯密度函 数建立了“码本”,各个状态输出概率密度之间不同的是对“码 本”中各个高斯密度函数的加权系数。
训练过程分为两个部分:GMM、HMM
GMM没有利用帧的上下文信息 • GMM不能学习深层非线性特征变换
连续语音识别的声学模型和语言模型
大词汇量连续语音识别技术
文本分析的主要功能是使计算机知道要发什么音、怎么发音,并将发 音的方式告诉计算机。对于汉语来说,还要让计算机知道文本中的词 边界、短语边界、句子边界,以便发音时设置不同长度的停顿。文本 分析还应将汉字、符号、数字等转换成适当的拼音。
• 文本分析的结果既要告诉计算机发什么音,也要告诉计算机以什么方 式发音。如:发音的声调;音节是长还是短;是重还是轻;是高还是 低;到哪儿应该停顿,停顿的长短。TTS系统要给出代表这些韵律特 征的声学参数,这就是韵律生成模块的功能。
• 计算机知道要说什么以及有了韵律控制参数后,计算机通过声学模块 产生语音输出。在系统中,声学模块负责产生合成语音。声学模块从 语音数据库中选取适当的语音基元,拼接成语句, 再经过韵律修饰, 就可以输出自然连续的语声流。
• 文本分析、韵律生成可以采用基于规则或基于数据驱动的方法。韵律 修饰可以直接改变波形或进行参数变换。
韵律分析(prosodic analysis):对音素序列添加适当的停顿和延迟信息,这也是prosody与phoneme之间的区别。停顿添加的训练是用二分类器
利用人工标注的韵律分解,使用决策树作二为分类器
基频建模
- 双音合成 diphone
非拼接方式,对于每一个phone都需要一个duration 和 F0值
两个缺点:
1. 必须对原音频进行信号处理,导致听上去不自然
2. 仅考虑一个相邻音素的影响
单元选择合成 (unit selection)
拼接(concatenative)方式,没有对拼接单元进行信号加工。diphone有多样本,每一个都以长句子形式存储,因此每一个diphone样本的上下环境非常丰富,因此在需要合成的时候,我们挑选最合适的diphone样本,而无须对diphone进行信号加工
在选择时我们考虑的合适指标有两个方面:
对应于两个数值指标:
In the HMM-based speech synthesis,一个语音单元的语音参数:语谱spectrum, 基频fundamental frequency (F0),音长 phoneme duration are statistically modeled and generated by using HMMs based on maximum likelihood criterion.
一个状态的输出是MFCC参数向量,但是观测样本仅与当前状态相关,与相邻的观测样本没有直接相关,这样和i出现不平滑。为了保证平滑,并不是直接对状态的分布函数进行采样,而是输出分布(GMM参数),在T时刻后,对每一维的参数进行平滑采样。
HMM-based speech synthesis system.
mean opinion score (MOS) tests were conducted. In the paired comparison tests, after listening to each pair of samples, the subjects were asked to choose which they preferred, though they could choose “neutral” if they did not have any preference. In the MOS tests, after listening to each stimulus, the subjects were asked to rate the naturalness of the stimulus in a five-point Likert scale score (1: Bad, 2: Poor, 3: Fair, 4: Good, 5: Excellent).
说话人之间的差异对非特定人语音识别系统造成的影响主 要有两方面原因:
(1) 当某一使用该系统的说话人语音与训练语音库中的所有说话人 的语音都有较大的差别时,对该使用者的语音系统的识别性能会有严 重的恶化;
(2) 训练一个较好的识别系统需要采集数量很大的说话人的语音用 于训练,让训练语音库覆盖更为广泛的语音空间,这样虽然可以减低 样本空间分布中影响,但同时会造成识别系统参数分布较广,而不是 较为尖锐的分布,造成识别性能的下降
文本相关的语音转换:相当于文本中的平行语料:对同一句话,不同人进行语音实现,得到的平行语音作为训练样本
TTS system can generate synthetic speech which closely resembles an arbitrarily given speaker’s voice using a small amount of target speaker’s speech data by applying speaker adaptation techniques such as MLLR (Maximum Likelihood Linear Regression) algorithm
文本无关的语音转换:没有平行语料。使用场景可以大大拓展,也可以用于跨语言语音转换。从音素的角度出发进行建模
基于Pitch Target模型的基频转换框架
GMM的基频转换方法
对话系统的特点
语音理解过程都是分两步完成的:
对话管理系统要做到能够在与用户多次交 互的情况下保持回答的连续性和合理性, 并 且能够处理用户在交互过程中转变提问目 的的情况。
在已经实现并应用的对话管理的设计中, 主 要有:基于状态图的结构、填充槽结构和 基于任务的结构。
基于状态图的结构采用有限状态机来控制对话的进行:
填充槽结构采用一个多维特征向量来表示对话 的情况, 并且在对话的过程中不断地修改向量的值。特征向量通常是由从用户接收到的信息和一些 状态标志组成, 根据特征向量的值来决定下一 步的操作。
这种方法与上一种基于状态图的方 法的最大区别在于: 对于操作的顺序没有严格的限制, 即只关心当前对话的状态信息, 根据现在的状态作出反应, 然后根据 用户的回答或系统的反应修改特征向量。
因为这种结构不考虑整个对话的顺序, 所以 比基于状态图的结构适应更多的对话类型。 同样, 这种结构也有着自己的适应范围。
– ①与基于状态图的结构一样, 也要列出所有的可 能状态, 即所有可能的特征向量。
– ②由于填充槽的结构要求列出所有的槽来表示 状态, 所以槽的数目要有一定的限制, 这也是对 其可以实现的系统范围的一个约束; 并且由于它 只记录信息存在的状态, 所以对于多提问目标的 情况就难以应对
基于任务的结构是一种目前最受瞩目的结构, 并且适应 的范围也最为广泛。-
对于一个应用的领域, 通常采用树型结构来描述任务。在表示领 域的根节点下面的第一层子节点是任务节点, 任务节点的子节点 表示解决这个任务所可能用到的信息要素, 一个信息要素节点的 子节点表示这个信息要素的子要素。要素之间的关系, 如 “与”、“或”等, 在节点关系中体现出来。若两个节点之间是 “与”的关系, 则表示两个节点要同时满足才能完成这两个节点 的父节点; 若节点之间是“或”的关系, 则表示两个节点只要满 足一个即可。若领域包含的信息元素间的关系比较复杂, 则还会 包括其他节点间关系。当用户与系统交互的时候, 系统首先要判 断用户的任务是什么, 即要达到什么样的交互目的; 然后找到相 对应的任务树, 将用户提供的信息填进各个信息要素的节点中。 根据节点间的逻辑关系判断目前所拥有的信息量是否足够完成 该任务, 如果不能, 找到缺少信息的节点, 根据节点所定义的提问 方法对用户进行提问, 要求用户对该节点的信息进行补充, 即根 据任务树来不断地制定修改进度表。
语音检索就是在语音数据库中搜索查询其中出现的关键词。 语音检索需要使用自动语音识别(ASR)技术分析语音数据的 内容。
在语音检索中,首先采用ASR技术为语音数据库建立索引, 然后在检索时,先从查询中提取关键词,接着从索引数据 库中搜索这些关键词,并对搜索到的结果进行置信度计算 以判别其有效性。最后根据搜索到的文档与查询间的相关 程度对查询结果进行排序输出。
用于语音检索的常用技术有关键词检出技术、 连续语音识别技术和说话人识别技术等
语音增强是指当语音信号被不同噪声干扰、甚至淹没 后,从噪声背景中提取有用的语音信号,抑制噪声干 扰的技术。语音增强在语音识别、语音编码等领域有着重要的应用,是语音交互 系统中最前端的预处理模块。
噪音类型:1. 混响 2. 背景噪声 3. 人声干扰 4. 回声
单通道语音增强
数据驱动(例如深层神经网络)
多通道语音增强
差错控制编码:想在一个带宽确定而存在噪声的信道里可靠地传送信号,无非有两种途径:加大信噪比或在信号编码中加入附加的纠错码。
from http://fiber.ofweek.com/2016-10/ART-210007-8500-30059906.html ↩
在离散时间语音信号情况下,如果相邻的采样具有不同的代数符号就称为发生了过零。单位时间内过零的次数就称为过零率。清音的过零率明显高过浊音的过零率 ↩
预加重的目的是提升高频部分,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱。同时,也是为了消除发生过程中声带和嘴唇的效应,来补偿语音信号受到发音系统所抑制的高频部分,也为了突出高频的共振峰。 ↩
分帧: 先将N个采样点集合成一个观测单位,称为帧。通常情况下N的值为256或512,涵盖的时间约为20~30ms左右。为了避免相邻两帧的变化过大,因此会让两相邻帧之间有一段重叠区域,此重叠区域包含了M个取样点,通常M的值约为N的1/2或1/3。通常语音识别所采用语音信号的采样频率为8KHz或16KHz,以8KHz来说,若帧长度为256个采样点,则对应的时间长度是256/8000×1000=32ms。 ↩
加窗(Hamming Window):将每一帧乘以汉明窗,以增加帧左端和右端的连续性。 ↩
FFT:由于信号在时域上的变换通常很难看出信号的特性,所以通常将它转换为频域上的能量分布来观察,不同的能量分布,就能代表不同语音的特性。所以在乘上汉明窗后,每帧还必须再经过快速傅里叶变换以得到在频谱上的能量分布。对分帧加窗后的各帧信号进行快速傅里叶变换得到各帧的频谱。并对语音信号的频谱取模平方得到语音信号的功率谱。 ↩
Mel三角带通滤波器:对频谱进行平滑化,并消除谐波的作用,突显原先语音的共振峰。(因此一段语音的音调或音高,是不会呈现在 MFCC 参数内,换句话说,以 MFCC 为特征的语音辨识系统,并不会受到输入语音的音调不同而有所影响) 此外,还可以降低运算量。 ↩
一帧的音量(即能量),也是语音的重要特征,而且非常容易计算。因此,通常再加上一帧的对数能量(定义:一帧内信号的平方和,再取以10为底的对数值,再乘以10)使得每一帧基本的语音特征就多了一维,包括一个对数能量和剩下的倒频谱参数。 ↩