Hub documentation

Аудиодатасет

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Аудиодатасет

В этом руководстве показано, как настроить репозиторий датасета с аудиофайлами. Примеры соответствующих репозиториев можно найти в этой коллекции примеров аудиодатасетов.

Набор данных с поддерживаемой структурой и форматами файлов автоматически получает Dataset Viewer на своей странице в Hub.


Дополнительная информация о ваших аудиофайлах — например, транскрипты — загружается автоматически, если вы включите эти данные в файл метаданных (metadata.csv/metadata.jsonl/metadata.parquet).

В качестве альтернативы аудиофайлы могут храниться в файлах Parquet или в TAR-архивах, следующих формату WebDataset.

Только аудиофайлы

Если ваш набор данных состоит только из одной колонки с аудио, вы можете просто сохранить файлы аудио в корне:

my_dataset_repository/
├── 1.wav
├── 2.wav
├── 3.wav
└── 4.wav

или в подкаталоге:

my_dataset_repository/
└── audio
    ├── 1.wav
    ├── 2.wav
    ├── 3.wav
    └── 4.wav

Одновременно поддерживаются несколько форматов, в том числе AIFF, FLAC, MP3, OGG и WAV.

my_dataset_repository/
└── audio
    ├── 1.aiff
    ├── 2.ogg
    ├── 3.mp3
    └── 4.flac

Если у вас несколько разбиений, вы можете разместить файлы аудио в каталогах с соответствующими именами:

my_dataset_repository/
├── train
│   ├── 1.wav
│   └── 2.wav
└── test
    ├── 3.wav
    └── 4.wav

См. Имена файлов и разбиения для получения дополнительной информации и других способов организации данных по разбиениям.

Дополнительные столбцы

Если у вас есть дополнительная информация о наборе данных, например, транскрипция, добавьте её в виде файла metadata.csv в вашем репозитории. Это позволяет быстро создавать наборы данных для различных задач обработки аудио, таких как синтез речи или автоматическое распознавание речи.

my_dataset_repository/
├── 1.wav
├── 2.wav
├── 3.wav
├── 4.wav
└── metadata.csv

Файл metadata.csv должен содержать столбец file_name, который связывает файлы изображений с их метаданными:

file_name,animal
1.wav,cat
2.wav,cat
3.wav,dog
4.wav,dog

Вы также можете использовать файл JSONL metadata.jsonl:

{"file_name": "1.wav","text": "cat"}
{"file_name": "2.wav","text": "cat"}
{"file_name": "3.wav","text": "dog"}
{"file_name": "4.wav","text": "dog"}

А для больших наборов данных или если вас интересуют расширенные функции получения данных, вы можете использовать файл Parquet metadata.parquet.

Относительные пути

Файл метаданных должен находиться либо в той же директории, что и связанные с ним аудиофайлы, либо в любой родительской директории, как в этом примере:

my_dataset_repository/
└── test
    ├── audio
    │   ├── 1.wav
    │   ├── 2.wav
    │   ├── 3.wav
    │   └── 4.wav
    └── metadata.csv

В этом случае столбец file_name должен содержать полный относительный путь к аудиофайлам, а не только имя файла:

file_name,animal
audio/1.wav,cat
audio/2.wav,cat
audio/3.wav,dog
audio/4.wav,dog

Файлы метаданных нельзя размещать в подкаталогах каталога с аудиофайлами.

Более общо, любая колонка с именем file_name или *_file_name должна содержать полный относительный путь к аудиофайлам.

В этом примере каталог test используется для задания имени обучающей выборки. Подробнее см. в разделе Имена файлов и разбиения.

Классификация аудио

Для наборов данных для классификации аудио также можно использовать простую схему: использовать имена каталогов в качестве названий классов аудио. Разместите файлы аудио в структуре каталогов, например:

