声纹识别技术小结(1):声纹建模技术

kaldi中的声纹识别 kaldi中的声纹识别 文章目录kaldi中的声纹识别kaldi的安装运行aishell例程使用TIMIT数据库进行声纹识别       前段时间一直到在使用kaldi来做声纹识别,算是可以把整个i-vector 阅读详情

1. 概论和流程

概论

任务分类

开集声纹辨认 :

M个说话人的声纹识别问题——(M+1)元分类问题(M个说话人+一个冒名顶替者imposter)

流程

2. 核心:声纹建模

声纹识别系统流程最核心的模块是从音频特征到说话人模型的声纹建模模块。

在这里插入图片描述
这块可以按照采用的方法大致分为两大类:

  • 深度学习之前的方法:① 模板匹配 ② 统计量
  • 深度学习的方法:① 间接方法 ② 完全的神经网络
传统的方法深度学习的方法
方法① 基于模板匹配的方法② 基于统计量的方法
改基于矢量化的方法高斯混合模型(GMM)
GMM-UBM、GMM-SVM
JFA + GMM-UBM
进i-vector + GMM-UBMi-vector + DNN、j-vector等(皆为传统方法+神经网络的间接方法)
d-vector(完全版的神经网络)

2.1 深度学习之前的方法

这里简单说一下其中最具代表性的几个方法。

高斯混合模型(GMM)

高斯混合模型(Gaussian mixture model, GMM)是统计学中一个极为重要的模型,其中机器学习、计算机视觉和语音识别等领域均有广泛的应用,甚至可以算是神经网络和深度学习普及之前的主流模型。

GMM之所以强大,在于其能够通过对多个简单的正态分布进行加权平均,从而用较少的参数模拟出十分复杂的概率分布。

在声纹识别领域,高斯混合模型的核心设定是:将每个说话人的音频特征用一个高斯混合模型来表示。采用高斯混合模型的动机也可以直观的理解为:每个说话人的声纹特征可以分解为一系列简单的子概率分布,例如发出的某个音节的概率、该音节的频率分布等。这些简单的概率分布可以近似的认为是正态分布(高斯分布)。
注:GMM 的声纹辨认限定在固定的几个说话人组成的闭集之内。

高斯混合-通用背景模型(GMM-UBM)

于2000年提出的通用背景模型(universal background model, UBM)很好地解决了 GMM 无法应用于开集声纹识别的问题。

  1. 通用背景模型:对集外说话人建模
    GMM-UBM 用一个与说话人无关的高斯混合模型 (UBM)表示集外说话人;
  2. 贝叶斯自适应:从背景到说话人
    由于UBM本身就是一个高斯混合模型,所以每一个说话人的高斯混合模型参数都可以由UBM模型进行初始化,然后通过贝叶斯自适应的方法得到。这一点对于录入语音较少的说话人来说尤为有效。

联合因子分析(JFA)+ GMM-UBM

在 GMM-UBM 框架中,通过通用背景模型自适应得到的超向量,除了表征与说话人相关的信息,同时也包含了很多其他不相关信息,例如与录音设备及背景环境相关的通道信息等。
联合因子分析(JFA)方法的提出,正是为了将说话人信息和信道等其他信息更好地区分开,从而提升声纹识别的准确率。

i-vector

在基于深度学习的声纹识别方法出现之前,于2011年提出的基于i-vector的声纹识别方法一直是业界主流,它本质上是联合因子分析技术(JFA)的一种改进或者说一种简化。

联合因子分析分析(JFA)在高维的超向量空间移除信道的影响,而i-vector 则在 低维的总体因子空间移除信道的影响。

i-vector 的信道补偿主要有LDA、PLDA等方法。

2.2 深度学习的方法

理论

神经网络在声纹识别领域的应用主要分为两种:

  • 间接用于声纹识别:传统框架下,部分模块使用神经网络替代
  • 直接用于声纹识别:端到端的神经网络模型

间接法

