Datasets documentation
オーディオデータを読み込む
オーディオデータを読み込む
Audio機能を使用すると、オーディオデータセットを読み込むことができ、サンプルにアクセスする際にオーディオファイルが自動的にデコードおよびリサンプリングされます。
オーディオのデコードは、torchcodec Pythonパッケージに基づいており、その内部ではFFmpeg Cライブラリが使用されています。
インストール
オーディオデータセットを扱うには、audioの依存関係がインストールされている必要があります。インストール方法については、インストールガイドを参照してください。
ローカルファイル
オーディオファイルへのパスを指定して、独自のデータセットを読み込むことができます。cast_column()関数を使用して、オーディオファイルのパスの列を取得し、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>AudioFolder
AudioFolder データセットビルダーを使用してデータセットを読み込むこともできます。カスタムなデータローダーの記述が不要なため、数千の音声ファイルを含む音声データセットを素早く作成して読み込む場合に便利です。
メタデータ付きのAudioFolder
オーディオファイルとメタデータ情報をリンクするには、データセットにmetadata.csvファイルがあることを確認してください。データセットの構造は次のようになる可能性があります。
folder/train/metadata.csv
folder/train/first_audio_file.mp3
folder/train/second_audio_file.mp3
folder/train/third_audio_file.mp3metadata.csv ファイルには、音声ファイルとそのメタデータを関連付ける file_name 列が必要です。metadata.csv ファイルの例は次のようになります。
file_name,transcription first_audio_file.mp3,znowu się duch z ciałem zrośnie w młodocianej wstaniesz wiosnie i możesz skutkiem tych leków umierać wstawać wiek wieków dalej tam były przestrogi jak siekać głowę jak nogi second_audio_file.mp3,już u źwierzyńca podwojów król zasiada przy nim książęta i panowie rada a gdzie wzniosły krążył ganek rycerze obok kochanek król skinął palcem zaczęto igrzysko third_audio_file.mp3,pewnie kędyś w obłędzie ubite minęły szlaki zaczekajmy dzień jaki poślemy szukać wszędzie dziś jutro pewnie będzie posłali wszędzie sługi czekali dzień i drugi gdy nic nie doczekali z płaczem chcą jechać dali
AudioFolder はオーディオデータを読み込み、metadata.csv からのテキストを含む transcription 列を作成します:
>>> from datasets import load_dataset
>>> dataset = load_dataset("username/dataset_name")
>>> # OR locally:
>>> dataset = load_dataset("/path/to/folder")ローカルデータセットの場合、これはdata_dirにディレクトリを指定してaudiofolderを手動で渡すload_dataset()を呼び出すことと同等です:
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")メタデータは JSON Lines 形式でも指定できます。この場合、メタデータファイル名としてmetadata.jsonlを使用します。この形式は、ある列が複雑な値(例: float のリスト)を含む場合に、パースエラーを回避したり、複雑な値を文字列として読み込まれたりするのを防ぐのに役立ちます。
メタデータファイル内の情報を無視するには、load_dataset()でdrop_metadata=Trueを設定します:
>>> from datasets import load_dataset
>>> dataset = load_dataset("username/dataset_with_metadata", drop_metadata=True)メタデータファイルがない場合、AudioFolderはディレクトリ名からラベル名を自動的に推測します。
自動生成されたラベルを削除したい場合は、drop_labels=Trueを設定してください。
この場合、データセットにはオーディオカラムのみが含まれます。
>>> from datasets import load_dataset
>>> dataset = load_dataset("username/dataset_without_metadata", drop_labels=True)最後に、filters 引数を使用すると、ラベルまたはメタデータに対する条件に基づいて、データセットの一部のみを読み込むことができます。メタデータが Parquet 形式である場合、この形式は高速なフィルタリングを可能にするため、特に有用です。また、デフォルトではフィルタリングの前にデータセット全体がダウンロードされるため、streaming=True と組み合わせてこの引数を使用することをお勧めします。
>>> filters = [("label", "=", 0)]
>>> dataset = load_dataset("username/dataset_name", streaming=True, filters=filters)For more information about creating your own
AudioFolderdataset, take a look at the Create an audio dataset guide.
あらゆる種類のデータセットを読み込む方法については、一般的な読み込みガイドを参照してください。
オーディオのデコード
デフォルトでは、データセットを反復処理する際、音声ファイルはシーケンシャルに、AudioDecoderオブジェクトとしてデコードされます。
ただし、マルチスレッドデコーディングを使用することで、データセットを大幅に高速化できます。
>>> import os
>>> num_threads = num_threads = min(32, (os.cpu_count() or 1) + 4)
>>> dataset = dataset.decode(num_threads=num_threads)
>>> for example in dataset: # up to 20 times faster !
... ...num_threads を使用してマルチスレッドを有効にできます。これは、リモートデータストリーミングの高速化に特に役立ちます。
ただし、高速ディスク上のローカルデータの場合、num_threads=0 よりも遅くなる可能性があります。
NumPy配列としてデコードされた画像ではなく、パスやバイトにアクセスしたい場合は、デコードを無効にできます。
>>> dataset = dataset.decode(False)注: IterableDataset.decode() は現在、ストリーミングデータセットでのみ利用可能です。
Update on GitHub