VoxCeleb 说话人识别挑战

VoxCeleb 说话人识别挑战

VoxSRC 消息:

2020 VoxCeleb Speaker Recognition Challenge (VoxSRC) 将联合 Interspeech 国际会议于 2020 年 10 月 30 日在上海举办。

摘要

“Speaker recognition in the wild” 是一项非常具有挑战性的任务,需要面对语音中各种不确定性,例如复杂的噪声、不同程度的背景音、短促的笑声等情况。针对这一问题,可以在 VoxSRC 提供的语料及其各种模型的实验结果,寻找合适的语音段编码器,设计合理的度量学习模型,分析造成性能降低的数据因素,都将成为提升识别性能的潜在解决方案。本文就 VoxSRC 提供的实验结果和相关的论文进行归纳、总结与展望。

VoxSRC

2020 VoxCeleb Speaker Recognition Challenge (VoxSRC) 旨在研究现有的说话人识别方法对来自 “in the wild” 语音数据的识别效果。这次挑战提供了来自 YouTube 名人访问视频的语音语料。相对传统的电话、麦克风语音,这类数据集包含更多的干扰与不确定性。

此次挑战分为 3 项任务,分别是:

  1. 特定训练数据的说话人确认监督任务(Fixed-Full):VoxCeleb2 dev 数据集作为训练数据;
  2. 训练数据不受限的说话人确认监督任务(Open-Full):训练数据可以使用 VoxSRC 测试数据以外的任意数据集;
  3. 特定训练数据说话人确认自监督任务(Fixed-Self):VoxCeleb2 dev 数据集作为训练数据,但无法使用说话人的标签,但可以使用除此以外的其它标签,例如跨模态的视觉帧,但无法使用任意模态的预训练模型。

竞赛举办方为任务 1 与 2 提供了说话人确认监督学习的基准,为任务 3 提供了说话人确认自监督学习的基准

根据 3 个任务场景,不难看出主办方对于竞赛的想法,针对固定的评估数据:

  1. 针对任务 1,训练集是固定的,该任务旨在设计最佳的学习算法
  2. 针对任务 2,训练集是开放的,该任务除了设计合理的学习算法,还需要选择能够提高评估数据性能的训练数据,因此,该任务旨在跨领域的知识迁移
  3. 针对任务 3,训练集是固定的,无说话人标签,存在跨域标签,该任务旨在跨任务的知识迁移

根据对 3 个任务的分析,可以发现三个任务是依次递进、逐渐复杂的。为了解决这些问题,学习方法的设计、迁移学习方法、跨领域/任务的方法会有利于改善这些问题。

度量学习与编码器

论文 Exploring the Encoding Layer and Loss Function in End-to-End Speaker and Language Recognition System 讨论了几种(段层次)编码器和几种损失函数对说话人识别性能的影响,其中编码器包含 temporal average pooling (TAP)、self-attentive pooling (SAP) 和 learnable dictionary encoding (LDE),损失函数包含 Softmax、Center 和 augular softmax (ASoftmax),并将这些编码器和损失函数整合到端到端模型中,评估算法在 VoxCeleb1 数据集上的效果。以 Cosine 作为评分函数,性能(低于 4.90% EER)的排名分别是:

LDE-ASoftmax (4.56) > TAP-Center (4.75) > SAP-ASoftmax (4.90)。

论文 In defence of metric learning for speaker recognition 讨论了多种损失函数(包含分类损失和度量学习)对 CNN 学习算法的影响,并在 VoxCeleb 数据集上分别评估 VGG-M-40 模型和 Thin ResNet-34 模型的性能,该评估方式与 VoxSRC 任务 1 (Fixed-Full) 一致,其中损失函数包含:

  1. 分类目标:Softmax、AM-Softmax (CosFace) 和 AAM-Softmax (ArcFace);
  2. 度量学习目标:Triplet、Prototypical、Generalised end-to-end (GE2E) 和 Angular Prototypical。

10 × 10 10 \times 10 10×10 对的 ∥ ⋅ ∥ \Vert\cdot\Vert 的平均值作为评分函数,不同损失函数的性能(仅考虑 Thin ResNet-34,因为这里 VGG-M-40 性能较差)排名分别是:

分类目标:AAM-Softmax (2.36) > AM-Softmax (2.40) > Softmax (5.82)

度量学习目标:Angular Prototypical (2.21) > Prototypical (2.34) > GE2E (2.52) > Triplet (2.53)

分类目标中,相比较 AM-Softmax,AAM-Softmax 对算法参数更加敏感,从在 2.36 ~ 10.55 的波动;对比分类损失,度量学习能够更实现更优的性能。

