Hub documentation

オーディオデータセット

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

オーディオデータセット

このガイドでは、オーディオファイルを含むデータセットリポジトリを設定する方法を示します。関連するリポジトリの例は、このAudio datasets examples collectionで確認できます。

サポートされている構造とファイル形式を持つデータセットは、Hub上のそのページに自動的にDataset Viewerが表示されます。


音声ファイルに関する追加情報(文字起こしなど)は、メタデータファイル(metadata.csv/metadata.jsonl/metadata.parquet)にこの情報を含める限り、自動的に読み込まれます。

代わりに、音声ファイルはWebDataset形式のParquetファイルやTARアーカイブに格納することもできます。

オーディオファイルのみ

データセットが音声の1列のみで構成されている場合、音声ファイルをルートに保存するだけです:

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

metadata.jsonl という 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)の2つのカラムが含まれます。

複数のスプリットを指定することもできます。その場合、データセットのディレクトリは以下の構造になっている必要があります(詳細はファイル名とスプリットを参照してください):

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

label列のこの自動追加は、YAML設定で無効にできます。ディレクトリ名に特別な意味がない場合は、READMEのヘッダーにdrop_labels: trueを設定してください。

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

WebDatasetのTARアーカイブを作成するには、アーカイブに含める音声ファイルとメタデータファイルを含むディレクトリを作成し、tarコマンドなどを使用してTARアーカイブを作成します。 1つのアーカイブあたりの一般的なサイズは約1GBです。 各音声ファイルとメタデータのペアが同じファイルプレフィックスを共有していることを確認してください。例:

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

ユーザーの利便性向上とDataset Viewerの有効化のため、Hubにホストされているすべてのデータセットは、5GBまで自動的にParquet形式に変換されることに注意してください。詳細はParquet formatのドキュメントを参照してください。

Parquet形式

オーディオファイルとメタデータを個別のファイルとしてアップロードする代わりに、すべてをParquetファイルに埋め込むことができます。 これは、オーディオファイルの数が非常に多い場合、複数のオーディオ列を埋め込みたい場合、またはオーディオに関する追加情報を同じファイルに保存したい場合に便利です。 Parquetは、JSON/CSVではサポートされていない生バイトなどのデータを保存するためにも役立ちます。

my_dataset_repository/
└── train.parquet

音声データを含む Parquet ファイルは、pandas または datasets ライブラリを使用して作成できます。pandas で音声データを含む Parquet ファイルを作成するには、pandas-audio-methods と df.to_parquet() を使用できます。datasets では、カラムの型を Audio() に設定し、ds.to_parquet(...) メソッドまたは ds.push_to_hub(...) を使用できます。datasets で音声データセットを読み込む方法については、こちらのガイドを参照してください。

代わりに、他のツールで作成したParquetのオーディオタイプを手動で設定することもできます。まず、オーディオカラムがstruct型であり、オーディオデータ用のバイナリフィールド"bytes"と、オーディオファイル名またはパス用の文字列フィールド"path"を持っていることを確認してください。その後、READMEヘッダーのYAML内で、カラムのフィーチャータイプを直接指定する必要があります。例:

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

Parquet形式は、小規模なオーディオファイル(1ファイルあたり1MB未満)および小規模な行グループ(行グループあたり100行、datasetsがオーディオに使用している設定)に適しています。より大きなオーディオファイルには、WebDataset形式を使用するか、元のオーディオファイル(必要に応じてメタデータファイル付き)を共有することをお勧めします。

Update on GitHub