Hub documentation
Conjunto de datos de audio
Conjunto de datos de audio
Esta guía te mostrará cómo configurar tu repositorio de datos con archivos de audio. Puedes encontrar ejemplos de repositorios complementarios en esta colección de ejemplos de conjuntos de datos de audio.
Un conjunto de datos con una estructura y formatos de archivo admitidos tiene automáticamente un visor de conjuntos de datos en su página en el Hub.
La información adicional sobre tus archivos de audio, como las transcripciones, se carga automáticamente siempre que incluyas esta información en un archivo de metadatos (metadata.csv/metadata.jsonl/metadata.parquet).
Alternativamente, los archivos de audio pueden estar en archivos Parquet o en archivos TAR que sigan el formato WebDataset.
Solo archivos de audio
Si su conjunto de datos consta únicamente de una columna con audio, puede guardar sus archivos de audio directamente en la raíz:
my_dataset_repository/ ├── 1.wav ├── 2.wav ├── 3.wav └── 4.wav
o en un subdirectorio:
my_dataset_repository/
└── audio
├── 1.wav
├── 2.wav
├── 3.wav
└── 4.wavSe admiten varios formatos a la vez, incluidos AIFF, FLAC, MP3, OGG y WAV.
my_dataset_repository/
└── audio
├── 1.aiff
├── 2.ogg
├── 3.mp3
└── 4.flacSi tienes varios splits, puedes colocar tus archivos de audio en directorios con los nombres correspondientes:
my_dataset_repository/
├── train
│ ├── 1.wav
│ └── 2.wav
└── test
├── 3.wav
└── 4.wavConsulte Nombres de archivo y divisiones para obtener más información y otras formas de organizar los datos por divisiones.
Columnas adicionales
Si hay información adicional que desees incluir sobre tu conjunto de datos, como la transcripción, agrégala como un archivo metadata.csv en tu repositorio. Esto te permite crear rápidamente conjuntos de datos para diferentes tareas de audio, como text-to-speech o reconocimiento automático del habla.
my_dataset_repository/ ├── 1.wav ├── 2.wav ├── 3.wav ├── 4.wav └── metadata.csv
El archivo metadata.csv debe tener una columna file_name que vincule los archivos de imagen con sus metadatos:
file_name,animal
1.wav,cat
2.wav,cat
3.wav,dog
4.wav,dogTambién puedes usar un archivo 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"}Y para conjuntos de datos más grandes o si te interesan las funciones avanzadas de recuperación de datos, puedes usar un archivo Parquet metadata.parquet.
Rutas relativas
El archivo de metadatos debe estar ubicado en el mismo directorio que los archivos de audio a los que está vinculado, o en cualquier directorio padre, como en este ejemplo:
my_dataset_repository/
└── test
├── audio
│ ├── 1.wav
│ ├── 2.wav
│ ├── 3.wav
│ └── 4.wav
└── metadata.csvEn este caso, la columna file_name debe ser una ruta relativa completa a los archivos de audio, no solo el nombre del archivo:
file_name,animal
audio/1.wav,cat
audio/2.wav,cat
audio/3.wav,dog
audio/4.wav,dogLos archivos de metadatos no se pueden colocar en subdirectorios de un directorio con los archivos de audio.
Más en general, cualquier columna llamada file_name o *_file_name debe contener la ruta relativa completa a los archivos de audio.
En este ejemplo, el directorio test se utiliza para configurar el nombre del split de entrenamiento. Consulte Nombres de archivo y splits para obtener más información.
Clasificación de audio
Para conjuntos de datos de clasificación de audio, también puedes usar una configuración sencilla: usa directorios para nombrar las clases de audio. Guarda tus archivos de audio en una estructura de directorios como:
my_dataset_repository/
├── cat
│ ├── 1.wav
│ └── 2.wav
└── dog
├── 3.wav
└── 4.wavEl conjunto de datos creado con esta estructura contiene dos columnas: audio y label (con los valores cat y dog).
También puedes proporcionar varias divisiones. Para ello, el directorio de tu conjunto de datos debe tener la siguiente estructura (consulta Nombres de archivo y divisiones para obtener más información):
my_dataset_repository/
├── test
│ ├── cat
│ │ └── 2.wav
│ └── dog
│ └── 4.wav
└── train
├── cat
│ └── 1.wav
└── dog
└── 3.wavPuede desactivar esta adición automática de la columna label en la configuración YAML. Si los nombres de sus directorios no tienen un significado especial, establezca drop_labels: true en la cabecera del README:
configs:
- config_name: default # Name of the dataset subset, if applicable.
drop_labels: trueConjuntos de datos a gran escala
Formato WebDataset
El formato WebDataset es adecuado para conjuntos de datos de audio a gran escala (por ejemplo, AlienKevin/sbs_cantonese). Está compuesto por archivos TAR que contienen archivos de audio y sus metadatos, y está optimizado para la transmisión en streaming. Es útil si se dispone de un gran número de archivos de audio y para obtener cargadores de datos en streaming para el entrenamiento a gran escala.
my_dataset_repository/ ├── train-0000.tar ├── train-0001.tar ├── ... └── train-1023.tar
Para crear un archivo TAR de WebDataset, cree un directorio que contenga los archivos de audio y los archivos de metadatos que se van a archivar y cree el archivo TAR usando, por ejemplo, el comando tar.
El tamaño habitual por archivo suele ser de aproximadamente 1 GB.
Asegúrese de que cada par de archivo de audio y metadatos comparta el mismo prefijo de archivo, por ejemplo:
train-0000/ ├── 000.flac ├── 000.json ├── 001.flac ├── 001.json ├── ... ├── 999.flac └── 999.json
Tenga en cuenta que, por comodidad del usuario y para habilitar el Dataset Viewer, cada conjunto de datos alojado en el Hub se convierte automáticamente al formato Parquet hasta 5GB. Lea más al respecto en la documentación del formato Parquet.
Formato Parquet
En lugar de subir los archivos de audio y los metadatos como archivos individuales, puede incrustar todo dentro de un archivo Parquet. Esto es útil si tiene un gran número de archivos de audio, si desea incrustar varias columnas de audio o si desea almacenar información adicional sobre el audio en el mismo archivo. Parquet también es útil para almacenar datos como bytes crudos, que no son compatibles con JSON/CSV.
my_dataset_repository/ └── train.parquet
Los archivos Parquet con datos de audio se pueden crear usando pandas o la biblioteca datasets. Para crear archivos Parquet con datos de audio en pandas, puedes usar pandas-audio-methods y df.to_parquet(). En datasets, puedes establecer el tipo de columna como Audio() y usar el método ds.to_parquet(...) o ds.push_to_hub(...). Puedes encontrar una guía para cargar conjuntos de datos de audio en datasets aquí.
Alternativamente, puede establecer manualmente el tipo de audio de los Parquet creados con otras herramientas. Primero, asegúrese de que sus columnas de audio sean de tipo struct, con un campo binario "bytes" para los datos de audio y un campo de cadena "path" para el nombre o la ruta del archivo de audio. Luego, debe especificar los tipos de características de las columnas directamente en YAML en la cabecera del README, por ejemplo:
dataset_info:
features:
- name: audio
dtype: audio
- name: caption
dtype: stringTenga en cuenta que Parquet se recomienda para archivos de audio pequeños (<1MB por archivo de audio) y grupos de filas pequeños (100 filas por grupo de filas, que es lo que usa datasets para audio). Para archivos de audio más grandes, se recomienda usar el formato WebDataset o compartir los archivos de audio originales (opcionalmente con archivos de metadatos).