重要提示

您正在查看 NeMo 2.0 文档。此版本为 API 和新库 NeMo Run 引入了重大更改。我们目前正在将所有功能从 NeMo 1.0 移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档

数据集#

NeMo 提供了脚本,用于将几个常见的 ASR 数据集转换为 nemo_asr 集合期望的格式。您可以按照以下每个数据集的相应部分中的说明运行这些脚本,从而开始使用这些数据集。

如果您有自己的数据并希望对其进行预处理以用于 NeMo ASR 模型,请查看页面底部的 准备自定义语音分类数据 部分。

Freesound#

Freesound 是一个旨在创建庞大的开放协作音频片段、样本、录音、哔哔声数据库的网站。大多数音频样本都根据允许重复使用的知识共享许可发布。研究人员和开发人员可以使用 Freesound API 访问 Freesound 内容,以检索有意义的声音信息,例如元数据、分析文件和声音本身。

说明

转到 <NeMo_git_root>/scripts/freesound_download_resample 并按照以下步骤下载 Freesound 数据并将其转换为 nemo_asr 集合期望的格式。

  1. 我们将需要一些必需的库,包括 freesound、requests、requests_oauthlib、joblib、librosa 和 sox。如果它们未安装,请运行 pip install -r freesound_requirements.txt

  2. https://freesound.org/help/developers/ 为 freesound.org 创建一个 API 密钥

  3. 创建一个名为 freesound_private_apikey.py 的 python 文件,并添加行 api_key = <您的 Freesound api 密钥> 和 client_id = <您的 Freesound 客户端 ID>

  4. 通过运行 python freesound_download.py –authorize 进行授权,并访问网站并粘贴响应代码

  5. 随意更改 download_resample_freesound.sh 中的任何参数,例如 max_samples 和 max_filesize

  6. 运行 bash download_resample_freesound.sh <您想要的文件数量> <下载数据目录> <重采样数据目录> 。例如

bash download_resample_freesound.sh 4000 ./freesound ./freesound_resampled_background

请注意,下载此数据集可能需要数小时。更改 download_resample_freesound.sh 中的类别以包含其他(语音)类别音频文件。然后,您应该在 <重采样数据目录> 中拥有 16khz 单声道 wav 文件。

Google 语音命令数据集#

Google 发布了两个版本的数据集,第一个版本包含 30 个类别的 6.5 万个样本,第二个版本包含 35 个类别的 11 万个样本。我们将这些数据集分别称为 v1v2

运行脚本 process_speech_commands_data.py 以处理 Google 语音命令数据集,以便生成 nemo_asr 支持格式的文件,该文件可以在 <NeMo_git_root>/scripts/dataset_processing/ 中找到。您应该使用 --data_root 设置语音命令的数据文件夹,并使用 --data_version 设置数据集的版本(int 类型)。

您可以通过传递 –rebalance 标志,通过随机过采样清单内的文件来进一步重新平衡训练集。

python process_speech_commands_data.py --data_root=<data directory> --data_version=<1 or 2> {--rebalance}

然后,您应该在目录 {data_root}/google_speech_recognition_v{1/2} 中拥有 train_manifest.jsonvalidation_manifest.jsontest_manifest.json

注意

如果您分别使用 v1 或 v2,您应该至少有 4GB 或 6GB 的可用磁盘空间。此外,下载和处理需要一些时间,所以去喝杯咖啡吧。

每一行都是一个训练示例。

{"audio_filepath": "<absolute path to dataset>/two/8aa35b0c_nohash_0.wav", "duration": 1.0, "label": "two"}
{"audio_filepath": "<absolute path to dataset>/two/ec5ab5d5_nohash_2.wav", "duration": 1.0, "label": "two"}

用于 VAD 的语音命令和 Freesound#

语音命令和 Freesound (SCF) 数据集用于在 论文 中训练 MarbleNet。这里我们展示如何下载和处理它。此脚本假定您已拥有 Freesound 数据集,否则,请查看 Freesound。我们将使用开源的 Google 语音命令数据集(我们将使用数据集的 V2 版本用于 SCF 数据集,但需要非常小的更改来支持 V1 数据集)作为我们的语音数据。

以下脚本将下载 Google 语音命令 v2 数据集,并将语音和背景数据转换为适合与 nemo_asr 一起使用的格式。

注意

您可以额外传递 --test_size--val_size 标志来拆分训练验证集和测试数据。

您可以额外传递 --window_length_in_sec 标志来指示段/窗口长度。默认值为 0.63 秒。

您可以在脚本末尾额外传递 -rebalance_method='fixed|over|under' 以重新平衡清单中的类样本。

  • ‘fixed’:每个类的固定样本数。训练 5000 个,验证 1000 个,测试 1000 个。(如果需要,可以在脚本中更改数字)

  • ‘over’:过采样重新平衡方法

  • ‘under’:欠采样重新平衡方法

mkdir './google_dataset_v2'
python process_vad_data.py --out_dir='./manifest/' --speech_data_root='./google_dataset_v2'--background_data_root=<resampled freesound data directory> --log --rebalance_method='fixed'

下载和转换后,您的 manifest 文件夹应包含一些 json 清单文件

  • (balanced_)background_testing_manifest.json

  • (balanced_)background_training_manifest.json

  • (balanced_)background_validation_manifest.json

  • (balanced_)speech_testing_manifest.json

  • (balanced_)speech_training_manifest.json

  • (balanced_)speech_validation_manifest.json

每一行都是一个训练示例。 audio_filepath 包含 wav 文件的路径,duration 是以秒为单位的持续时间,offset 是以秒为单位的偏移量,label 是标签(类)

{"audio_filepath": "<absolute path to dataset>/two/8aa35b0c_nohash_0.wav", "duration": 0.63, "label": "speech", "offset": 0.0}
{"audio_filepath": "<absolute path to dataset>/Emergency_vehicle/id_58368 simambulance.wav", "duration": 0.63, "label": "background", "offset": 4.0}

Voxlingua107#

VoxLingua107 由从 YouTube 视频自动提取的短语音片段组成。它包含 107 种语言。训练集中语音的总量为 6628 小时,平均每种语言 62 小时,但高度不平衡。它还包括一个单独的评估集,其中包含来自 33 种语言的 1609 个语音片段,并由至少两名志愿者验证。

您可以从其 官方网站 下载数据集。

每一行都是一个训练示例。

{"audio_filepath": "<absolute path to dataset>/ln/lFpWXQYseo4__U__S113---0400.650-0410.420.wav", "offset": 0, "duration": 3.0, "label": "ln"}
{"audio_filepath": "<absolute path to dataset>/lt/w0lp3mGUN8s__U__S28---0352.170-0364.770.wav", "offset": 8, "duration": 4.0, "label": "lt"}

准备自定义语音分类数据#

准备自定义语音分类数据与 准备自定义 ASR 数据 几乎相同。

在清单中,您需要 label 来确定此样本的类别,而不是 text 条目

Tarred 数据集#

与 ASR 类似,您可以将音频文件打包成 tar 文件,并在此情况下使用 ASR Dataset 类 TarredAudioToClassificationLabelDataset (对应于 AudioToClassificationLabelDataset)。

如果您想使用 tarred 数据集,请查看 ASR Tarred 数据集