音频数据集完全指南

发布于 2022 年 12 月 15 日
在 GitHub 上更新
Open In Colab

引言

🤗 Datasets 是一个开源库,用于下载和准备来自所有领域的数据集。其极简的 API 允许用户仅用一行 Python 代码就能下载和准备数据集,并提供了一套函数来实现高效的预处理。它提供的数据集数量是无与伦比的,所有最流行的机器学习数据集都可以下载。

不仅如此,🤗 Datasets 还内置了多种针对音频的特定功能,让研究人员和从业者都能轻松处理音频数据集。在这篇博客中,我们将演示这些功能,展示为什么 🤗 Datasets 是下载和准备音频数据集的首选之地。

目录

  1. Hub
  2. 加载音频数据集
  3. 易于加载,易于处理
  4. 流式处理模式:终极解决方案
  5. Hub 上的音频数据集概览
  6. 结束语

Hub

Hugging Face Hub 是一个托管模型、数据集和演示的平台,所有内容都是开源和公开可用的。它拥有一个不断增长的音频数据集集合,涵盖了各种领域、任务和语言。通过与 🤗 Datasets 的紧密集成,Hub 上的所有数据集都可以用一行代码下载。

让我们前往 Hub,按任务筛选数据集

Trulli

在撰写本文时,Hub 上有 77 个语音识别数据集和 28 个音频分类数据集,而且这些数字还在不断增加。您可以选择其中任何一个数据集来满足您的需求。让我们看看第一个语音识别结果。点击 common_voice 会弹出数据集卡片。

Trulli

在这里,我们可以找到关于数据集的附加信息,查看哪些模型在该数据集上训练过,最令人兴奋的是,可以实时收听实际的音频样本。数据集预览显示在数据集卡片的中间。它向我们展示了每个子集和数据分割的前 100 个样本。更重要的是,它已经加载了音频样本,供我们实时收听。如果我们点击第一个样本的播放按钮,我们就可以听到音频并看到相应的文本。

数据集预览是在决定使用音频数据集之前体验它的绝佳方式。您可以选择 Hub 上的任何数据集,滚动浏览样本,收听不同子集和数据分割的音频,判断它是否适合您的需求。一旦您选择了一个数据集,加载数据以便开始使用就变得非常简单。

加载音频数据集

🤗 Datasets 的一个关键特性是能够仅用一行 Python 代码就下载和准备数据集。这是通过 load_dataset 函数实现的。传统上,加载数据集涉及:i) 下载原始数据,ii) 将其从压缩格式中解压,以及 iii) 准备单个样本和数据分割。使用 load_dataset,所有繁重的工作都在幕后完成。

让我们以加载来自 Speech Colab 的 GigaSpeech 数据集为例。GigaSpeech 是一个相对较新的语音识别数据集,用于对学术语音系统进行基准测试,也是 Hugging Face Hub 上众多音频数据集之一。

要加载 GigaSpeech 数据集,我们只需获取该数据集在 Hub 上的标识符 (speechcolab/gigaspeech) 并将其指定给 load_dataset 函数。GigaSpeech 有五种大小递增的配置,从 xs (10小时) 到 xl (10,000小时) 不等。在本教程中,我们将加载其中最小的配置。数据集的标识符和所需的配置就是我们下载数据集所需要的全部信息。

from datasets import load_dataset

gigaspeech = load_dataset("speechcolab/gigaspeech", "xs")

print(gigaspeech)

打印输出

DatasetDict({
    train: Dataset({
        features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
        num_rows: 9389
    })
    validation: Dataset({
        features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
        num_rows: 6750
    })
    test: Dataset({
        features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
        num_rows: 25619
    })
})

就这样,我们准备好了 GigaSpeech 数据集!没有比这更容易加载音频数据集的方法了。我们可以看到训练集、验证集和测试集都已预先分区,并附有各自的相应信息。

load_dataset 函数返回的对象 gigaspeech 是一个 DatasetDict。我们可以像对待普通 Python 字典一样对待它。要获取训练集,我们将相应的键传递给 gigaspeech 字典。

print(gigaspeech["train"])

打印输出

Dataset({
    features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
    num_rows: 9389
})

这将返回一个 Dataset 对象,其中包含训练集的数据。我们可以更进一步,获取该分割的第一个元素。同样,这可以通过标准的 Python 索引实现。