从数据集上看,VoxCeleb2 作为训练数据,对于 VoxCeleb1 的提升效果非常明显,即从 4.56% EER 改善到 2.21% EER,50% 的提升量,可以猜想:数据集的补充,有利于学习算法的改进

高维度数据可视化 TSNE

说话人的特征表示,在解释性上,仍然存在很大的障碍,很多时候,很难了解学习到的说话人特征是怎么样的。2008 年发布的 TSNE 可视化方法,提供了一种高维数据转化为低维流形的方法,为说话人表示提供了一种可行的可视化方案。

TSNE 提供了一种高维特征距离投影为低维特征距离的方法,采用了基于概率的模型来刻画数据点上的距离,其学习过程类似一种数据合成的迭代方法,可以大胆地想象:如果直接将这类方法引入说话人建模,能够改善说话人特征的解释性。

考虑到这类方法的实用性,笔者寻找了 sklearn 关于 TSNE 的实现,它提供了一个手写数字的案例

from time import time
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import offsetbox
from sklearn import manifold, datasets, discriminant_analysis

# Prepare digits dataset
digits = datasets.load_digits(n_class=6)
X = digits.data
y = digits.target
n_samples, n_features = X.shape
n_neighbors = 30

# Scale and visualize the embedding vectors
def plot_embedding(X, title=None, sub_num=111):
    x_min, x_max = np.min(X, 0), np.max(X, 0)
    X = (X - x_min) / (x_max - x_min)

    # plt.figure()
    ax = plt.subplot(sub_num)
    for i in range(X.shape[0]):
        plt.text(X[i, 0], X[i, 1], str(y[i]),
                 color=plt.cm.Set1(y[i] / 10.),
                 fontdict={'weight': 'bold', 'size': 9})

    if hasattr(offsetbox, 'AnnotationBbox'):
        # only print thumbnails with matplotlib > 1.0
        shown_images = np.array([[1., 1.]])  # just something big
        for i in range(X.shape[0]):
            dist = np.sum((X[i] - shown_images) ** 2, 1)
            if np.min(dist) < 4e-3:
                # don't show points that are too close
                continue
            shown_images = np.r_[shown_images, [X[i]]]
            imagebox = offsetbox.AnnotationBbox(
                offsetbox.OffsetImage(digits.images[i], cmap=plt.cm.gray_r),
                X[i])
            ax.add_artist(imagebox)
    plt.xticks([]), plt.yticks([])
    if title is not None:
        plt.title(title)

# Plot images of the digits
print("Showing selected digits")
n_img_per_row = 20
img = np.zeros((10 * n_img_per_row, 10 * n_img_per_row))
for i in range(n_img_per_row):
    ix = 10 * i + 1
    for j in range(n_img_per_row):
        iy = 10 * j + 1
        img[ix:ix + 8, iy:iy + 8] = X[i * n_img_per_row + j].reshape((8, 8))
plt.figure(figsize=(12, 10))
plt.subplot(2,2,1)
plt.imshow(img, cmap=plt.cm.binary)
plt.xticks([])
plt.yticks([])
plt.title('A selection from the 64-dimensional digits dataset')

# t-SNE embedding of the digits dataset
print("Computing t-SNE embedding")
tsne = manifold.TSNE(n_components=2, init='pca', random_state=0)
t0 = time()
X_tsne = tsne.fit_transform(X)
plot_embedding(X_tsne,
               "t-SNE embedding of the digits (time %.2fs)" %
               (time() - t0), sub_num=222)

# Projection on to the first 2 linear discriminant components
print("Computing Linear Discriminant Analysis projection")
X2 = X.copy()
X2.flat[::X.shape[1] + 1] += 0.01  # Make X invertible
t0 = time()
X_lda = discriminant_analysis.LinearDiscriminantAnalysis(n_components=2
                                                         ).fit_transform(X2, y)
plot_embedding(X_lda,
               "Linear Discriminant projection of the digits (time %.2fs)" %
               (time() - t0), sub_num=223)

# Isomap projection of the digits dataset
print("Computing Isomap projection")
t0 = time()
X_iso = manifold.Isomap(n_neighbors, n_components=2).fit_transform(X)
plot_embedding(X_iso,
               "Isomap projection of the digits (time %.2fs)" %
               (time() - t0), sub_num=224)

print("0 and 1 are Red.\n2 is Blue.\n3 is Green.\n4 is Purple.\n5 is Orange.")
plt.tight_layout()
plt.savefig('t-SNE.png')
t-SNE

深度学习平台 NSML

