Hub documentation
Conjunto de Dados de Áudio
Conjunto de Dados de Áudio
Este guia mostrará como configurar seu repositório de dataset com arquivos de áudio. Você pode encontrar exemplos de repositórios acompanhantes nesta coleção de exemplos de datasets de áudio.
Um conjunto de dados com uma estrutura e formatos de arquivo suportados possui automaticamente um Visualizador de Conjunto de Dados em sua página no Hub.
Informações adicionais sobre seus arquivos de áudio - como transcrições - são carregadas automaticamente, desde que você inclua essas informações em um arquivo de metadados (metadata.csv/metadata.jsonl/metadata.parquet).
Alternativamente, os arquivos de áudio podem estar em arquivos Parquet ou em arquivos TAR seguindo o formato WebDataset.
Apenas arquivos de áudio
Se o seu conjunto de dados consiste apenas de uma coluna com áudio, você pode simplesmente armazenar seus arquivos de áudio na raiz:
my_dataset_repository/ ├── 1.wav ├── 2.wav ├── 3.wav └── 4.wav
ou em um subdiretório:
my_dataset_repository/
└── audio
├── 1.wav
├── 2.wav
├── 3.wav
└── 4.wavVários formatos são suportados simultaneamente, incluindo AIFF, FLAC, MP3, OGG e WAV.
my_dataset_repository/
└── audio
├── 1.aiff
├── 2.ogg
├── 3.mp3
└── 4.flacSe você tiver vários splits, pode colocar seus arquivos de áudio em diretórios nomeados de acordo:
my_dataset_repository/
├── train
│ ├── 1.wav
│ └── 2.wav
└── test
├── 3.wav
└── 4.wavVeja Nomes de arquivos e splits para mais informações e outras formas de organizar dados por splits.
Colunas adicionais
Se houver informações adicionais que você queira incluir sobre seu conjunto de dados, como a transcrição, adicione-as como um arquivo metadata.csv no seu repositório. Isso permite criar rapidamente conjuntos de dados para diferentes tarefas de áudio, como text-to-speech ou reconhecimento automático de fala.
my_dataset_repository/ ├── 1.wav ├── 2.wav ├── 3.wav ├── 4.wav └── metadata.csv
O seu arquivo metadata.csv deve ter uma coluna file_name que vincula os arquivos de imagem aos seus metadados:
file_name,animal
1.wav,cat
2.wav,cat
3.wav,dog
4.wav,dogVocê também pode usar um arquivo 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"}E para conjuntos de dados maiores ou se você estiver interessado em recursos avançados de recuperação de dados, pode usar um arquivo Parquet metadata.parquet.
Caminhos relativos
O arquivo de metadados deve estar localizado no mesmo diretório dos arquivos de áudio aos quais está vinculado, ou em qualquer diretório pai, como neste exemplo:
my_dataset_repository/
└── test
├── audio
│ ├── 1.wav
│ ├── 2.wav
│ ├── 3.wav
│ └── 4.wav
└── metadata.csvNeste caso, a coluna file_name deve ser um caminho relativo completo para os arquivos de áudio, não apenas o nome do arquivo:
file_name,animal
audio/1.wav,cat
audio/2.wav,cat
audio/3.wav,dog
audio/4.wav,dogArquivos de metadados não podem ser colocados em subdiretórios de um diretório com os arquivos de áudio.
De forma mais geral, qualquer coluna nomeada file_name ou *_file_name deve conter o caminho relativo completo para os arquivos de áudio.
Neste exemplo, o diretório test é usado para definir o nome do split de treinamento. Consulte Nomes de arquivos e splits para mais informações.
Classificação de áudio
Para conjuntos de dados de classificação de áudio, você também pode usar uma configuração simples: use diretórios para nomear as classes de áudio. Armazene seus arquivos de áudio em uma estrutura de diretórios como:
my_dataset_repository/
├── cat
│ ├── 1.wav
│ └── 2.wav
└── dog
├── 3.wav
└── 4.wavO dataset criado com essa estrutura contém duas colunas: audio e label (com os valores cat e dog).
Você também pode fornecer múltiplos splits. Para isso, o diretório do seu dataset deve ter a seguinte estrutura (veja Nomes de arquivos e splits para mais informações):
my_dataset_repository/
├── test
│ ├── cat
│ │ └── 2.wav
│ └── dog
│ └── 4.wav
└── train
├── cat
│ └── 1.wav
└── dog
└── 3.wavVocê pode desabilitar essa adição automática da coluna label na configuração YAML. Se os nomes dos seus diretórios não tiverem significado especial, defina drop_labels: true no cabeçalho do README:
configs:
- config_name: default # Name of the dataset subset, if applicable.
drop_labels: trueConjuntos de dados em larga escala
Formato WebDataset
O formato WebDataset é adequado para conjuntos de dados de áudio em larga escala (veja, por exemplo, AlienKevin/sbs_cantonese). Ele consiste em arquivos TAR contendo arquivos de áudio e seus metadados e é otimizado para streaming. É útil quando você possui um grande número de arquivos de áudio e deseja obter carregadores de dados em streaming para treinamento em larga escala.
my_dataset_repository/ ├── train-0000.tar ├── train-0001.tar ├── ... └── train-1023.tar
Para criar um arquivo TAR do WebDataset, crie um diretório contendo os arquivos de áudio e os arquivos de metadados a serem arquivados e crie o arquivo TAR usando, por exemplo, o comando tar.
O tamanho usual por arquivo é geralmente em torno de 1GB.
Certifique-se de que cada par de arquivo de áudio e metadados compartilhe o mesmo prefixo de arquivo, por exemplo:
train-0000/ ├── 000.flac ├── 000.json ├── 001.flac ├── 001.json ├── ... ├── 999.flac └── 999.json
Observe que, para a conveniência do usuário e para habilitar o Dataset Viewer, todo dataset hospedado no Hub é automaticamente convertido para o formato Parquet, até 5GB. Leia mais sobre isso na documentação do Parquet format.
Formato Parquet
Em vez de enviar os arquivos de áudio e os metadados como arquivos individuais, você pode incorporar tudo dentro de um arquivo Parquet. Isso é útil se você tiver um grande número de arquivos de áudio, se quiser incorporar várias colunas de áudio ou se quiser armazenar informações adicionais sobre o áudio no mesmo arquivo. O Parquet também é útil para armazenar dados como bytes brutos, que não são suportados por JSON/CSV.
my_dataset_repository/ └── train.parquet
Arquivos Parquet com dados de áudio podem ser criados usando pandas ou a biblioteca datasets. Para criar arquivos Parquet com dados de áudio no pandas, você pode usar pandas-audio-methods e df.to_parquet(). No datasets, você pode definir o tipo da coluna como Audio() e usar o método ds.to_parquet(...) ou ds.push_to_hub(...). Você pode encontrar um guia sobre o carregamento de conjuntos de dados de áudio no datasets aqui.
Como alternativa, você pode definir manualmente o tipo de áudio do Parquet criado usando outras ferramentas. Primeiro, verifique se suas colunas de áudio são do tipo struct, com um campo binário "bytes" para os dados de áudio e um campo de string "path" para o nome ou caminho do arquivo de áudio. Em seguida, você deve especificar os tipos de recurso das colunas diretamente no YAML no cabeçalho do README, por exemplo:
dataset_info:
features:
- name: audio
dtype: audio
- name: caption
dtype: stringObserve que o Parquet é recomendado para arquivos de áudio pequenos (<1MB por arquivo de áudio) e grupos de linhas pequenos (100 linhas por grupo de linhas, o que o datasets usa para áudio). Para arquivos de áudio maiores, recomenda-se usar o formato WebDataset ou compartilhar os arquivos de áudio originais (opcionalmente com arquivos de metadados).