my_dataset_repository/
├── cat
│   ├── 1.wav
│   └── 2.wav
└── dog
    ├── 3.wav
    └── 4.wav

Набор данных, созданный с этой структурой, содержит две колонки: audio и label (со значениями cat и dog).

Вы также можете указать несколько разбиений. Для этого каталог вашего набора данных должен иметь следующую структуру (см. Имена файлов и разбиения для получения дополнительной информации):

my_dataset_repository/
├── test
│   ├── cat
│   │   └── 2.wav
│   └── dog
│       └── 4.wav
└── train
    ├── cat
    │   └── 1.wav
    └── dog
        └── 3.wav

Вы можете отключить автоматическое добавление столбца label в YAML-конфигурации. Если имена ваших каталогов не имеют специального значения, установите drop_labels: true в заголовке README:

configs:
  - config_name: default  # Name of the dataset subset, if applicable.
    drop_labels: true

Наборы данных большого масштаба

Формат WebDataset

Формат WebDataset хорошо подходит для крупных аудиодатасетов (например, AlienKevin/sbs_cantonese). Он состоит из TAR-архивов, содержащих аудиофайлы и их метаданные, и оптимизирован для потоковой обработки. Этот формат полезен, если у вас большое количество аудиофайлов и вам нужны потоковые загрузчики данных для обучения в больших масштабах.

my_dataset_repository/
├── train-0000.tar
├── train-0001.tar
├── ...
└── train-1023.tar

Чтобы создать TAR-архив WebDataset, создайте каталог, содержащий аудиофайлы и файлы метаданных, которые нужно архивировать, и создайте TAR-архив, например, с помощью команды tar. Обычный размер одного архива составляет примерно 1 ГБ. Убедитесь, что каждая пара аудиофайла и файла метаданных имеет одинаковый префикс имени файла, например:

train-0000/
├── 000.flac
├── 000.json
├── 001.flac
├── 001.json
├── ...
├── 999.flac
└── 999.json

Обратите внимание, что для удобства пользователей и для обеспечения работы Dataset Viewer каждый датасет, размещённый в Hub, автоматически конвертируется в формат Parquet при размере до 5 ГБ. Подробнее об этом читайте в документации Parquet format.

Формат Parquet

Вместо загрузки аудиофайлов и метаданных как отдельных файлов вы можете встроить всё в файл Parquet. Это полезно, если у вас большое количество аудиофайлов, если вы хотите встроить несколько аудиостолбцов или если вы хотите хранить дополнительную информацию об аудио в том же файле. Parquet также полезен для хранения данных, таких как сырые байты, которые не поддерживаются в JSON/CSV.

my_dataset_repository/
└── train.parquet

Файлы Parquet с аудиоданными можно создать с помощью pandas или библиотеки datasets. Чтобы создать файлы Parquet с аудиоданными в pandas, можно использовать pandas-audio-methods и df.to_parquet(). В datasets можно задать тип столбца как Audio() и использовать метод ds.to_parquet(...) или ds.push_to_hub(...). Руководство по загрузке аудиодатасетов в datasets можно найти здесь.

В качестве альтернативы можно вручную задать тип аудио для Parquet-файлов, созданных с помощью других инструментов. Сначала убедитесь, что ваши аудио-колонки имеют тип struct, с бинарным полем "bytes" для данных аудио и строковым полем "path" для имени или пути к аудиофайлу. Затем вам нужно указать типы признаков колонок непосредственно в YAML в заголовке README, например:

dataset_info:
  features:
  - name: audio
    dtype: audio
  - name: caption
    dtype: string

Обратите внимание, что формат Parquet рекомендуется для небольших аудиофайлов (<1 МБ на аудиофайл) и небольших групп строк (100 строк на группу строк, что используется в datasets для аудио). Для более крупных аудиофайлов рекомендуется использовать формат WebDataset или передавать исходные аудиофайлы (при необходимости вместе с файлами метаданных).

Update on GitHub