VoxSRC 采用了韩国 NSML 平台,这个平台提供了研究者很多自动化的功能,使开发者可以更专注模型的设计。这与深度学习平台的开发需求是非常吻合的。在国内,也有非常多的深度学习竞赛拥有这这类平台,例如阿里云、腾讯云、百度云、京东云、华为云、ucloud 云。

尽管笔者在单机上的深度学习平台上有所尝试,但是高门槛成为了平台建设的主要困难,这些困难包含技术上的,和设计思路上的。这方面非常希望有读者愿意加入到笔者到团队中来,一起研究。

参考文献:

  1. VoxCeleb Speaker Recognition Challenge (VoxSRC): Chung, J.S., Huh, J., Mun, S., Lee, M., Heo, H.S., Choe, S., Ham, C., Jung, S., Lee, B.-J., Han, I., 2020. In defence of metric learning for speaker recognition. arXiv Prepr. arXiv2003.11982.
  2. 编码器与损失函数对说话人/语音识别的讨论: Cai, W., Chen, J., Li, M., 2018. Exploring the Encoding Layer and Loss Function in End-to-End Speaker and Language Recognition System, in: Odyssey 2018 The Speaker and Language Recognition Workshop. ISCA, Les Sables d’Olonne, France, pp. 74–81. https://doi.org/10.21437/odyssey.2018-11
  3. 高维数据可视化 TSNE: Van Der Maaten, L., Hinton, G., 2008. Visualizing data using t-SNE. J. Mach. Learn. Res. 9, 2579–2625.
  4. 深度学习平台: Sung, N., Kim, M., Jo, H., Yang, Y., Kim, J., Lausen, L., Kim, Y., Lee, G., Kwak, D.-H., Ha, J.-W., Kim, S., 2017. NSML: A Machine Learning Platform That Enables You to Focus on Your Models. CoRR arXiv prep.

作者:王瑞 同济大学 计算机系博士研究生

邮箱:rwang@tongji.edu.cn

CSDN:https://blog.csdn.net/i_love_home

Github:https://github.com/mechanicalsea

如果大家有兴趣参加 2020 VoxSRC 竞赛,欢迎一起交流~

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: VoxCeleb 视频是一个用于说话识别和监测的公开数据集。通过收集互联网上的大量演讲、访谈和新闻报道等视频,构建了一个包含丰富多样的说话人的视频库。该数据集涵盖了各种语言、方言和口音。VoxCeleb 视频的主要目的是用于人脸-语音联合建模和说话识别的训练和评估。 VoxCeleb 视频数据集的特点是说话人数量多、说话人声音有多样性和自然性。这使得人们可以使用该数据集进行说话识别模型的训练和验证,并进行对不同说话人之间的说话识别实验。该数据集提供了丰富的语音特征和人脸图像,以支持人们对说话人进行研究。 VoxCeleb 视频的利用价值很大。首先,它可以帮助开发人脸-语音联合建模的算法,使得说话识别能够更准确和鲁棒。其次,该数据集可以被应用于声纹识别技术的研究和开发,提供对不同说话人声音的训练和测试。此外,VoxCeleb 视频还可以用于语音合成、语音转换等领域的研究和开发。 总之,VoxCeleb 视频是一个宝贵的说话识别和监测的数据集,为该领域的研究人员和开发人员提供了丰富的资源和基础。它的收集和利用对于推动声学信号处理技术和说话人相关应用的发展具有重要意义。 ### 回答2: Voxceleb视频是一个基于声音识别的数据库,它收集了大量全球各地的说话者的语音样本。这个数据库的目的是为研究语音识别、语音合成、说话识别等相关领域提供有价值的资源。 Voxceleb视频中的语音样本来自不同的人,包括世界各地的名人、专业演员、新闻主播等。这个数据库中的视频包含不同类型的语音,从正式的演讲到日常对话,涵盖了各种语言、口音和说话风格。每个视频都有相应的标记信息,如说话者的姓名、国籍、性别等。 使用Voxceleb视频数据库可以进行多种研究和应用。首先,它可以用于改进语音识别技术。通过分析不同说话者的语音样本,可以提高语音识别系统对不同口音和方言的识别准确性。其次,该数据库可以用于开发说话识别系统,用于身份验证或指纹识别等应用。此外,Voxceleb视频还可以用于语音合成领域的研究,帮助合成出更加自然、流畅的人工语音。 总之,Voxceleb视频是一个重要的语音资源数据库,为语音领域的研究和应用提供了丰富的样本和数据。通过分析这些视频,我们可以更好地了解各种说话者的语音特点,并提高相关技术的性能和应用效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值