print(gigaspeech["train"][0])

打印输出

{'segment_id': 'YOU0000000315_S0000660',
 'speaker': 'N/A', 
 'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
       0.00036621], dtype=float32), 
           'sampling_rate': 16000
           }, 
 'begin_time': 2941.889892578125, 
 'end_time': 2945.070068359375, 
 'audio_id': 'YOU0000000315', 
 'title': 'Return to Vasselheim | Critical Role: VOX MACHINA | Episode 43', 
 'url': 'https://www.youtube.com/watch?v=zr2n1fLVasU', 
 'source': 2, 
 'category': 24, 
 'original_full_path': 'audio/youtube/P0004/YOU0000000315.opus',
 }

我们可以看到训练集返回了许多特征,包括 segment_idspeakertextaudio 等等。对于语音识别,我们主要关注 textaudio 列。

使用 🤗 Datasets 的 remove_columns 方法,我们可以移除语音识别不需要的数据集特征。

COLUMNS_TO_KEEP = ["text", "audio"]
all_columns = gigaspeech["train"].column_names
columns_to_remove = set(all_columns) - set(COLUMNS_TO_KEEP)

gigaspeech = gigaspeech.remove_columns(columns_to_remove)

我们来检查一下是否成功保留了 textaudio 列。

print(gigaspeech["train"][0])

打印输出

{'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
       0.00036621], dtype=float32), 
           'sampling_rate': 16000}}

太好了!我们可以看到我们得到了所需的两个列 textaudiotext 是一个包含样本转录文本的字符串,而 audio 是一个采样率为 16KHz 的一维振幅值数组。我们的数据集加载完成了!

易于加载,易于处理

用 🤗 Datasets 加载数据集只是乐趣的一半。我们现在可以使用其提供的工具套件来高效地预处理数据,为模型训练或推理做准备。在本节中,我们将执行数据预处理的三个阶段。

  1. 重采样音频数据
  2. 预处理函数
  3. 过滤函数

1. 重采样音频数据

load_dataset 函数会以发布时的采样率准备音频样本。但这不一定是我们模型所期望的采样率。在这种情况下,我们需要将音频 重采样 到正确的采样率。

我们可以使用 🤗 Datasets 的 cast_column 方法将音频输入设置为我们期望的采样率。此操作不会就地更改音频,而是向 datasets 发出信号,在加载音频样本时 动态地 对其进行重采样。下面的代码单元格会将采样率设置为 8kHz。

from datasets import Audio

gigaspeech = gigaspeech.cast_column("audio", Audio(sampling_rate=8000))

重新加载 GigaSpeech 数据集中的第一个音频样本会将其重采样到所需的采样率。

print(gigaspeech["train"][0])

打印输出

{'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([ 0.00046338,  0.00034808, -0.00086153, ...,  0.00099299,
        0.00083484,  0.00080221], dtype=float32), 
           'sampling_rate': 8000}
 }

我们可以看到采样率已经降到了 8kHz。数组值也不同了,因为我们现在每两个原始振幅值大约只保留一个。让我们将数据集的采样率设置回 16kHz,这是大多数语音识别模型所期望的采样率。

gigaspeech = gigaspeech.cast_column("audio", Audio(sampling_rate=16000))

print(gigaspeech["train"][0])

打印输出

{'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
       0.00036621], dtype=float32), 
           'sampling_rate': 16000}
 }

很简单!cast_column 提供了一种在需要时直接重采样音频数据集的机制。

2. 预处理函数

处理音频数据集最具挑战性的方面之一是以正确的格式为我们的模型准备数据。使用 🤗 Datasets 的 map 方法,我们可以编写一个函数来预处理数据集的单个样本,然后无需任何代码更改即可将其应用于每个样本。

首先,让我们从 🤗 Transformers 加载一个处理器对象。这个处理器将音频预处理为输入特征,并将目标文本标记化为标签。AutoProcessor 类用于从给定的模型检查点加载处理器。在示例中,我们从 OpenAI 的 Whisper medium.en 检查点加载处理器,但您可以将其更改为 Hugging Face Hub 上的任何模型标识符。

from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("openai/whisper-medium.en")

太好了!现在我们可以编写一个函数,它接受一个训练样本,并通过 processor 为我们的模型进行准备。我们还将计算每个音频样本的输入长度,这是下一步数据准备所需的信息。

