英文

SUPERB 数据集卡片

数据集摘要

SUPERB 是一个评估共享模型在多种语音处理任务上性能的基准,只需最小程度地改变模型架构和标注数据。

支持的任务和排行榜

SUPERB 排行榜可以在此处找到 https://superbbenchmark.org/leaderboard ,包括以下任务:

pr

音素识别 (PR) 将语音转录为最小的内容单位。该任务通过进行对齐建模来避免潜在的不准确强制对齐。SUPERB 使用了 LibriSpeech train-clean-100/dev-clean/test-clean 子集进行训练/验证/测试。音素转录结果来自于 LibriSpeech 官方的 g2p-model-5 和 Kaldi librispeech s5 recipe 中的转换脚本。评估指标是音素错误率 (PER)。

asr

语音识别 (ASR) 将语音转录为单词。与 PR 任务分析语音学建模的改进相比,ASR 反映了在实际场景中改进的重要性。SUPERB 使用了 LibriSpeech train-clean-100/dev-clean/test-clean 子集进行训练/验证/测试。评估指标是词错误率 (WER)。

ks

关键词检测 (KS) 通过将语音分成预定义的单词集合来识别预注册的关键词。此任务通常在设备上执行,以获得快速响应时间。因此,准确性、模型大小和推断时间都非常重要。SUPERB 使用了广泛使用的 Speech Commands dataset v1.0 数据集进行该任务。数据集包含十个类别的关键词,还有一个用于表示静音的类别和一个用于包括误报的未知类别。评估指标是准确率 (ACC)。

示例用法:

可以使用以下的辅助函数:

  • 将音频文件加载为音频数据数组
  • 从长的 _silence_ 音频剪辑中取样
对于处理长时间 _silence_ 音频剪辑的其他示例,请参考 S3PRL TFDS 的实现。

def map_to_array(example):
    import soundfile as sf

    speech_array, sample_rate = sf.read(example["file"])
    example["speech"] = speech_array
    example["sample_rate"] = sample_rate
    return example


def sample_noise(example):
    # Use this function to extract random 1 sec slices of each _silence_ utterance,
    # e.g. inside `torch.utils.data.Dataset.__getitem__()`
    from random import randint

    if example["label"] == "_silence_":
        random_offset = randint(0, len(example["speech"]) - example["sample_rate"] - 1)
        example["speech"] = example["speech"][random_offset : random_offset + example["sample_rate"]]

    return example
qbe

查询实例示例检测 (QbE) 通过对给定的查询和文档进行二进制判别,从而在音频数据库 (文档) 中检测出一个特定的词汇 (查询) 是否存在。SUPERB 采用了英文子集中的 QUESST 2014 challenge 。评估指标是最大加权词汇值 (MTWV),平衡了遗漏和误报。

ic

意图分类 (IC) 将发言者的话语分类为预定义的类别,以确定发言者的意图。SUPERB 使用了 Fluent Speech Commands dataset 数据集,每个话语都标有三个意图标签: 动作、对象和位置。评估指标是准确率 (ACC)。

sf

槽位填充 (SF) 从话语中预测出槽位的序列,例如槽位类型 "FromLocation" 对应着话语中的 "Taipei"。槽位类型和槽位值对于 SLU 系统的功能都是必要的。因此,评估指标包括槽位类型的 F1 分数和槽位值的 CER。SUPERB 采用了 Audio SNIPS 数据集,该数据集为 SNIPS 合成了多个说话人的话语。遵循 SNIPS 的标准拆分,我们进一步选择了具有美式口音的说话人进行训练,其他说话人用于验证/测试。

si

说话人识别 (SI) 对每个话语进行说话人身份的多类分类,其中训练和测试中的说话人都属于相同的预定义集合。采用了广泛使用的 VoxCeleb1 dataset 数据集,评估指标是准确率 (ACC)。

asv

自动说话人验证 (ASV) 将一对话语的说话人是否匹配进行二进制分类,且测试集中的说话人可能在训练集中没有出现。因此,ASV 比 SID 更具挑战性。使用了 VoxCeleb1 数据集,没有使用 VoxCeleb2 训练数据和噪声增强。评估指标是等误差率 (EER)。