(1)串联深度特征
使用神经网络替代传统的MFCC、PLP等特征提取方法。
(2)基于神经网络的 i-vector
使用语音识别神经网络框架替代传统的GMM-UBM框架。

直接法

使用神经网络构建端到端的声纹识别系统,这一过程中的难点在于,音频本身长度是不确定的。给定一段不定长度的音频特征序列,通过神经网络将其转换为一个固定维度的嵌入码,这个过程叫做神经网络运行时的推理逻辑。

有如下几种推理逻辑:

(1)逐帧推理:将序列中的每一帧看做一组独立的特征,其输出长度取决于序列的长度,所以还需要一个额外的聚合步骤(比如最简单取平均向量),将逐帧的输出转换为固定长度的向量。

在这里插入图片描述

其缺点是每一帧涵盖的时间范围较短,特征较少。即便采用了帧叠加和帧采样的方法,使得每一帧的特征包含尽可能多的上下文信息,即便这样,每一帧音频也不过数十毫秒,其中所携带的信息也相对较少。

之前介绍的串联深度特征方法,其用到的神经网络便是各帧独立的逐帧推理网络。

(2)固定窗推理
对于文本相关的声纹识别,尤其是基于特定唤醒词声纹识别,通常利用唤醒词检测算法检测唤醒词的同时给定唤醒词的边界,然后通过该边界提取固定长度的窗口,从而完成固定推理。

因为固定窗推理的输入序列长度是固定的,所以没有必要进行逐帧进行处理,而是可以将所有音频叠加在一起,组成一个较大的输入,然后通过神经网络直接得到输出。

在这里插入图片描述

这种方法的致命缺点是,无法被应用于输入长度可变的文本无关的声纹识别。

(3)全序列推理
逐帧推理的神经网络可以处理任意长度的音频序列特征,固定窗推理的神经网络可以有效利用每一帧的上下文信息,而全序列推理则可以将这两者的优势结合起来。

全序列推理的方法需要借助循环神经网络来实现。

有两种方式来实现输出固定长度的输出:

在这里插入图片描述

1、基于池化的全序列推理
对循环神经网络的输出序列进行聚合,计算一组统计量(例如百度的 deep speaker 深纹识别系统就是计算的平均向量)或者多个统计量的拼接。

不管怎么样,基于池化的全序列推理,都不是将池化的输出直接作为最早的嵌入码,而是在池化之后额外增加一层前馈神经网络,将该网络的输出作为最终的嵌入码。这种做法可以有效提升系统对于池化运算的鲁棒性。

2、基于末帧的全序列推理

对于循环神经网络的每一帧输出,只保留最后一帧输出直接作为最终的嵌入码,而将其他输出全部丢弃。

全序列推理的一个致命缺点:其无法简单地通过批处理实现高效地大规模训练。批处理通常要求同一批输入数据的维度是一致的,只有这样才能通过张量运算计算整批输入数据的损失函数和梯度,从而进行优化。而在全序列推理神经网络中,通常每一个输入序列的长度都是不一样的,因此其批的大小只能被设定为1。小规模数据集上可能还不明显,但是这在大规模的说话人数据的训练上将是一个灾难(训练时神经网络的收敛将会极其缓慢。)

(4)滑动窗推理

谷歌2018年的提出的滑动窗推理(sliding window interface)巧妙地综合了上述几种方式的优点。依据事先设定好的窗大小与窗间隔,从音频特征序列中提取出相互重叠的滑动窗。每一个滑动窗被独立地作为循环神经网络的输入,完成推理,并得到末帧的输出。

在这里插入图片描述

算法(DNN-based)

Speaker recognition以2012年为分水岭,由statistics-based machine learning,跨到了以deep learning为主线的算法。随后,bottleneck feature、d-vector、x-vector、j-vector等DNN-based的系统陆续出现,随后attention mechanism、Learning to rank等思想被用于改良训练过程。

对这些算法按照3类分别做简要阐述:
1)iVector-based;
2)dnn-based;
3)基于attention mechanism、Learning to rank等思想的改良算法。