def prepare_dataset(batch):
    audio = batch["audio"]
    batch = processor(audio["array"], sampling_rate=audio["sampling_rate"], text=batch["text"])
    
    batch["input_length"] = len(audio["array"]) / audio["sampling_rate"]
    return batch

我们可以使用 🤗 Datasets 的 map 方法将数据准备函数应用于我们所有的训练样本。在这里,我们还删除了 textaudio 列,因为我们已经将音频预处理为输入特征,并将文本标记化为标签。

gigaspeech = gigaspeech.map(prepare_dataset, remove_columns=gigaspeech["train"].column_names)

3. 过滤函数

在训练之前,我们可能有一个过滤训练数据的启发式方法。例如,我们可能想要过滤掉任何长度超过 30 秒的音频样本,以防止音频样本被截断或冒着内存不足的风险。我们可以用与上一步为模型准备数据几乎相同的方式来做到这一点。

我们首先编写一个函数,指示哪些样本要保留,哪些要丢弃。这个函数 is_audio_length_in_range 返回一个布尔值:短于 30 秒的样本返回 True,而长于 30 秒的样本返回 False。

MAX_DURATION_IN_SECONDS = 30.0

def is_audio_length_in_range(input_length):
    return input_length < MAX_DURATION_IN_SECONDS

我们可以使用 🤗 Datasets 的 filter 方法将此过滤函数应用于我们所有的训练样本,保留所有短于 30 秒的样本 (True),并丢弃那些较长的样本 (False)。

gigaspeech["train"] = gigaspeech["train"].filter(is_audio_length_in_range, input_columns=["input_length"])

就这样,我们为模型完全准备好了 GigaSpeech 数据集!总的来说,从加载数据集到最后的过滤步骤,这个过程总共需要 13 行 Python 代码。

为了尽可能保持 notebook 的通用性,我们只执行了基本的数据准备步骤。然而,您可以对音频数据集应用的函数没有任何限制。您可以扩展函数 prepare_dataset 来执行更复杂的操作,例如数据增强、语音活动检测或降噪。使用 🤗 Datasets,如果您能用 Python 函数编写它,您就能将它应用于您的数据集!

流式处理模式:终极解决方案

处理音频数据集面临的最大挑战之一是它们的庞大规模。GigaSpeech 的 xs 配置仅包含 10 小时的训练数据,但下载和准备就占用了超过 13GB 的存储空间。那么,当我们想要在更大的数据分割上进行训练时会发生什么呢?完整的 xl 配置包含 10,000 小时的训练数据,需要超过 1TB 的存储空间。对于大多数语音研究人员来说,这远远超出了典型硬盘的规格。我们是否需要花钱购买额外的存储空间?还是有一种方法可以在这些数据集上进行训练而 没有磁盘空间限制

🤗 Datasets 让我们能够做到这一点。这是通过使用流式处理 (streaming) 模式实现的,如图 1 所示。流式处理允许我们在迭代数据集时逐步加载数据。我们不是一次性下载整个数据集,而是逐个样本加载数据集。我们在迭代数据集时,动态地 加载和准备需要的样本。这样,我们只加载我们正在使用的样本,而不是那些我们不用的!一旦我们处理完一个样本,我们就继续迭代数据集并加载下一个。

这类似于 下载 电视剧和 在线观看 电视剧。当我们下载一部电视剧时,我们会将整个视频离线下载并保存到我们的磁盘上。我们必须等待整个视频下载完成才能观看,并且需要与视频文件大小相当的磁盘空间。相比之下,在线观看电视剧时,我们不会将视频的任何部分下载到磁盘,而是实时迭代远程视频文件,并按需加载每个部分。我们不必等待整个视频缓冲完毕才能开始观看,只要视频的第一部分准备好了就可以开始!这就是我们应用于加载数据集的相同 流式处理 原则。

Trulli
图 1: 流式处理模式。数据集在迭代过程中逐步加载。

