audio_dataset_from_directory 函数keras.utils.audio_dataset_from_directory(
directory,
labels="inferred",
label_mode="int",
class_names=None,
batch_size=32,
sampling_rate=None,
output_sequence_length=None,
ragged=False,
shuffle=True,
seed=None,
validation_split=None,
subset=None,
follow_links=False,
verbose=True,
)
从目录中的音频文件生成 tf.data.Dataset。
如果你的目录结构是
main_directory/
...class_a/
......a_audio_1.wav
......a_audio_2.wav
...class_b/
......b_audio_1.wav
......b_audio_2.wav
那么调用 audio_dataset_from_directory(main_directory, labels='inferred') 将返回一个 tf.data.Dataset,它会从子目录 class_a 和 class_b 中生成批量的音频文件,以及标签 0 和 1(0 对应 class_a,1 对应 class_b)。
目前只支持 .wav 文件。
参数
labels 是 "inferred",则它应该包含子目录,每个子目录包含一个类的音频文件。否则,目录结构将被忽略。None(没有标签),或与目录中找到的音频文件数量相同大小的整数标签列表/元组。标签应按音频文件路径的字母数字顺序排序(通过 Python 中的 os.walk(directory) 获取)。labels 编码的字符串。选项有:"int":表示标签编码为整数(例如,用于 sparse_categorical_crossentropy 损失)。"categorical":表示标签编码为分类向量(例如,用于 categorical_crossentropy 损失)。"binary":表示标签(只能有两个)编码为 float32 标量,值为 0 或 1(例如,用于 binary_crossentropy)。None(无标签)。"inferred" 时有效。这是类名的明确列表(必须与子目录名称匹配)。用于控制类的顺序(否则使用字母数字顺序)。None,数据将不进行批处理(数据集将生成单个样本)。output_sequence_length。如果设置为 None,则同一批次中的所有序列将填充到批次中最长序列的长度。False。False,数据将按字母数字顺序排序。默认为 True。"training"、"validation" 或 "both" 之一。仅在设置 validation_split 时使用。False。True。返回
一个 tf.data.Dataset 对象。
label_mode 为 None,则它会生成形状为 (batch_size,) 的 string 张量,其中包含一批音频文件的内容。(audio, labels),其中 audio 的形状为 (batch_size, sequence_length, num_channels),labels 遵循以下描述的格式。标签格式规则
label_mode 是 int,则标签是形状为 (batch_size,) 的 int32 张量。label_mode 是 binary,则标签是形状为 (batch_size, 1) 的 float32 张量,包含 1 和 0。label_mode 是 categorical,则标签是形状为 (batch_size, num_classes) 的 float32 张量,表示类索引的独热编码。