数据集:

renumics/speech_commands_enriched

英文

SpeechCommands数据集卡

数据集概述

? Data-centric AI 原则在实际应用中变得越来越重要。在 Renumics ,我们认为经典的基准数据集和竞赛应该扩展以反映这一发展。

? 这就是为什么我们发布带有特定应用丰富功能的基准数据集(例如嵌入、基准结果、不确定性、标签错误分数)。我们希望这能以以下方式帮助ML社区:

  • 使新的研究人员能够快速深入了解数据集。
  • 在ML社区中推广以数据为中心的AI原则和工具。
  • 鼓励除传统量化指标之外的有意义的定性观察的共享。
  • ?这个数据集是 SpeechCommands Dataset 的一个增强版。

    探索数据集

    增强功能可以让您快速了解数据集。开源的数据整理工具 Renumics Spotlight 使您在几行代码内就能实现:

    通过安装数据集和Spotlight进行安装: pip

    !pip install renumics-spotlight datasets[audio]
    

    注意:在Linux上,非Python依赖项libsndfile软件包必须手动安装。有关更多信息,请参见 Datasets - Installation

    在笔记本中从huggingface加载数据集:

    import datasets
    
    dataset = datasets.load_dataset("renumics/speech_commands_enriched", "v0.01")
    

    从一个简单的视图开始探索:

    from renumics import spotlight
    
    df = dataset.to_pandas()
    df_show = df.drop(columns=['audio'])
    spotlight.show(df_show, port=8000, dtype={"file": spotlight.Audio})
    

    您可以使用UI来交互地配置数据的视图。根据具体的任务(例如模型比较、调试、异常检测),您可能希望利用不同的增强和元数据。

    SpeechCommands数据集

    这是一组一秒钟的.wav音频文件,每个文件包含一个英语口语单词或背景噪音。这些单词来自一小组命令,并由不同的说话人说出。这个数据集旨在帮助训练简单的机器学习模型。更详细的内容请查看 https://arxiv.org/abs/1804.03209

    数据集的0.01版本(配置"v0.01")于2017年8月3日发布,包含64,727个音频文件。

    数据集的0.02版本(配置"v0.02")于2018年4月11日发布,包含105,829个音频文件。

    支持的任务和排行榜

    • 关键词检测:该数据集可以用于训练和评估关键词检测系统。任务是将话语分类为预先注册的关键词,通常在设备上执行以获得快速的响应时间。因此,准确性、模型大小和推理时间都至关重要。

    语言

    SpeechCommands中的语言数据为英语(BCP-47 en)。

    数据集结构

    数据实例

    核心单词的示例("label"是一个单词,"is_unknown"是False):

    {
      "file": "no/7846fd85_nohash_0.wav", 
      "audio": {
        "path": "no/7846fd85_nohash_0.wav", 
        "array": array([ -0.00021362, -0.00027466, -0.00036621, ...,  0.00079346,
              0.00091553,  0.00079346]), 
        "sampling_rate": 16000
        },
      "label": 1,  # "no"
      "is_unknown": False,
      "speaker_id": "7846fd85",
      "utterance_id": 0
    }
    

    辅助单词的示例("label"是一个单词,"is_unknown"是True)

    {
      "file": "tree/8b775397_nohash_0.wav", 
      "audio": {
        "path": "tree/8b775397_nohash_0.wav", 
        "array": array([ -0.00854492, -0.01339722, -0.02026367, ...,  0.00274658,
              0.00335693,  0.0005188]), 
        "sampling_rate": 16000
        },
      "label": 28,  # "tree"
      "is_unknown": True,
      "speaker_id": "1b88bf70",
      "utterance_id": 0
    }
    

    背景噪音的示例(_silence_类):

    {
      "file": "_silence_/doing_the_dishes.wav", 
      "audio": {
        "path": "_silence_/doing_the_dishes.wav", 
        "array": array([ 0.        ,  0.        ,  0.        , ..., -0.00592041,
             -0.00405884, -0.00253296]), 
        "sampling_rate": 16000
        }, 
      "label": 30,  # "_silence_"
      "is_unknown": False,
      "speaker_id": "None",
      "utterance_id": 0  # doesn't make sense here
    }
    

    数据字段

    • 文件:原始存档内的相对音频文件名。
    • 音频:包含相对音频文件名、解码后的音频数组和采样率的字典。请注意,当访问音频列时:dataset[0]["audio"]音频会自动解码和重新采样为dataset.features["audio"].sampling_rate。解码和重新采样大量音频可能需要很长时间。因此,在访问“audio”列之前,首先查询样本索引非常重要,即dataset[0]["audio"]应始终优先于dataset["audio"][0]。
    • 标签:音频样本中发音的单词或背景噪音(_silence_)类的整数值。
    • is_unknown:如果一个单词是辅助词。如果一个单词是核心单词或_silence_,则为False,如果一个单词是辅助词,则为True。
    • 发言人ID:说话人的唯一ID。如果标签是_silence_,则为None。
    • utterance_id:同一说话人的单词话语的递增ID。

    数据分割

    数据集有两个版本(=配置):"v0.01"和"v0.02"。"v0.02"包含更多的单词(有关更多详细信息,请参见 Source Data 部分)。

    train validation test
    v0.01 51093 6799 3081
    v0.02 84848 9982 4890

    请注意,在训练集和验证集中,_silence_类的示例长于1秒。您可以使用以下代码从较长的示例中采样1秒的示例:

    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
    

    数据集创建

    策划理由

    该数据集的主要目标是提供一种方法来构建和测试能够检测一组目标词中的单个词并将其与背景噪音或无关语音区分开的小型模型,尽可能少出现误报的情况。

    源数据

    初始数据收集和归一化

    音频文件的收集是使用众包的方式进行的,详见 aiyprojects.withgoogle.com/open_speech_recording ,其中列出了一些使用的开源音频收集代码。目标是收集人们说出单个单词命令的示例,而不是对话句子,因此他们在五分钟的会话中针对个别单词进行提示。

    在0.01版本中,录制了30个不同的单词:"是", "否", "上", "下", "左", "右", "开", "关", "停", "走", "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "床", "鸟", "猫", "狗", "开心", "房子", "马文", "希拉", "树", "哇"。

    在0.02版本中添加了更多单词:"向后"、"向前"、"跟随"、"学习"、"视觉"。

    在这两个版本中,按惯例,有十个单词被用作命令:"是", "否", "上", "下", "左", "右", "开", "关", "停", "走"。其他单词被视为辅助词(在当前版本的实现中,由 "is_unknown" 特征的 True 值标记)。它们的作用是教会模型将核心单词与未识别的单词区分开。

    _silence_标签包含一组较长的音频剪辑,这些剪辑是录音或噪音的数学模拟。

    谁是源语言生成者?

    音频文件是通过众包方式收集的。

    注释

    注释过程

    标签是事先准备好的一组单词。在五分钟的对话中,要求发言者依次说出单个单词。

    标注人员是谁?

    [需要更多信息]

    个人和敏感信息

    该数据集包含通过在线捐赠他们的声音的人。您同意不试图确定数据集中的说话者的身份。

    使用数据的注意事项

    数据的社会影响

    [需要更多信息]

    偏差讨论

    [需要更多信息]

    其他已知限制

    [需要更多信息]

    其他信息

    数据集维护者

    [需要更多信息]

    授权信息

    知识共享署名4.0许可证(CC-BY-4.0)。

    引文信息

    @article{speechcommandsv2,
       author = { {Warden}, P.},
        title = "{Speech Commands: A Dataset for Limited-Vocabulary Speech Recognition}",
      journal = {ArXiv e-prints},
      archivePrefix = "arXiv",
      eprint = {1804.03209},
      primaryClass = "cs.CL",
      keywords = {Computer Science - Computation and Language, Computer Science - Human-Computer Interaction},
        year = 2018,
        month = apr,
        url = {https://arxiv.org/abs/1804.03209},
    }
    

    贡献

    [需要更多信息]