sd

说话人辨认 (SD) 预测每个时间戳的说话人说话身份,多个说话人可以同时说话。模型必须为每个帧编码丰富的说话者特征,并能够表示信号混合。采用了 LibriMix 数据集,使用 LibriSpeech train-clean-100/dev-clean/test-clean 生成训练/验证/测试数据的混合数据。我们首先集中于两个说话人的场景。用 Kaldi LibriSpeech ASR 模型生成的对齐结果生成了时间编码的说话者标签。评估指标是辨认错误率 (DER)。

示例用法

可以使用以下辅助函数:

  • 将音频文件加载为音频数据数组
  • 生成标签数组
def load_audio_file(example, frame_shift=160):
    import soundfile as sf

    example["array"], example["sample_rate"] = sf.read(
        example["file"], start=example["start"] * frame_shift, stop=example["end"] * frame_shift
    )
    return example


def generate_label(example, frame_shift=160, num_speakers=2, rate=16000):
    import numpy as np

    start = example["start"]
    end = example["end"]
    frame_num = end - start
    speakers = sorted({speaker["speaker_id"] for speaker in example["speakers"]})
    label = np.zeros((frame_num, num_speakers), dtype=np.int32)
    for speaker in example["speakers"]:
        speaker_index = speakers.index(speaker["speaker_id"])
        start_frame = np.rint(speaker["start"] * rate / frame_shift).astype(int)
        end_frame = np.rint(speaker["end"] * rate / frame_shift).astype(int)
        rel_start = rel_end = None
        if start <= start_frame < end:
            rel_start = start_frame - start
        if start < end_frame <= end:
            rel_end = end_frame - start
        if rel_start is not None or rel_end is not None:
            label[rel_start:rel_end, speaker_index] = 1
    example["label"] = label
    return example
er

More Information Needed

数据字段

关于 audio 字段的注释

当访问音频列时: dataset[0]["audio"] 音频文件将自动解码并重新采样到 dataset.features["audio"].sampling_rate 。解码和重新采样大量音频文件可能需要相当长的时间。因此,首先在查询 "audio" 列之前查询采样索引非常重要,即 dataset[0]["audio"] 应始终优先于 dataset["audio"][0] 。

pr

More Information Needed

asr
  • file ( string ): WAV 音频文件的路径。
  • audio ( dict ): 包含下载的音频文件的路径、解码后的音频数组和采样率的字典。
  • text ( string ): 音频文件的转录文本。
  • speaker_id ( integer ): 说话人的唯一标识符。同一个说话人的 ID 可能出现在多个数据样本中。
  • chapter_id ( integer ): 包含转录的有声读物章节的 ID。
  • id ( string ): 数据样本的唯一标识符。
ks
  • file ( string ): WAV 音频文件的路径。
  • audio ( dict ): 包含下载的音频文件的路径、解码后的音频数组和采样率的字典。
  • label ( ClassLabel ): 规定的口令的标签。可能的取值为:
    • 0: "yes",1: "no",2: "up",3: "down",4: "left",5: "right",6: "on",7: "off",8: "stop",9: "go",10: "_silence_",11: "_unknown_"
qbe

More Information Needed

ic
  • file ( string ): WAV 音频文件的路径。
  • audio ( dict ): 包含下载的音频文件的路径、解码后的音频数组和采样率的字典。
  • speaker_id ( string ): 说话人的 ID。
  • text ( string ): 说话指令的转录文本。
  • action ( ClassLabel ): 说话指令的动作标签。可能的取值为:
    • 0: "activate",1: "bring",2: "change language",3: "deactivate",4: "decrease",5: "increase"
  • object ( ClassLabel ): 说话指令的对象标签。可能的取值为:
    • 0: "Chinese",1: "English",2: "German",3: "Korean",4: "heat",5: "juice",6: "lamp",7: "lights",8: "music",9: "newspaper",10: "none",11: "shoes",12: "socks",13: "volume"
  • location ( ClassLabel ): 说话指令的位置标签。可能的取值为:
    • 0: "bedroom",1: "kitchen",2: "none",3: "washroom"