在这里插入图片描述

d-vector

x-vector

更多可以参考:声纹识别算法、资源与应用(一)——有连载,值得一看

声纹识别概述(3)声纹识别系统 参考: 声纹识别是个什么原理? 阅读详情

相关推荐

声纹识别知识整理

一、算法总览 1. 最早的GMM-UBM i-vector 利用GMM高斯混合模型提取特征i-vector;克服训练数据不多的情况,引入UBM;将语音分为说话人空间和环境空间,解决环境带来的信道,PLDA实现信道补偿,将提取的i-vector更加纯粹。 当然,获取i-vector的方法不仅仅局限在高斯混合模型,利用一起其它的机器学习方法进行补充一样可以,甚至是DNN提取的特征。 2. DNN DN...

James_bobo的博客 1万+

基于Pytorch实现的声纹识别模型

本章介绍如何使用Pytorch实现简单的声纹识别模型,本项目参考了人脸识别项目的做法Pytorch-MobileFaceNet,使用了ArcFace Loss,ArcFace loss:Additive Angular Margin Loss(加性角度间隔损失函数),对特征向量和权重归一化,对θ加上角度间隔m,角度间隔比余弦间隔在对角度的影响更加直接。

夜雨飘零 2万+

声纹识别技术

语音识别、声纹识别、语义识别的区别 很多除接触AI的小伙伴, 不清楚语音识别和声纹识别的区别,经常混淆概念,以为语音识别、声纹识别、语义识别是同一回事,其实不然。 声纹识别和语音识别在原理上一样,都是通过对采集到的语音信号进行分析和处理,提取相应的特征或建立相应的模型,然后据此做出判断。但二者的根本目的,提取的特征、建立的模型是不一样的。 语音识别的目的: 识别语音的内容。并以电脑自动将人类的语音...

Never-Giveup的博客 1万+

声纹识别好用的模型:speechbrain/spkrec-ecapa-voxceleb

是目前最好的模型之一,但在不同的应用场景和需求下,可能有其他一些模型能够提供更好的性能或适配性。建议根据实际情况进行选择,或者通过模型微调来获得最合适的解决方案。如果您使用的是基于VoxCeleb数据集的模型,是一个非常有力的选择。

keyboard专栏 6225

小白声纹识别(说话人识别)探索

序言:作为一名完全的声纹识别小白,刚开始接触,毫无头绪,都不知道从何入手,在搜集了一些资料,看过一些学习视频,论文之后,记录一下自己的摸索过程,同时将一些目前网络上的资源进行汇总。目前的我确实学习还是非常浅,如果有一些理解错误,会进行改正。 一、算法纵览 搞懂声纹识别算法整个的发展过程,才有利于进一步改进。了解了各种方法,才能选出最适合数据的算法。看论文时也会减轻很多压力。所以首先记录一下我了...

牧码杭城 1万+

基于GMM的声纹识别———Matlab实现

本项目实现需要voicebox模块,附网址: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html 1、特征提取 声纹识别中常用到的特征主要有MFCC、和LPC。本文采取的MFCC特征。 function [ mfcc_feature ] = get_features( voice_data, fs ) %GET_FEATURES ...

Boogyman的博客 7155

[深度学习概念]·声纹识别技术简介

声纹识别技术简介 声纹识别,也称作说话人识别,是一种通过声音判别说话人身份的技术。从直觉上来说,声纹虽然不像人脸、指纹的个体差异那样直观可见,但由于每个人的声道、口腔和鼻腔也具有个体的差异性,因此反映到声音上也具有差异性。如果说将口腔看作声音的发射器,那作为接收器的人耳生来也具备辨别声音的能力。 最直观的是当我们打电话给家里的时候,通过一声“喂?”就能准确地分辨出接电话的是爸妈或是...

简明AI工作室 2万+

基于深度学习的声纹识别

