重要提示

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

数据集#

audio 集合期望训练、验证和测试数据集采用 NeMo 格式或 Lhotse 格式。

NeMo 格式#

每个数据集由一组单独音频文件中的话语以及描述数据集的清单组成,清单中每行包含一个话语的信息 (.json)。每个要传入的数据集应有一个清单文件,因此,如果用户想要单独的训练和验证数据集,他们也应该有单独的清单。否则,他们将使用训练数据加载验证数据,反之亦然。

在大多数应用中,例如语音恢复或增强,模型旨在将输入音频信号转换为目标音频信号。在这种情况下,清单的每一行应具有以下结构

{"input_filepath": "/path/to/input_audio.wav", "target_filepath": "/path/to/target_audio.wav", "duration": 3.147}

input_filepath 字段应提供对应于话语的音频文件的绝对路径,或相对于包含清单的目录的相对路径。target_filepath 字段应提供对应于话语的音频文件的绝对路径,或相对于包含清单的目录的相对路径。请注意,输入和目标音频的键可以是自定义的,并且可以在模型配置文件中配置,如 Configs 中所述。

清单中的每个条目(描述一个音频文件)应以 "{""}" 括起来,并且必须放在一行上。"key": value 对应用逗号分隔,如上所示。NeMo 不强制清单中存在空行,以便总行数指示数据集中音频文件的总数。

一旦有了描述数据集中每个音频文件的清单,请在实验配置文件中分配 JSON 清单文件路径,例如,training_ds.manifest_filepath=<path/to/manifest.json>

有关各个 tarred 数据集和可用参数(包括洗牌选项)的更多信息,请参阅 Datasets 部分中相应的类 API。

Lhotse 格式#

NeMo 支持使用 Lhotse(一个语音数据处理库)作为数据加载选项。可以使用数据集配置文件中的 use_lhotse=True 轻松启用 Lhotse,如 Configs 中所述。

Lhotse 数据加载支持以下类型的输入

  • Lhotse CutSet 清单

    常规 Lhotse CutSet 清单(通常为 gzipped JSONL)。请参阅 Lhotse Cuts 文档,了解有关 Lhotse 数据格式的更多信息。

  • Lhotse Shar 数据

    Lhotse Shar 是一种数据格式,它也使用 tar 文件进行顺序数据加载,但设计为模块化(即,易于使用新的数据源和新的特征字段进行扩展)。更多详细信息可以在教程笔记本中找到:tutorial_shar

将 NeMo 清单转换为 Lhotse#

可以使用提供的 转换脚本 将 NeMo 格式的清单数据集转换为 Lhotse 格式。

CONVERT_SCRIPT=scripts/audio_to_audio/convert_nemo_to_lhotse.py
INPUT_MANIFEST=/path/to/data/nemo_manifest.json
OUTPUT_MANIFEST=/path/to/data/lhotse_manifest.jsonl

python ${CONVERT_SCRIPT} ${INPUT_MANIFEST} ${OUTPUT_MANIFEST} -i input_filepath -t target_filepath

创建 Lhotse shar 数据集#

首先,使用绝对路径将 NeMo 清单转换为 Lhotse 格式。

CONVERT_SCRIPT=scripts/audio_to_audio/convert_nemo_to_lhotse.py
INPUT_MANIFEST=/path/to/data/nemo_manifest.json
OUTPUT_MANIFEST=/path/to/data/lhotse_manifest_absolute_paths.jsonl

# convert
python ${CONVERT_SCRIPT} ${INPUT_MANIFEST} ${OUTPUT_MANIFEST} -i input_filepath -t target_filepath --force_absolute_paths

然后,创建 Lhotse shar 数据集。

LHOTSE_MANIFEST=/path/to/data/lhotse_manifest_absolute_paths.jsonl
OUTPUT_DIR=/path/to/data/shar

# create shars, each with 2084 examples, flac audio format
lhotse shar export --num-jobs 16 --verbose --shard-size 2084 --audio flac ${LHOTSE_MANIFEST} ${OUTPUT_DIR}