sf

More Information Needed

si
  • file ( string ): WAV 音频文件的路径。
  • audio ( dict ): 包含下载的音频文件的路径、解码后的音频数组和采样率的字典。
  • label ( ClassLabel ): 说话人的标签 (ID)。可能的取值为:
    • 0: "id10001",1: "id10002",2: "id10003",...,1250: "id11251"
asv

More Information Needed

sd

所有拆分的数据字段如下:

  • record_id ( string ): 记录的 ID。
  • file ( string ): WAV 音频文件的路径。
  • audio ( dict ): 包含下载的音频文件的路径、解码后的音频数组和采样率的字典。
  • start ( integer ): 音频的起始帧。
  • end ( integer ): 音频的结束帧。
  • speakers ( dict 的列表 ): 音频中的说话人列表。每个项目包含以下字段:
    • speaker_id ( string ): 说话人的 ID。
    • start ( integer ): 说话人开始说话的帧。
    • end ( integer ): 说话人停止说话的帧。
er
  • file ( string ): WAV 音频文件的路径。
  • audio ( dict ): 包含下载的音频文件的路径、解码后的音频数组和采样率的字典。
  • label ( ClassLabel ): 语音情感的标签。可能的取值为:
    • 0: "neu",1: "hap",2: "ang",3: "sad"

数据拆分

pr

More Information Needed

asr
train validation test
asr 28539 2703 2620
ks
train validation test
ks 51094 6798 3081
qbe

More Information Needed

ic
train validation test
ic 23132 3118 3793
sf

More Information Needed

si
train validation test
si 138361 6904 8251
asv

More Information Needed

sd

数据被拆分为 "train"、"dev" 和 "test" 三个集合,每个集合都包含以下数量的示例:

train dev test
sd 13901 3014 3002
er

数据被拆分为 5 个集合,用于 5 折交叉验证:

session1 session2 session3 session4 session5
er 1085 1023 1151 1031 1241

数据集创建

策划理由

[需要更多信息]

来源数据

初始数据收集和规范化

[需要更多信息]

谁是源语言制作者?

[需要更多信息]

注释

注释过程

[需要更多信息]

注释者是谁?

[需要更多信息]

个人和敏感信息

[需要更多信息]

使用数据的注意事项

数据集的社会影响

[需要更多信息]

偏见讨论

[需要更多信息]

其他已知限制

[需要更多信息]

附加信息

数据集策划者

[需要更多信息]

许可信息

[需要更多信息]

引用信息

@article{DBLP:journals/corr/abs-2105-01051,
  author    = {Shu{-}Wen Yang and
               Po{-}Han Chi and
               Yung{-}Sung Chuang and
               Cheng{-}I Jeff Lai and
               Kushal Lakhotia and
               Yist Y. Lin and
               Andy T. Liu and
               Jiatong Shi and
               Xuankai Chang and
               Guan{-}Ting Lin and
               Tzu{-}Hsien Huang and
               Wei{-}Cheng Tseng and
               Ko{-}tik Lee and
               Da{-}Rong Liu and
               Zili Huang and
               Shuyan Dong and
               Shang{-}Wen Li and
               Shinji Watanabe and
               Abdelrahman Mohamed and
               Hung{-}yi Lee},
  title     = {{SUPERB:} Speech processing Universal PERformance Benchmark},
  journal   = {CoRR},
  volume    = {abs/2105.01051},
  year      = {2021},
  url       = {https://arxiv.org/abs/2105.01051},
  archivePrefix = {arXiv},
  eprint    = {2105.01051},
  timestamp = {Thu, 01 Jul 2021 13:30:22 +0200},
  biburl    = {https://dblp.org/rec/journals/corr/abs-2105-01051.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}

Note that each SUPERB dataset has its own citation. Please see the source to see
the correct citation for each contained dataset.

贡献者

感谢 @lewtun @albertvillanova @anton-l 添加了该数据集。