一、选题 1.1 题目: 基于深度学习的声纹识别 1.2 研究内容: ① 研究用于声纹识别的语音参数以及这些参数对声纹识别性能的影响。 ② 研究声纹识别的传统方法及性能。 ③ 在研究声纹识别的传统方法的基础上,研究基于深度学习的声纹识别的方法及性能。 二、意义 语音信号是生活中的交流方式之一,而且不同人的声音的特征不同,我们可以利用这一特点进行身份识别。相对于其他生物识别技术而言,声纹识别所需的仪器价格较为便宜,且声纹识别技术具有可移植性好的优点。 深度学习技术近年来在各个领域的应用愈加广泛,相较于传统的浅

sally的jerry 4761

声纹识别概述(1)初识

声纹识别初识声纹声纹概念声纹识别的原理声纹识别的技术指标影响声纹识别水平的因素 初识声纹 声纹概念 声纹(Voiceprint)是用电声学仪器现实的携带言语信息的声波频谱, 是由波长频率以及强度等百余种特征维度组成的生物特征,具有稳定性、可测量性、唯一性等特点。 每个人的语音声学特征既有相对稳定性,又有变异性,不是一成不变的。这种变异可来自生理、病理、心理、模拟、伪装,也与环境干扰有关。 声纹识别的原理 人声差异的主要方面: 共鸣方式特征:咽腔共鸣、鼻腔共鸣和口腔共鸣 嗓音纯度特征:不同人的嗓音,纯度一般

Robin_Pi的博客 1万+

声纹识别技术的现状、局限与趋势

导语:本文内容来自声智科技创始人陈孝良在雷锋网硬创公开课的分享 编者注:本文内容来自声智科技创始人陈孝良在雷锋网硬创公开课的分享,由雷锋网(公众号:雷锋网)旗下栏目“新智造”整理。 嘉宾简介:陈孝良,博士,声智科技创始人,曾任中科院声学所副研究员和信息化办公室主任,中科院上海高等研究院客座,北京市公安局首届网络应急专家,主要从事声学信号处理和 GPU 深

雷锋网 8228

一文读懂声纹采集、声纹识别、声纹数据库系统等声纹识别技术在公安业务领域的应用场景

查指纹、查人脸、查DNA,这些都已成为了公安机关打击违法犯罪分子的重要技术手段,然而还有另外一种技术手段,在上述无法做到的情况下,依然可以让犯罪活动无所遁形,那就是声纹识别技术。 声纹识别是生物识别技术的一种,也称为说话人识别,有两类,即说话人辨认和说话人确认。不同的任务和应用会使用不同的声纹识别技术,如缩小刑侦范围时可能需要辨认技术,而银行交易时则需要确认技术。声纹识别就是把声信号转换成电信号,...

VoiceSense的博客 9624

使用Tensorflow实现声纹识别

本章介绍如何使用Tensorflow实现简单的声纹识别模型,首先你需要熟悉音频分类,没有了解的可以查看这篇文章《基于Tensorflow实现声音分类》。基于这个知识基础之上,我们训练一个声纹识别模型,通过这个模型我们可以识别说话的人是谁,可以应用在一些需要音频验证的项目。

夜雨飘零 1万+

声纹识别概述(2)声纹识别原理和过程

结合:添加链接描述

Robin_Pi的博客 5036

声纹识别·总章

声纹识别1. 理论声纹识别基础声纹识别算法2. 资源声纹识别数据声纹识实践参考 声纹识别关心的“谁在说”,用于解决生物身份确认和识别;而语音识别关心的“说了什么”,用于解决对说话内容的识别。 1. 理论 声纹识别基础 声纹识别概述 声纹识别流程 声纹识别算法 2. 资源 声纹识别数据 声纹识实践参考 语音识别从入门到放弃 参考: 语音识别(八)——声纹识别, 地理 ...

Robin_Pi的博客 2104

声纹识别技术发展现状及未来五大发展趋势

