加载音频数据
您可以使用 Audio 特性加载音频数据集,该特性会在您访问示例时自动解码和重新采样音频文件。音频解码基于 soundfile
python 包,该包在底层使用 libsndfile
C 库。
安装
要使用音频数据集,您需要安装 audio
依赖项。查看 安装 指南以了解如何安装它。
本地文件
您可以使用音频文件路径加载自己的数据集。使用 cast_column() 函数来获取音频文件路径列,并将其转换为 Audio 特性
>>> audio_dataset = Dataset.from_dict({"audio": ["path/to/audio_1", "path/to/audio_2", ..., "path/to/audio_n"]}).cast_column("audio", Audio())
>>> audio_dataset[0]["audio"]
{'array': array([ 0. , 0.00024414, -0.00024414, ..., -0.00024414,
0. , 0. ], dtype=float32),
'path': 'path/to/audio_1',
'sampling_rate': 16000}
AudioFolder
您还可以使用 AudioFolder
数据集构建器加载数据集。它不需要编写自定义数据加载器,使其在快速创建和加载具有数千个音频文件的数据集时非常有用。
带有元数据的 AudioFolder
要将您的音频文件与元数据信息链接,请确保您的数据集具有 metadata.csv
文件。您的数据集结构可能如下
folder/train/metadata.csv
folder/train/first_audio_file.mp3
folder/train/second_audio_file.mp3
folder/train/third_audio_file.mp3
您的 metadata.csv
文件必须具有 file_name
列,该列将音频文件与其元数据链接。示例 metadata.csv
文件可能如下所示
file_name,transcription first_audio_file.mp3,znowu się duch z ciałem zrośnie w młodocianej wstaniesz wiosnie i możesz skutkiem tych leków umierać wstawać wiek wieków dalej tam były przestrogi jak siekać głowę jak nogi second_audio_file.mp3,już u źwierzyńca podwojów król zasiada przy nim książęta i panowie rada a gdzie wzniosły krążył ganek rycerze obok kochanek król skinął palcem zaczęto igrzysko third_audio_file.mp3,pewnie kędyś w obłędzie ubite minęły szlaki zaczekajmy dzień jaki poślemy szukać wszędzie dziś jutro pewnie będzie posłali wszędzie sługi czekali dzień i drugi gdy nic nie doczekali z płaczem chcą jechać dali
AudioFolder
将加载音频数据并创建一个包含来自 metadata.csv
的文本的 transcription
列
>>> from datasets import load_dataset
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")
>>> # OR by specifying the list of files
>>> dataset = load_dataset("audiofolder", data_files=["path/to/audio_1", "path/to/audio_2", ..., "path/to/audio_n"])
您可以使用 data_files
参数从其 URL 加载远程数据集
>>> dataset = load_dataset("audiofolder", data_files=["https://foo.bar/audio_1", "https://foo.bar/audio_2", ..., "https://foo.bar/audio_n"]
>>> # for example, pass SpeechCommands archive:
>>> dataset = load_dataset("audiofolder", data_files="https://s3.amazonaws.com/datasets.huggingface.co/SpeechCommands/v0.01/v0.01_test.tar.gz")
元数据也可以指定为 JSON Lines,在这种情况下,使用 metadata.jsonl
作为元数据文件的名称。此格式在其中一列比较复杂(例如,浮点数列表)的情况下很有用,以避免解析错误或将复杂的值读取为字符串。
要忽略元数据文件中的信息,请在 load_dataset() 中设置 drop_metadata=True
>>> from datasets import load_dataset
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder", drop_metadata=True)
如果您没有元数据文件,AudioFolder
会自动从目录名称推断标签名称。如果您想删除自动创建的标签,请设置 drop_labels=True
。在这种情况下,您的数据集将只包含音频列
>>> from datasets import load_dataset
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder_without_metadata", drop_labels=True)
有关创建您自己的 AudioFolder
数据集的更多信息,请查看 创建音频数据集 指南。
有关如何加载任何类型的数据集的指南,请查看 通用加载指南。
< > 更新 在 GitHub 上