声纹分割和聚类(说话人分类)

 2024-02-15 05:02:18  阅读 0

背景知识

声纹识别又称说话人识别,是指根据说话人的身份来区分不同说话人的声音的技术。 英文名称有很多:voice、、、、。

声纹技术的一些细分:

概述信号转换的主要方式_信号转换装置_信号检测论 p z转换

,可以翻译为声纹分割与聚类、说话人分割与聚类、说话人日志。 解决的问题是“谁在何时发言”。 给定包含多人交替说话的语音,声纹分割聚类需要确定每个时间点谁在说话。 声纹分割与聚类问题是声纹领域继声纹识别之后的第二大课题,其难度远大于声纹识别。 这个词出自日记。

概述信号转换的主要方式_信号检测论 p z转换_信号转换装置

声纹分割与聚类( )一:传统方法评价指标 错误率(DER)

模型输出结果尝试各种说话人安排,最终选择效果最好的说话人分配方法来计算DER。

概述信号转换的主要方式_信号转换装置_信号检测论 p z转换

总体框架

信号检测论 p z转换_概述信号转换的主要方式_信号转换装置

语音检测

使用语音检测模型,将音频帧逐帧分为两类:语音(即有人在说话)和非语音(非,即没有人在说话)。 非语音可能是纯粹的寂静(),也可能是环境噪音(noise),或者其他信号如音乐(music)和音效。

常用的语音检测框架包括:

语音检测可以作为标准序列标记问题来解决。

语音分段/说话人切换检测

分割的目标是每个分割的音频片段只有一个说话者。 有两种方法可以将整个语音分成多个小段:

定长切割。 例如,每个片段为1秒,并且相邻片段之间可以有一些重叠。 优点显然是简单,根本不需要模型。

信号转换装置_信号检测论 p z转换_概述信号转换的主要方式

问题:

一般情况下,每段的长度可以设置在0.5秒到2秒之间。

2. 训练说话者开关检测模型(SCD)并根据SCD预测的开关点进行分割。 注意:SCD仅确定转换点,但不知道哪个扬声器是转换后的扬声器(当扬声器数量> 2时)。 因此,SCD之后仍然需要聚类步骤。

概述信号转换的主要方式_信号检测论 p z转换_信号转换装置

问题:

扬声器开关检测模型

信号转换装置_概述信号转换的主要方式_信号检测论 p z转换

基于左右窗口比较的方法

比较左右窗口嵌入代码的差异。

基于窗口的分类方法

它作为标准序列标记问题来解决。

转换点的标签为​1​,非转换点的标签为​0​。 所以这两个类别是非常不平衡的。 通常将转换点附近的K帧(如K=9)的标签标记为​1​,这样可以缓解类别不平衡问题。 缓解类别不平衡问题的另一种方法是使用针对不平衡问题的损失函数,例如 Focal Loss。 在个人测试中很有效,准确率通常可以提高几个百分点。

声纹嵌入代码训练数据准备

训练数据预计具有以下特征:

数据增强方法:

特征

MFCC 等。

模型传统模型:GMM-UBM

使用 GMM 来拟合每个说话人的嵌入代码。 假设某个说话人的音频特征序列为\bf X=(x_1, x_2, \cdots, x_N),并使用GMM来模拟这些数据。 最终学习到的GMM参数为: \ = \{ c_i, \{\mu}_i, \{\}_i ; i=1, 2, \cdots, M\} 。 每个协方差矩阵仅限于一个对角矩阵,不同的说话人使用不同的对角矩阵。 这样设置效果比较好。

训练完每个说话人自己的GMM(每个GMM的参数为\,一共S个说话人),对于要识别的音频序列\bf​​X=(x_1, x_2, \cdots, x_N) ,就看谁在 S 说话者中概率最高,并认为 \bf X 来自此人:

\begin{} s^{*} &=\arg \max _{1 \ s \ S} \ln p\left(\{X} \mid \{s}\right) \\ &=\arg \max _{1 \ s \ S} \sum_{n=1}^{N} \ln p\left(\bf x_{n} \mid \{s}\right) \end{} \\​

在很多应用场景中,待识别的音频可能来自于已知的S说话人()之外,这意味着模型需要知道何时拒绝识别。 2000 年提出的通用背景模型 (UBM) 使用与说话人无关的 GMM 来对不在集合中的说话人进行建模。 UBM的训练数据可以由多个说话者的多个音频组成。