与一次性下载整个数据集相比,流式处理模式有三个主要优势:

  1. 磁盘空间: 在我们迭代数据集时,样本被逐个加载到内存中。由于数据没有在本地下载,因此没有磁盘空间要求,所以您可以使用任意大小的数据集。
  2. 下载和处理时间: 音频数据集很大,需要大量时间来下载和处理。通过流式处理,加载和处理是动态进行的,这意味着您可以在第一个样本准备好后立即开始使用数据集。
  3. 便于实验: 您可以在少数样本上进行实验,以检查您的脚本是否正常工作,而无需下载整个数据集。

流式处理模式有一个需要注意的地方。在下载数据集时,原始数据和处理后的数据都保存在本地磁盘上。如果我们想重用这个数据集,我们可以直接从磁盘加载处理后的数据,跳过下载和处理步骤。因此,我们只需要执行一次下载和处理操作,之后就可以重用准备好的数据。而在流式处理模式下,数据不会下载到磁盘。因此,下载的数据和预处理的数据都不会被缓存。如果我们想重用数据集,必须重复流式处理步骤,再次动态加载和处理音频文件。因此,建议下载您可能多次使用的数据集。

如何启用流式处理模式?很简单!只需在加载数据集时设置 streaming=True。剩下的事情都会为您处理好。

gigaspeech = load_dataset("speechcolab/gigaspeech", "xs", streaming=True)

本教程中到目前为止涵盖的所有步骤都可以应用于流式处理的数据集,无需任何代码更改。唯一的变化是您不能再使用 Python 索引访问单个样本 (即 gigaspeech["train"][sample_idx])。相反,您必须迭代数据集,例如使用 for 循环。

流式处理模式可以将您的研究提升到一个新的水平:不仅最大的数据集对您来说触手可及,而且您可以轻松地在一个脚本中评估多个数据集上的系统,而无需担心您的磁盘空间。与在单个数据集上进行评估相比,多数据集评估为语音识别系统的泛化能力提供了更好的衡量标准 (c.f. 端到端语音基准 (ESB))。附带的 Google Colab 提供了一个示例,演示如何在一个脚本中使用流式处理模式在八个英语语音识别数据集上评估 Whisper 模型。

Hub 上的音频数据集概览

本节为 Hugging Face Hub 上最流行的语音识别、语音翻译和音频分类数据集提供参考指南。我们可以将针对 GigaSpeech 数据集所涵盖的所有内容应用于 Hub 上的任何数据集。我们所要做的就是在 load_dataset 函数中切换数据集标识符。就这么简单!

  1. 英语语音识别
  2. 多语言语音识别
  3. 语音翻译
  4. 音频分类

英语语音识别

语音识别,或语音转文本,是将口语语音映射到书面文本的任务,其中语音和文本都使用同一种语言。我们总结了 Hub 上最受欢迎的英语语音识别数据集。

数据集 领域 说话风格 训练时长 大小写 标点符号 许可证 推荐用途
LibriSpeech 有声读物 朗读 960 CC-BY-4.0 学术基准测试
Common Voice 11 维基百科 朗读 2300 CC0-1.0 非母语使用者
VoxPopuli 欧洲议会 演说 540 CC0 非母语使用者
TED-LIUM TED 演讲 演说 450 CC-BY-NC-ND 3.0 技术主题
GigaSpeech 有声读物、播客、YouTube 朗读、自发 10000 apache-2.0 跨领域的鲁棒性
SPGISpeech 财经会议 演说、自发 5000 用户协议 完全格式化的转录文本
Earnings-22 财经会议 演说、自发 119 CC-BY-SA-4.0 口音多样性
AMI 会议 自发 100 CC-BY-4.0 嘈杂语音环境

请参考 Google Colab,了解如何在一个脚本中对所有八个英语语音识别数据集进行系统评估的指南。

以下数据集描述主要摘自 ESB 基准 论文。

LibriSpeech ASR

LibriSpeech 是一个用于评估 ASR 系统的标准大型数据集。它包含大约 1,000 小时从 LibriVox 项目收集的有声读物朗读音频。LibriSpeech 在促进研究人员利用大量已有的转录语音数据方面发挥了重要作用。因此,它已成为对学术语音系统进行基准测试最受欢迎的数据集之一。

librispeech = load_dataset("librispeech_asr", "all")

Common Voice

