audio_dataset_from_directory
functionkeras.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
文件.
参数:
directory: 数据所在的目录.
如果 labels
是 "inferred"
,它应包含子目录,
每个子目录包含一个类别的音频文件.否则,目录结构将被忽略.
labels: 可以是 "inferred"(标签从目录结构生成)、None
(无标签),或是一个整数标签的列表/元组,
其大小与目录中找到的音频文件数量相同.标签应根据音频文件路径的字母数字顺序排序
(通过 Python 中的 os.walk(directory)
获得).
label_mode: 描述 labels
编码的字符串.选项有:
- "int"
:表示标签编码为整数(例如用于 sparse_categorical_crossentropy
损失).
- "categorical"
:表示标签编码为分类向量(例如用于 categorical_crossentropy
损失)
- "binary"
:表示标签(只能有 2 个)编码为 float32
标量,值为 0 或 1(例如用于 binary_crossentropy
).
- None
(无标签).
class_names: 仅在 "labels" 为 "inferred"
时有效.
这是类名的显式列表
(必须与子目录名称匹配).用于控制类的顺序(否则使用字母数字顺序).
batch_size: 数据的批次大小.默认:32.如果为 None
,
数据将不会被分批
(数据集将生成单个样本).
sampling_rate: 音频采样率(每秒样本数).
output_sequence_length: 音频序列的最大长度.长于该长度的音频文件将被截断为 output_sequence_length
.
如果设置为 None
,则同一批次中的所有序列将被填充到
批次中最长序列的长度.
ragged: 是否返回一个 Ragged 数据集(其中每个序列具有自己的长度).默认值为 False
.
shuffle: 是否打乱数据.
如果设置为 False
,则按字母数字顺序排序数据.
默认值为 True
.
seed: 用于打乱和变换的可选随机种子.
validation_split: 可选的介于 0 和 1 之间的浮点数,用于保留验证的数据比例.
subset: 要返回的数据子集.可以是 "training"
、
"validation"
或 "both"
.仅在设置了 validation_split
时使用.
follow_links: 是否访问由符号链接指向的子目录.
默认值为 False
.
verbose: 是否显示类和找到的文件数量的信息.默认值为 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
张量,表示类索引的 one-hot 编码.