从假设检验的角度来看,若用H_0表示验证音频来自S位集合内的说话人,用H_1表示验证音频来自集合外的说话人,用\{H_1}来表示一般背景模型的参数,那么就可以用似然比作为判别的依据(类似于用BIC/AIC进行模型选择,来判断样本更有可能来自哪个模型。具体,请参考《模型选择的一些基本思想和方法》和《贝叶斯因子》):

​ L(\{X}) = \ln p(\{X} | \) - \ln p(\{X} | \{H_1}) \\

引入UBM的另一个好处是可以通过UBM模型自适应(以UBM参数值作为初始值继续训练)得到集合中说话人的GMM模型,这对集合中说话人模型有显着影响语音数据很少。 适应过程也可以仅限于仅调整均值向量 \mu_i ,而不改变 c_i 和 \{\}_i 。

将说话者的 M 个均值向量 \{\mu}_i 拼接在一起,得到的向量称为 GMM 超向量 ()。 每个说话人的GMM超向量\bf s 可以代表该说话人的音频特征,但\bf s 的维度为MK ,通常较大。 因此,将采用因子分析方法对其进行降维:

\bf s = \bf m + \bf Tw \\

这里\bf m 是一个与说话者和声道都无关的超向量,可以取UBM中得到的超向量的值。 而\bf w​是服从高斯分离的随机向量,其维度通常在​400~600​之间。 ​​\bf w 称为恒等向量( ),缩写为i-。 i- 可作为说话人的声纹嵌入代码。

深度学习模型

可以使用CNN或RNN等DL模型来获得每个音频的固定长度的嵌入向量(称为d-),并且每个说话者的嵌入代码可以是他所有音频嵌入向量的平均值。

概述信号转换的主要方式_信号检测论 p z转换_信号转换装置

那么,如何训练这种深度学习模拟呢? 逻辑类似于度量学习和对比学习。 我们希望通过训练使同一说话人的音频嵌入向量尽可能接近,不同说话人的音频嵌入向量尽可能远离。 以下是声纹识别场景中常用的训练损失。

X-

三元损失函数(loss)

下面的损失函数主要用于声纹识别场景的模型训练。 如果只是为了获得嵌入代码,可以使用度量学习和对比学习中的各种损失函数。

信号检测论 p z转换_信号转换装置_概述信号转换的主要方式

Hinge Loss类型三元损失函数:

L=\left[\left\|f\left(x^{a}\right)-f\left(x^{p}\right)\right\|_{2}^{2}-\left\ |f\left(x^{a}\right)-f\left(x^{n}\right)\right\|_{2}^{2}+\alpha\right]_{+} \\

信号检测论 p z转换_概述信号转换的主要方式_信号转换装置

端到端损失函数(元组端到端损失,TE2E)

所谓端到端,就是训练过程尽可能的去拟合预测过程。 在声纹确认的应用场景中,每个说话人的嵌入码是通过对多个音频输入的嵌入码进行平均得到的。 TE2E 就是拟合这个平均值的过程。

信号转换装置_概述信号转换的主要方式_信号检测论 p z转换

信号转换装置_信号检测论 p z转换_概述信号转换的主要方式

广义端到端损失函数(end-to-end loss,GE2E)

一个类中的所有向量都向中心靠拢,同时试图远离所有其他类的中心。 相似的。

概述信号转换的主要方式_信号检测论 p z转换_信号转换装置

信号转换装置_信号检测论 p z转换_概述信号转换的主要方式

信号检测论 p z转换_信号转换装置_概述信号转换的主要方式

信号转换装置_信号检测论 p z转换_概述信号转换的主要方式

聚类分析

一般步骤是先构造相似度矩阵,然后进行聚类(很多聚类算法的输入都是相似度矩阵)。

常用的聚类算法:K-Means、层次聚类、谱聚类。 K-Means多用于已知说话人数量的情况,谱聚类多用于未知说话人数量的情况。

最近的一些工作考虑了相邻框架之间的相互依赖性:

概述信号转换的主要方式_信号检测论 p z转换_信号转换装置

信号检测论 p z转换_概述信号转换的主要方式_信号转换装置

​二次分割(重新)

基于聚类结果得到的分割结果在分界线附近会出现歧义。 两个类别的重叠区域应归为哪个类别? 简单的方法是用每个分割线段的中心点位置作为代表位置。 时间维度上分割的准确度称为时间分辨率( )。 分段的片段越长,时间分辨率越低。 然而,如果分割的片段太短,则声纹嵌入码的计算将不准确。

