Datasets documentation
Crear un conjunto de datos de audio
Crear un conjunto de datos de audio
Puedes compartir un conjunto de datos con tu equipo o con cualquier persona de la comunidad creando un repositorio de conjuntos de datos en el Hugging Face Hub:
from datasets import load_dataset
dataset = load_dataset("<username>/my_dataset")Existen varios métodos para crear y compartir un conjunto de datos de audio:
Crea un conjunto de datos de audio a partir de archivos locales en python con Dataset.push_to_hub(). Esta es una forma sencilla que requiere solo unos pocos pasos en python.
Cree un repositorio de conjunto de datos de audio con el constructor
AudioFolder. Esta es una solución sin código para crear rápidamente un conjunto de datos de audio con varios miles de archivos de audio.
Puedes controlar el acceso a tu conjunto de datos requiriendo que los usuarios compartan primero su información de contacto. Consulta la guía de Conjuntos de datos con acceso restringido para obtener más información sobre cómo habilitar esta función en el Hub.
Archivos locales
Puedes cargar tu propio conjunto de datos usando las rutas a tus archivos de audio. Utiliza la función cast_column() para tomar una columna de rutas de archivos de audio y convertirla en la característica 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"]
<datasets.features._torchcodec.AudioDecoder object at 0x11642b6a0>Luego, sube el conjunto de datos al Hugging Face Hub usando Dataset.push_to_hub():
audio_dataset.push_to_hub("<username>/my_dataset")Esto creará un repositorio de conjuntos de datos que contenga su conjunto de datos de audio:
my_dataset/
├── README.md
└── data/
└── train-00000-of-00001.parquetAudioFolder
El AudioFolder es un constructor de conjuntos de datos diseñado para cargar rápidamente un conjunto de datos de audio con varios miles de archivos de audio sin que tengas que escribir ningún código.
💡 Echa un vistazo a la Jerarquía del patrón Split para aprender más sobre cómo
AudioFoldercrea divisiones de datos basadas en la estructura de tu repositorio de datos.
AudioFolder infiere automáticamente las etiquetas de clase de tu conjunto de datos en función del nombre del directorio. Guarda tu conjunto de datos en una estructura de directorios como la siguiente:
folder/train/dog/golden_retriever.mp3
folder/train/dog/german_shepherd.mp3
folder/train/dog/chihuahua.mp3
folder/train/cat/maine_coon.mp3
folder/train/cat/bengal.mp3
folder/train/cat/birman.mp3Si el conjunto de datos sigue la estructura AudioFolder, puedes cargarlo directamente con load_dataset():
>>> from datasets import load_dataset
>>> dataset = load_dataset("username/dataset_name")Esto es equivalente a pasar audiofolder manualmente en load_dataset() y el directorio en data_dir:
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")También puede usar audiofolder para cargar conjuntos de datos que implican múltiples divisiones. Para ello, el directorio de su conjunto de datos debe tener la siguiente estructura:
folder/train/dog/golden_retriever.mp3
folder/train/cat/maine_coon.mp3
folder/test/dog/german_shepherd.mp3
folder/test/cat/bengal.mp3Si todos los archivos de audio están contenidos en un solo directorio o si no están en el mismo nivel de la estructura de directorios, la columna
labelno se añadirá automáticamente. Si la necesitas, establecedrop_labels=Falseexplícitamente.
Si hay información adicional que desees incluir sobre tu conjunto de datos, como descripciones de texto o cajas delimitadoras, añádela como un archivo metadata.csv en tu carpeta. Esto te permite crear rápidamente conjuntos de datos para diferentes tareas de visión por computadora, como la descripción de texto o la detección de objetos. También puedes usar un archivo JSONL metadata.jsonl o un archivo Parquet metadata.parquet.
folder/train/metadata.csv
folder/train/0001.mp3
folder/train/0002.mp3
folder/train/0003.mp3También puede comprimir sus archivos de audio en un archivo zip, y en este caso cada archivo zip debe contener tanto los archivos de audio como los metadatos
folder/train.zip
folder/test.zip
folder/validation.zipEl archivo metadata.csv debe tener un campo file_name o *_file_name que vincule los archivos de audio con sus metadatos:
file_name,additional_feature
0001.mp3,This is a first value of a text feature you added to your audio files
0002.mp3,This is a second value of a text feature you added to your audio files
0003.mp3,This is a third value of a text feature you added to your audio fileso usando metadata.jsonl:
{"file_name": "0001.mp3", "additional_feature": "This is a first value of a text feature you added to your audio files"}
{"file_name": "0002.mp3", "additional_feature": "This is a second value of a text feature you added to your audio files"}
{"file_name": "0003.mp3", "additional_feature": "This is a third value of a text feature you added to your audio files"}Aquí, file_name debe ser el nombre del archivo de audio situado junto al archivo de metadatos. De forma más general, debe ser la ruta relativa desde el directorio que contiene los metadatos hasta el archivo de audio.
Es posible apuntar a más de un audio en cada fila de su conjunto de datos, por ejemplo, si tanto la entrada como la salida son archivos de audio:
{"input_file_name": "0001.mp3", "output_file_name": "0001_output.mp3"}
{"input_file_name": "0002.mp3", "output_file_name": "0002_output.mp3"}
{"input_file_name": "0003.mp3", "output_file_name": "0003_output.mp3"}También puede definir listas de archivos de audio. En ese caso, debe nombrar el campo file_names o *_file_names. Aquí hay un ejemplo:
{"recordings_file_names": ["0001_r0.mp3", "0001_r1.mp3"], label: "same_person"}
{"recordings_file_names": ["0002_r0.mp3", "0002_r1.mp3"], label: "same_person"}
{"recordings_file_names": ["0003_r0.mp3", "0003_r1.mp3"], label: "different_person"}WebDataset
El formato WebDataset se basa en archivos TAR y es adecuado para grandes conjuntos de datos de audio. De hecho, puede agrupar sus archivos de audio en archivos TAR (por ejemplo, 1 GB de archivos de audio por archivo TAR) y tener miles de archivos TAR:
folder/train/00000.tar
folder/train/00001.tar
folder/train/00002.tar
...En los archivos, cada ejemplo está compuesto por archivos que comparten el mismo prefijo:
e39871fd9fd74f55.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.mp3
f18b91585c4d3f3e.json
ede6e66b2fb59aab.mp3
ede6e66b2fb59aab.json
ed600d57fcee4f94.mp3
ed600d57fcee4f94.json
...Puedes colocar las etiquetas/leyendas/cajas delimitadoras de tus archivos de audio en archivos JSON o de texto, por ejemplo.
Carga tu WebDataset y creará una columna por cada sufijo de archivo (aquí, “mp3” y “json”):
>>> from datasets import load_dataset
>>> dataset = load_dataset("webdataset", data_dir="/path/to/folder", split="train")
>>> dataset[0]["json"]
{"transcript": "Hello there !", "speaker": "Obi-Wan Kenobi"}También es posible tener varios archivos de audio por ejemplo, de esta manera:
e39871fd9fd74f55.input.mp3
e39871fd9fd74f55.output.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.input.mp3
f18b91585c4d3f3e.output.mp3
f18b91585c4d3f3e.json
...Para más detalles sobre el formato WebDataset y la biblioteca de python, consulte la documentación de WebDataset.
Update on GitHub