语音信号处理(2):文本相关的声纹识别系统(MFCC、VQ)

    本文基于Matlab设计实现了一个文本相关的声纹识别系统,可以判定说话人身份。简单理解即为一个声纹锁(类似指纹锁)。整个系统的源代码,可以从这里下载:【基于Matlab的声纹锁】

系统原理

  a.声纹识别

    这两年随着人工智能的发展,不少手机App都推出了声纹锁的功能。这里面所采用的主要就是声纹识别相关的技术。声纹识别又叫说话人识别,它和语音识别存在一点差别。


  b.梅尔频率倒谱系数(MFCC)

   梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient, MFCC)是语音信号处理中最常用的语音信号特征之一。
    实验观测发现人耳就像一个滤波器组一样,它只关注频谱上某些特定的频率。人耳的声音频率感知范围在频谱上的不遵循线性关系,而是在Mel频域上遵循近似线性关系。
   梅尔频率倒谱系数考虑到了人类的听觉特征,先将线性频谱映射到基于听觉感知的Mel非线性频谱中,然后转换到倒谱上。普通频率转换到梅尔频率的关系式为:



   更加详细的Mel频率倒谱系数介绍,可以参考这里: 【梅尔频率倒谱系数(MFCC)】

  c.矢量量化(VectorQuantization)

    本系统利用矢量量化对提取的语音MFCC特征进行压缩。
    VectorQuantization (VQ)是一种基于块编码规则的有损数据压缩方法。事实上,在 JPEG 和 MPEG-4 等多媒体压缩格式里都有 VQ 这一步。它的基本思想是:将若干个标量数据组构成一个矢量,然后在矢量空间给以整体量化,从而压缩了数据而不损失多少信息。详细介绍可以参考:【矢量量化】

系统结构

    本文整个系统的结构如下图:
  –训练过程
   首先对语音信号进行预处理,之后提取MFCC特征参数,利用矢量量化方法进行压缩,得到说话人发音的码本。同一说话人多次说同一内容,重复该训练过程,最终形成一个码本库。
  –识别过程
   在识别时,同样先对语音信号预处理,提取MFCC特征,比较本次特征和训练库码本之间的欧氏距离。当小于某个阈值,我们认定本次说话的说话人及说话内容与训练码本库中的一致,配对成功。


测试实验

a.训练

说话人:我
发音内容:“芝麻开门”

b.识别结果1:

说话人:我 (同一说话人)
发音内容:“芝麻开门” (同一说话内容)


c.识别结果2:

说话人:我(同一说话人)
发音内容:“芝麻关门” (不同说话内容)


d.识别结果3

说话人:我室友 (不同说话人)
发音内容:“芝麻开门” (同一说话内容)


    可以看到只有说话人及说话内容与码本库完全一致时才会显示“密码正确”,否则显示“密码错误”,实现了声纹锁的相关功能。
   整个系统的源代码,可以从这里下载:【基于Matlab的声纹锁】
   enjoy!

猜你喜欢

转载自blog.csdn.net/u011389706/article/details/78994656