Common Voice 是一系列众包的开放许可语音数据集,说话者用各种语言录制来自维基百科的文本。由于任何人都可以贡献录音,因此在音频质量和说话者方面存在显著差异。音频条件具有挑战性,存在录音伪影、带口音的语音、犹豫以及外来词的存在。转录文本既有大小写也有标点符号。11.0 版本的英文子集包含大约 2,300 小时的验证数据。使用该数据集需要您同意 Common Voice 的使用条款,这些条款可以在 Hugging Face Hub 上找到:mozilla-foundation/common_voice_11_0。一旦您同意了使用条款,您将被授予访问数据集的权限。然后,您在加载数据集时需要提供来自 Hub 的身份验证令牌

common_voice = load_dataset("mozilla-foundation/common_voice_11", "en", use_auth_token=True)

VoxPopuli

VoxPopuli 是一个大规模多语言语音语料库,由 2009-2020 年欧洲议会活动录音数据组成。因此,它占据了演讲和政治言论这一独特的领域,且主要来源于非母语使用者。其英语子集包含约 550 小时的标注语音。

voxpopuli = load_dataset("facebook/voxpopuli", "en")

TED-LIUM

TED-LIUM 是一个基于英语 TED 演讲视频的数据集。其说话风格为演讲式教育讲座。转录的演讲涵盖了文化、政治和学术等一系列不同主题,因此包含了大量技术词汇。第 3 版(最新版)数据集包含约 450 小时的训练数据。验证和测试数据来自旧版数据集,与早期版本保持一致。

tedlium = load_dataset("LIUM/tedlium", "release3")

GigaSpeech

GigaSpeech 是一个多领域英语语音识别语料库,精选自于有声读物、播客和 YouTube。它涵盖了叙述性和自发性演讲,主题多样,如艺术、科学和体育。它包含从 10 小时到 10,000 小时不等的训练集划分,以及标准化的验证和测试集划分。

gigaspeech = load_dataset("speechcolab/gigaspeech", "xs", use_auth_token=True)

SPGISpeech

SPGISpeech 是一个英语语音识别语料库,由 S&P Global 公司手动转录的公司财报电话会议录音组成。转录文本根据专业的演讲和自发性语音风格指南进行了完全格式化。它包含从 200 小时到 5,000 小时不等的训练集划分,并有规范的验证和测试集划分。

spgispeech = load_dataset("kensho/spgispeech", "s", use_auth_token=True)

Earnings-22

Earnings-22 是一个时长 119 小时的英语财报电话会议语料库,收集自全球各大公司。该数据集的开发目标是汇集涵盖真实世界金融主题的广泛的说话者和口音。说话者和口音具有高度多样性,说话者来自七个不同的语言区。Earnings-22 最初主要作为仅供测试的数据集发布。Hub 上提供的数据集版本已被划分为训练-验证-测试集。

earnings22 = load_dataset("revdotcom/earnings22")

AMI

AMI 包含 100 小时的会议录音,使用不同的录音流进行采集。该语料库包含手动标注的会议正交转录文本,并在词级别上对齐。AMI 数据集的单个样本包含非常大的音频文件(10到60分钟之间),这些文件被分割成适合大多数语音识别系统训练的长度。AMI 包含两种划分:IHM 和 SDM。IHM (individual headset microphone) 包含较容易的近场语音,而 SDM (single distant microphone) 包含较难的远场语音。

ami = load_dataset("edinburghcstr/ami", "ihm")

多语言语音识别

多语言语音识别指除英语外的所有语言的语音识别(语音转文本)。

Multilingual LibriSpeech

Multilingual LibriSpeech 是 LibriSpeech ASR 语料库的多语言版本。它包含一个大型的朗读有声读物语料库,取自 LibriVox 项目,是适合学术研究的数据集。它包含八种高资源语言的数据划分——英语、德语、荷兰语、西班牙语、法语、意大利语、葡萄牙语和波兰语。

Common Voice

Common Voice 是一系列众包的开放许可语音数据集,说话者用各种语言录制维基百科的文本。由于任何人都可以贡献录音,因此音频质量和说话者都存在显著差异。音频条件具有挑战性,存在录音伪影、带口音的语音、犹豫以及外来词的出现。转录文本保留了大小写和标点符号。截至第 11 版,该数据集已涵盖超过 100 种语言,包括低资源和高资源语言。

VoxPopuli

VoxPopuli 是一个大规模多语言语音语料库,由 2009-2020 年欧洲议会活动录音数据组成。因此,它占据了演讲和政治言论这一独特的领域,且主要来源于非母语使用者。它包含 15 种欧洲语言的标注音频-转录数据。

