Datasets documentation
Criar um conjunto de dados de áudio
Criar um conjunto de dados de áudio
Você pode compartilhar um conjunto de dados com sua equipe ou com qualquer pessoa da comunidade criando um repositório de conjunto de dados no Hugging Face Hub:
from datasets import load_dataset
dataset = load_dataset("<username>/my_dataset")Existem vários métodos para criar e compartilhar um conjunto de dados de áudio:
Crie um conjunto de dados de áudio a partir de arquivos locais em python com Dataset.push_to_hub(). Esta é uma maneira fácil que requer apenas algumas etapas em python.
Crie um repositório de conjunto de dados de áudio com o builder
AudioFolder. Esta é uma solução sem código para criar rapidamente um conjunto de dados de áudio com vários milhares de arquivos de áudio.
Você pode controlar o acesso ao seu conjunto de dados exigindo que os usuários compartilhem primeiro suas informações de contato. Consulte o guia Conjuntos de dados com controle de acesso para mais informações sobre como habilitar esse recurso no Hub.
Arquivos locais
Você pode carregar seu próprio conjunto de dados usando os caminhos para seus arquivos de áudio. Use a função cast_column() para pegar uma coluna de caminhos de arquivos de áudio e convertê-la para o recurso 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>Em seguida, envie o conjunto de dados para o Hugging Face Hub usando Dataset.push_to_hub():
audio_dataset.push_to_hub("<username>/my_dataset")Isso criará um repositório de dataset contendo seu dataset de áudio:
my_dataset/
├── README.md
└── data/
└── train-00000-of-00001.parquetAudioFolder
O AudioFolder é um construtor de dataset projetado para carregar rapidamente um conjunto de dados de áudio com vários milhares de arquivos de áudio, sem exigir que você escreva qualquer código.
💡 Dê uma olhada na hierarquia de padrões de divisão para saber mais sobre como o
AudioFoldercria as divisões do conjunto de dados com base na estrutura do repositório do seu conjunto de dados.
AudioFolder infere automaticamente os rótulos de classe do seu conjunto de dados com base no nome do diretório. Armazene seu conjunto de dados em uma estrutura de diretórios como:
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.mp3Se o conjunto de dados seguir a estrutura AudioFolder, você pode carregá-lo diretamente com load_dataset():
>>> from datasets import load_dataset
>>> dataset = load_dataset("username/dataset_name")Isso é equivalente a passar audiofolder manualmente em load_dataset() e o diretório em data_dir:
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")Você também pode usar audiofolder para carregar conjuntos de dados que envolvem múltiplos splits. Para isso, o diretório do seu conjunto de dados deve ter a seguinte estrutura:
folder/train/dog/golden_retriever.mp3
folder/train/cat/maine_coon.mp3
folder/test/dog/german_shepherd.mp3
folder/test/cat/bengal.mp3Se todos os arquivos de áudio estiverem em um único diretório ou se não estiverem no mesmo nível da estrutura de diretórios, a coluna
labelnão será adicionada automaticamente. Se você precisar dela, definadrop_labels=Falseexplicitamente.
Se houver informações adicionais que você deseja incluir sobre seu conjunto de dados, como legendas de texto ou caixas delimitadoras, adicione-as como um arquivo metadata.csv na sua pasta. Isso permite criar rapidamente conjuntos de dados para diferentes tarefas de visão computacional, como legendagem de texto ou detecção de objetos. Você também pode usar um arquivo JSONL metadata.jsonl ou um arquivo Parquet metadata.parquet.
folder/train/metadata.csv
folder/train/0001.mp3
folder/train/0002.mp3
folder/train/0003.mp3Você também pode compactar seus arquivos de áudio em um arquivo zip, e, nesse caso, cada arquivo zip deve conter tanto os arquivos de áudio quanto os metadados
folder/train.zip
folder/test.zip
folder/validation.zipO arquivo metadata.csv deve ter um campo file_name ou *_file_name que vincule os arquivos de áudio aos seus metadados:
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 filesou 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"}Aqui, o file_name deve ser o nome do arquivo de áudio ao lado do arquivo de metadados. Mais geralmente, deve ser o caminho relativo do diretório que contém os metadados até o arquivo de áudio.
É possível apontar para mais de um áudio em cada linha do seu conjunto de dados, por exemplo, se tanto a sua entrada quanto a sua saída forem arquivos de áudio:
{"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"}Você também pode definir listas de arquivos de áudio. Nesse caso, é necessário nomear o campo file_names ou *_file_names. Aqui está um exemplo:
{"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
O formato WebDataset é baseado em arquivos TAR e é adequado para grandes conjuntos de dados de áudio. De fato, você pode agrupar seus arquivos de áudio em arquivos TAR (por exemplo, 1 GB de arquivos de áudio por arquivo TAR) e ter milhares de arquivos TAR:
folder/train/00000.tar
folder/train/00001.tar
folder/train/00002.tar
...Nos arquivos, cada exemplo é composto por arquivos que compartilham o mesmo prefixo:
e39871fd9fd74f55.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.mp3
f18b91585c4d3f3e.json
ede6e66b2fb59aab.mp3
ede6e66b2fb59aab.json
ed600d57fcee4f94.mp3
ed600d57fcee4f94.json
...Você pode colocar os rótulos/legendas/caixas delimitadoras dos seus arquivos de áudio usando, por exemplo, arquivos JSON ou de texto.
Carregue seu WebDataset e ele criará uma coluna para cada sufixo de arquivo (aqui, “mp3” e “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"}Também é possível ter vários arquivos de áudio por exemplo, como este:
e39871fd9fd74f55.input.mp3
e39871fd9fd74f55.output.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.input.mp3
f18b91585c4d3f3e.output.mp3
f18b91585c4d3f3e.json
...Para mais detalhes sobre o formato WebDataset e a biblioteca python, consulte a documentação do WebDataset.
Update on GitHub