信号转换装置_概述信号转换的主要方式_信号检测论 p z转换

基于分类的二次分割

利用前面的聚类算法,可以获得说话人的数量k,以及初始分割聚类结果\{(\{x}_i, y_i)\}_{1\leq i \leq N}。 之后,我们可以对每个音频进行更精细的分割,例如将其切割成更精细的M段(N">M>N)。提取这些新的M段的声纹嵌入代码。\{\{z}_i\ }_{1 \leq i \leq M}​,找到他们对应的说话人标签​ \{y'_i\}_{1 \leq i \leq M} ​.这样就可以使用\{(\{z }_i, y'_i)\}_{1 \leq i \leq M} 训练新的分类模型,训练好的分类模型可以用来预测 $$M$ $​音频片段的标签,最后得到模糊度较小的新分割结果,过程如下:

信号转换装置_信号检测论 p z转换_概述信号转换的主要方式

当然,必须避免新训练的分类模型的过度拟合。 对于M数据中存在模糊性(重叠部分)的样本,可以考虑降低其权重或者直接扔掉。

此外,在二次分割期间,可以添加额外的新类来表示非语音信号,例如静音、纯噪声或音乐。

基于HMM的二次分割

前面介绍的模型对每个分段进行分类时,相邻分段之间的分类预测是相互独立的。 然而,语音是连续的,相邻片段的说话者很有可能是同一个人。 例如,在以下情况下,模型仅将中间段分类为置信度较低的说话者 2。 这时如果认为相邻段的分类是相关的,更合理的分类方法就是调整这个2为1。

HMM可以考虑邻近分类相关性的这一特征。 使用每个小段\{z}_i的声纹嵌入代码作为我们的观察变量,每个小段y_i的标签作为隐藏状态。 HMM希望获得一组隐藏状态值\{y_i\}_{1 \leq i \leq M},使得以下概率最大化:

\begin{} \max _{y_{1}, \cdots, y_{M}} p\left(\{z}_{1}, \cdots, \{z}_{M}\right) &= \max _{y_{1}, \cdots, y_{M}} \sum_{i=1}^{M} p\left(\{z}_{i} \mid y_{i}\right) \ cdot p\left(y_{i}\right) \\ &=\max _{y_{1}, \cdots, y_{M}} \sum_{i=1}^{M} p\left(\{ z}_{i} \mid y_{i}\right) \cdot p\left(y_{i} \mid y_{i-1}\right) \end{} \\

其中,p\left(\{z}_{i} \mid y_{i}\right)可以利用前面描述的训练好的分类模型得到。 p\left(y_{i} \mid y_{i-1}\right) 可以考虑标签的时间连续性。 该解法将使用()算法,因此该方法也称为维特比二次除法。

II:监督聚类

概述信号转换的主要方式_信号检测论 p z转换_信号转换装置

概述信号转换的主要方式_信号检测论 p z转换_信号转换装置

信号检测论 p z转换_概述信号转换的主要方式_信号转换装置

无界交错状态 RNN (UIS-RNN)

英文:-State(UIS-RNN),是贝叶斯非参数(BNP)模型。

概述信号转换的主要方式_信号检测论 p z转换_信号转换装置

​已知一段音频中由T个声纹嵌入码组成的观察序列\{X}=(\{x}_1, \{x}_2, \cdots, \{x}_T)​,而这些与嵌入代码 Y=(y_1, \cdots, y_T) 对应的说话人标签序列。 序列 Z=(z_2, \cdots, z_T) 是一个二进制序列,表示每个 y_t 是否与之前的说话者标签不同,即 z_t=\delta (y_t \neq y_{t-1}) \ in \ {0, 1\} 。 可见,当Y的值给定时,Z的值就完全确定了。

UIS-RNN 预计会估计一组模型参数,使以下分布的概率值最大化:

\begin{} p(\{X}, Y) &= p(\{X}, Y, Z) \\ &= p\left(\{x}_{1}, y_1 \right) \prod_{ t=2}^T p\left(\{x}_{t}, y_{t}, z_{t} \mid \{x}_{[t-1]}, y_{[t-1] }, z_{[t-1]}\right) \\ &=\prod_{t=1}^T \{p\left(\{x}_{t} \mid \{x}_{[t -1]}, y_{[t]}\right)}_{\text { }} \cdot \{p\left(y_{t} \mid y_{[t-1]}, z_{t} \右)}_{\text { }} \cdot \{p\left(z_{t} \mid z_{[t-1]}\right)}_{\text { }} \end{} \\

下标[t-1]用于表示从1到t-1的整个子序列。 所以 \{x}_{[T]}=\bf X , y_{[T]}=Y ,且 \{x}_{[0]}=y _{[0]}= z_ {[0] }=\phi​。 可以看到,整个模型由三部分组成:说话人转换模型、说话人分配模型、序列生成模型。

通过最大似然估计训练得到模型的参数:

\max _{\{\theta}, \alpha, \sigma, p_0} \sum_{n=1}^{N} \ln p\left(\{X}_{n}, Y_{n}, Z_ {n} \mid \{\theta}, \alpha, \sigma, p_0\right) \\

扬声器切换模型

说话人转换模型采用最简单的形式,将每个z_t视为独立的0-1二值分布:

p(z_t =1 \mid z_{[t-1]}) = p(z_t =1) = p(y_t \neq y_{t-1}) = p_0 \\

其中,参数 p_0 \in [0, 1] 是模型中唯一的参数。

演讲者分配模型

如果在t-1时刻,出现了K_{t-1}个说话人,在t时刻,由于z_t=1,我们认为说话人已经切换,那么y_t的概率满足:

\begin{} p(y_t=k \mid z_t = 1, y_{[t-1]}) &\ N_{k, t-1} \\ p(y_t=K_{t-1} + 1 \mid z_t = 1, y_{[t-1]}) &\ \alpha \end{} \\

第一行表示 y_t 是之前出现过的说话人 k 的概率。 由于 z_t=1,所以 k \in [K_{t-1}] \ \{y_{t-1 }\} .​ N_{k, t-1} 表示序列 y_{[t 中的块数-1]},其中出现说话人 k。 块被定义为同一说话者的一系列连续语音。 第二行表示 y_t 是以前从未出现过的新说话人的概率为 α , α 是通过训练得到的。

概述信号转换的主要方式_信号检测论 p z转换_信号转换装置

序列生成模型

如果在 t 时刻,我们的说话人是 y_t ,并且上次说话人改变的时间是 t'=\max \{0, s < t: y_s = y_t\} ,那么 GRU 在 t 时刻的隐藏状态为:

h_t = \text{GRU}(\{x}_{t'}, \{h}_{t'} \mid \theta) \\

其输出表示为 \{m}_t = f(\{h}_t \mid \theta) ​。

假设序列生成模型遵循多维高斯分布:

\{x}_t \mid \{x}_{[t-1]}, \ y_{[t]} \sim \{N}(\{\mu}_t, \sigma^2 \{I}) \\

除了标准差 sigma 是单个参数之外,均值向量 {\mu}_t 来自 GRU 在扬声器 y_t 上的平均输出:

\{\mu}_t = \frac{\{s=1}^t \delta(y_s=y_t) \{m}_s}{\{s=1}^t \delta(y_s=y_t) } \\

信号转换装置_信号检测论 p z转换_概述信号转换的主要方式

判别神经聚类

英语: 。

概述信号转换的主要方式_信号检测论 p z转换_信号转换装置

信号检测论 p z转换_概述信号转换的主要方式_信号转换装置

排列不变性

英语:-。

信号检测论 p z转换_概述信号转换的主要方式_信号转换装置

信号检测论 p z转换_概述信号转换的主要方式_信号转换装置

其他型号

信号转换装置_概述信号转换的主要方式_信号检测论 p z转换

其他:与ASR联合训练

信号检测论 p z转换_概述信号转换的主要方式_信号转换装置

信号检测论 p z转换_概述信号转换的主要方式_信号转换装置

信号转换装置_信号检测论 p z转换_概述信号转换的主要方式

其他:整体声纹识别系统

信号转换装置_信号检测论 p z转换_概述信号转换的主要方式

数据集CN-Celab

清华大学与2019年发布的中国大规模声纹识别数据集。

其他语言

概述信号转换的主要方式_信号转换装置_信号检测论 p z转换

工具 命令行工具 sox/

您可以转换语音格式、调整采用率等。

可以下载音频。

模拟房间的混响 () 效果。

参考

本文可以看作是《声纹技术:从核心算法到工程实践》一书的总结。

下面作者的介绍视频也解释得很清楚:

其他专家的视频:

标签: 模型 说话 分割

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码