走出实验室的声纹识别技术因其广阔的应用场景和价值,从特定领域到民用领域,在国内外正迎来第一波商用化浪潮。 而与此同时,关于声纹识别技术研究的成熟度以及安全可靠性,一直是应用领域讨论的重点,本文基于时下声纹识别技术研究的前沿观点,总结出五大发展趋势: 1、声纹识别研究朝着深度学习和端到端方向发展 语音作为语言的声音表现形式,不仅包含了语言语义信息,同时也传达了说话人语种、性别、年龄、情感、信道、...

VoiceSense的博客 7801

声纹识别(1)声纹识别的测试集和数据预处理

声纹识别技术小结:声纹建模技术1. 测试集2. 数据预处理2.1 音频质量检测和过滤2.2 音频质量提升3. 常用数据集 1. 测试集 之前也提到,声纹识别系统的测试阶段包括说话人注册和测试识别两个阶段:注册集输入作为底库,验证集输入作为测试数据。 这部分讲一下在测试阶段(默认声纹的特征提取模型已知),注册集和测试集应该如何划分。 首先,必须确认一点:注册集和验证集都属于测试集; 其次,注册集和验证集都需要包含测试集中全部的说话人; 最后,注册集和测试集中相同说话人下面的子集是不重复的(必须是不

Robin_Pi的博客 5474

python声纹识别_声纹识别(说话人识别)

声纹识别声纹识别,生物识别技术的一种,也称为说话人识别,有两类,即说话人辨认和说话人确认。声纹识别的理论基础是每一个声音都具有独特的特征,通过该特征能将不同人的声音进行有效的区分。声音特征1、语音的特殊性。发音器官分为声门上系统、喉系统、声门下系统,每个人都有自己的一套发音器官,它们的形态、构造各有差别,每次发音需要众多发音器官相互配合、共同运动。这决定了语音的物理属性(也称语音四要素):音质、音...

weixin_39662611的博客 8944

SigmaStudio进阶技巧:如何用ADAU1701实现60段EQ与防啸叫算法

本文深入探讨了如何在ADAU1701 DSP芯片上实现专业级音频处理系统。通过精密的资源规划与架构设计,详细讲解了构建高达60段参数均衡器(EQ)的有效方法,并集成了移频与自适应陷波双策略的智能防啸叫算法。内容涵盖从SigmaStudio工程优化、算法模块组合到系统联调实战的全流程,旨在帮助中高级开发者充分利用ADAU1701性能,打造稳定、高效的音频处理解决方案。

weixin_28256233的博客 385

基于Pytorch实现的声纹识别系统

本项目使用了EcapaTdnn、ResNetSE、ERes2Net、CAM++等多种先进的声纹识别模型,不排除以后会支持更多模型,同时本项目也支持了MelSpectrogram、Spectrogram、MFCC、Fbank等多种数据预处理方法,使用了ArcFace Loss,ArcFace loss:Additive Angular Margin Loss(加性角度间隔损失函数),对应项目中的AAMLoss,对特征向量和权重归一化,对θ加上角度间隔m,角度间隔比余弦间隔在对角度的影响更加直接,除此之外,还支

夜雨飘零 8358

一文详解声码器

声码器(Vocoder)是语音信号处理领域的核心技术,其本质是通过“分析 - 参数化 - 合成” 的闭环流程,实现语音的高效编码、转换或生成。它不仅是早期语音通信的关键工具,更是现代 AI 语音技术(如 TTS、语音转换)的核心组件。以下从原理、技术分类、关键模块、应用及发展趋势展开详细解析。

weixin_41413777的博客 1352

YOLOv11+SAHI实战:5步搞定无人机航拍小目标检测(附VisDrone数据集调参技巧)

本文详细介绍了如何结合YOLOv11目标检测框架与SAHI切片推理技术,高效解决无人机航拍图像中的小目标检测难题。通过VisDrone数据集调参技巧和5步实战指南,帮助开发者快速构建高性能检测系统,显著提升小目标检测的准确率和效率。

rum55的博客 190
上一篇: “声音”背后的原理(2):采样、量化和编码
下一篇: 报错:No space left on device——查看并清理linux物理、清理系统缓存
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值