system: [SYSTEM]

user: 2. 声纹识别基本理论 2.1. 声纹识别的分类 作为模式识别的一类，声纹识别的主要任务是通过待测试语音来判断对应说话人身份。声纹识别可以分为两类。若已知待测说话人的范围，需要通过随机或者特定的语音段来判断是否属于某个说话人，这属于声纹确认技术。这种问题是1对1的身份判别问题。若待测说话人的身份范围没有确定，需要通过随机或者特定的语音段来确定说话人的身份，这属于声纹辨认技术。这种问题是1对N的身份辨别问题。 声纹识别问题又可以分为与文本相关的声纹识别和文本无关的声纹识别。对于文本相关问题，待测试语音段的内容需要和系统中预先登记的内容相同。对于文本无关问题，待测试语音段的内容可以与系统中预先登记的内容不同，待测试说话人可以只说几个字来进行身份认证。本文涉及的是1对1的、文本无关的身份判别问题。 2.2. 语音信号的预处理和特征识别 2.2.1. 语音信号的预处理 为了消除一些影响音频信号质量的因素，在进行声纹识别之前，一般要对语音信号进行预处理。语音信号的预处理一般包括预加重、分帧和加窗等。一般情况下，经过语音预处理后得到的信号会更加均匀、流畅，频谱更清晰。语音信号经过预处理，可以增强语音处理的效果。 1) 预加重 由于语音信号的高频部分在传输过程中会衰减，这种衰减严重影响声纹识别的效果，所以必须在传输线路的起始端对信号的高频部分进行增强。这种技术被称为预加重技术预加重技术可以有效地提高输出信噪比，因为其对噪声没有影响。一般说来，将信号通过一阶有限冲激响应高通数字滤波器就可以实现。数字滤波器的系统函数为： H ( z ) = 1 − a z − 1 (1) 2) 分帧加窗 为了对语音信号进行频域分析，傅里叶变换是一种常见的工具。傅里叶变换的存在条件是信号经历的随机过程是平稳的，但是从宏观层面看，要求信号平稳的这个条件过于苛刻。在微观层面看，当信号被限定在一个较短时间内，就可以视为平稳信号。把信号的连续若干点设为一帧，这样的操作被称为分帧。分帧后的信号还不能马上进行傅里叶变换。由于分帧后的语音信号不光滑，信号的分辨率较差，因此在做傅里叶变换之前，还要先对信号乘以一个窗函数。这样的操作被称为加窗。加窗的目的是为了让分帧后的信号的两端无限接近于0。此项操作可以提高变换结果的分辨率。但加窗的会削弱信号两端的部分，所以在分帧时可以考虑相互重叠，重叠的部分一般是帧长的一半，这部分被称为帧移。 常见的窗函数有两种，分别是矩形窗和汉明窗。实验中采取的窗函数是汉宁窗，如图1所示。 图1. 汉宁窗函数 3) 语音活动检测 由于语音信号中即存在活动的部分又存在非活动的部分，为了区分这两种语音部分，语音活动检测技术应运而生。语音活动检测技术可以检测出原始语音信号中活动的语音，即存在人类语言的大部分，减少计算量。语音活动检测技术通常是与语音无关的。传统的语音活动检测的方法主要是提取语音信号的时域特征，例如短时能量、过0率、相关性和基音等 [ 10 ]。在信号的信噪比较高的情况下，语音活动检测的效果较好。 实验采取的是根据短时能量的大小来分辨语音信号和非语音信号。实验中利用Python语言中librosa工具包中的librosa.effects.split函数，可以将信号分成非静音间隔，方便后续处理。 2.2.2. 语音特征提取 为了将语音信号转换为计算机能够处理的特征向量，需要提取语音信号的参数特征，这样的操作被称为语音特征提取。常见的语音特征提取方法有以下几种。 1) 线性预测分析(Linear predictive coding， LPC) 线性预测分析最早由Weiner于1967年提出，后被应用于许多研究领域 [ 11 ]。 线性预测分析的思路就是通过线性组合过去的语音样本，使得线性预测样本的误差和实际语音样本的误差平方和最小，进而可以确定线性预测系数。也就是说，通过线性预测分析，可以用模型或信号的输出描述语音信号。系统的传输函数可以表示为： H ( z ) = G 1 − ∑ i = 1 r a i z − i (2) 这种系统称为全极点系统。其中分母多项式的系数称为线性预测系数。这样的信号模型在忽略一定精度情况下可以描述信号。线性预测分析就是在某个准则下，根据已知的语音信号对参数与进行参数估计。线性预测分析首先要解决的问题是如何通过语音信号确定参数集 { a i } ，使预测误差最小。一般采用最小均方误差准则进行参数估计。由于全极点模型易于计算，对其进行参数估计求解线性方程组，较易实现，因此线性预测模型采用全极点模型较为合理。 若该系统函数的分母多项式能够快速收敛，则仅仅需要前几项。因此，在实际应用中，可以用全极点模型近似表示零极点模型。 根据上述模型化思想，可对语音信号建立模型，将其中的声门激励、声道以及全部谱效应简化为一个时变数字滤波器来等效。其系统函数为： H ( z ) = S ( z ) U ( z ) = G 1 − ∑ i = 1 r a i z − i (3) 2) 线性预测倒谱分析(Linear prediction cepstrumcoding， LPCC) 线性倒谱系数是LPC参数在倒数谱中的表示，能够很好地反应人的声道特征 [ 10 ]。下面是由线性预测系数求解线性预测倒谱系数的递推公式，其中 a k 表示LPC系数。 c ( n ) = { 0                                                                       n < 0 ln ( G )                                                       n = 0 a n + ∑ k = 1 n − 1 ( k n ) C ( k ) a n − k         0 < n ≤ p ∑ k = n − p n − 1 ( k n ) C ( k ) a n − k                     n > p (4) 3) 梅尔频率倒谱分析(Mel frequency cepstrumcoding， MFCC) 为了更好的处理语音信号，往往可以考虑将语音信号的时频谱转换为梅尔谱。转换的方法是把信号通过一组梅尔标度滤波器。声学理论可知，人耳对语音信号的感知不是线性关系。如果我们将声谱图转换为梅尔谱，这种非线性的感知关系将转换为线性关系。梅尔频率与普通频率的关系如下： M e l ( f ) = 2565 × log 10 ( 1 + f 700 ) (5) MFCC特征参数的提取过程如下： 1、首先，对预处理后的信号进行快速傅里叶变换，得到各帧的频谱，平方以后可以得到语音信号的能量谱。 2、将得到的能量谱通过一组梅尔滤波器，其中滤波器的频率响应为： H m ( k ) = { 0                                                                                                                       k < f ( m − 1 )     or     k > f ( m − 1 ) 2 ( k − f ( m − 1 ) ) ( f ( m + 1 ) − f ( m − 1 ) ) ( f ( m ) − f ( m − 1 ) )                     f ( m − 1 ) ≤ k ≤ f ( m ) 2 ( f ( m + 1 ) − k ) ( f ( m + 1 ) − f ( m − 1 ) ) ( f ( m ) − f ( m − 1 ) )                     f ( m ) ≤ k ≤ f ( m + 1 ) (6) 其中 f ( m ) 为中心频率， m = 1 ， 2 ， 3 ， ⋯ ， M . M通常取22~26。 3、计算每个滤波器输出的对数值： S ( m ) = ln ( ∑ k = 0 N − 1 | X a ( k ) | 2 H m ( k ) ) ， 0 ≤ m ≤ M (7) 由此可以得到L阶MFCC系数，一般L取12~16之间。 MFCC特征参数提取过程如图2所示。 图2. MFCC特征参数提取过程图