FLEURS

FLEURS (Few-shot Learning Evaluation of Universal Representations of Speech) 是一个用于评估 102 种语言(包括许多被归类为“低资源”的语言)语音识别系统的数据集。该数据源自 FLoRes-101 数据集,这是一个机器翻译语料库,包含 3001 个从英语到 101 种其他语言的句子翻译。母语使用者被录制用其母语朗读句子转录文本。录制的音频数据与句子转录文本配对,从而为所有 101 种语言生成多语言语音识别数据。训练集每种语言包含约 10 小时的有监督音频-转录数据。

语音翻译

语音翻译是将口头语音映射到书面文本的任务,其中语音和文本使用不同的语言(例如,英语语音到法语文本)。

CoVoST 2

CoVoST 2 是一个大规模多语言语音翻译语料库,涵盖从 21 种语言翻译到英语以及从英语翻译到 15 种语言。该数据集使用 Mozilla 的开源 Common Voice 众包语音录音数据库创建。该语料库共包含 2,900 小时的语音数据。

FLEURS

FLEURS (Few-shot Learning Evaluation of Universal Representations of Speech) 是一个用于评估 102 种语言(包括许多被归类为“低资源”的语言)语音识别系统的数据集。该数据源自 FLoRes-101 数据集,这是一个机器翻译语料库,包含 3001 个从英语到 101 种其他语言的句子翻译。母语使用者被录制用其母语朗读句子转录文本。通过将录制的音频数据与 101 种语言中每一种的句子转录文本配对,构建了一个nn 路并行的语音翻译数据语料库。训练集每个源-目标语言组合包含约 10 小时的有监督音频-转录数据。

音频分类

音频分类是将原始音频输入映射到类别标签输出的任务。音频分类的实际应用包括关键词识别、说话人意图识别和语种识别。

SpeechCommands

SpeechCommands 是一个由一秒长的音频文件组成的数据集,每个文件包含一个英语口语单词或背景噪音。这些单词取自一小组命令,并由许多不同的说话者说出。该数据集旨在帮助训练和评估小型设备上的关键词识别系统。

多语言口语词汇

多语言口语词汇是一个大规模语料库,由一秒钟的音频样本组成,每个样本包含一个口语单词。该数据集包含 50 种语言和超过 34 万个关键词,总计 2340 万个一秒钟的口语样本,或超过 6000 小时的音频。音频-转录数据来自 Mozilla Common Voice 项目。为每个话语在词级别上生成时间戳,并用于提取单个口语单词及其相应的转录,从而形成一个新的单个口语单词语料库。该数据集的预期用途是多语言关键词识别和口语术语搜索领域的学术研究和商业应用。

FLEURS

FLEURS (Few-shot Learning Evaluation of Universal Representations of Speech) 是一个用于评估 102 种语言(包括许多被归类为“低资源”的语言)语音识别系统的数据集。该数据源自 FLoRes-101 数据集,这是一个机器翻译语料库,包含 3001 个从英语到 101 种其他语言的句子翻译。母语使用者被录制用其母语朗读句子转录文本。录制的音频数据与所说语言的标签配对。该数据集可用作语种识别的音频分类数据集:训练系统来预测语料库中每个话语的语言。

结束语

在这篇博文中,我们探索了 Hugging Face Hub 并体验了数据集预览功能,这是一种在下载前试听音频数据集的有效方法。我们用一行 Python 代码加载了一个音频数据集,并执行了一系列通用的预处理步骤,为机器学习模型做准备。总共只需要 13 行代码,依靠简单的 Python 函数即可完成必要的操作。我们介绍了流式模式,这是一种动态加载和准备音频数据样本的方法。最后,我们总结了 Hub 上最受欢迎的语音识别、语音翻译和音频分类数据集。

读完这篇博客后,我们希望您会同意 🤗 Datasets 是下载和准备音频数据集的首选之地。 🤗 Datasets 的成功离不开社区的努力。如果您想贡献数据集,请参阅添加新数据集指南

感谢以下为本博文做出贡献的个人:Vaibhav Srivastav、Polina Kazakova、Patrick von Platen、Omar Sanseviero 和 Quentin Lhoest。

社区

注册登录 以发表评论