Datasets documentation

オーディオデータを処理する

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.2.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

オーディオデータを処理する

このガイドでは、オーディオデータセットを処理するための具体的な方法を示します。次のことを学びます:

  • サンプリングレートをリサンプリングします。
  • オーディオデータセットにmap()を使用します。

あらゆるタイプのデータセットを処理する方法に関するガイドについては、一般的な処理ガイドをご覧ください。

キャスト

cast_column() 関数は、カラムをデコード対象の別のフィーチャーにキャストするために使用されます。Audio フィーチャーと組み合わせてこの関数を使用すると、サンプリングレートをリサンプリングできます:

>>> from datasets import load_dataset, Audio

>>> dataset = load_dataset("PolyAI/minds14", "en-US", split="train")
>>> dataset = dataset.cast_column("audio", Audio(sampling_rate=16000))

オーディオファイルはオンザフライでデコードおよびリサンプリングされるため、次にサンプルにアクセスすると、オーディオファイルは16kHzにリサンプリングされます。

>>> audio = dataset[0]["audio"]
<datasets.features._torchcodec.AudioDecoder object at 0x11642b6a0>
>>> audio = audio_dataset[0]["audio"]
>>> samples = audio.get_all_samples()
>>> samples.data
tensor([[ 0.0000e+00,  0.0000e+00,  0.0000e+00,  ...,  2.3447e-06,
         -1.9127e-04, -5.3330e-05]]
>>> samples.sample_rate
16000

マップ

map() 関数を使用すると、データセット全体を一度に前処理できます。使用しているモデルの種類に応じて、feature extractor または processor を読み込む必要があります。

  • 事前学習済みの音声認識モデルでは、processorに特徴量抽出器とトークナイザーを組み合わせます:

    >>> from transformers import AutoTokenizer, AutoFeatureExtractor, AutoProcessor
    
    >>> model_checkpoint = "facebook/wav2vec2-large-xlsr-53"
    # after defining a vocab.json file you can instantiate a tokenizer object:
    >>> tokenizer = AutoTokenizer("./vocab.json", unk_token="[UNK]", pad_token="[PAD]", word_delimiter_token="|")
    >>> feature_extractor = AutoFeatureExtractor.from_pretrained(model_checkpoint)
    >>> processor = AutoProcessor.from_pretrained(feature_extractor=feature_extractor, tokenizer=tokenizer)
  • ファインチューニングされた音声認識モデルでは、processorを読み込むだけで十分です:

    >>> from transformers import AutoProcessor
    
    >>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-base-960h")

前処理関数にmap()を使用する際は、オーディオデータを実際にリサンプリングしていることを確認するために、audioカラムを含めてください:

>>> def prepare_dataset(batch):
...     audio = batch["audio"]
...     batch["input_values"] = processor(audio.get_all_samples().data, sampling_rate=audio["sampling_rate"]).input_values[0]
...     batch["input_length"] = len(batch["input_values"])
...     with processor.as_target_processor():
...         batch["labels"] = processor(batch["sentence"]).input_ids
...     return batch
>>> dataset = dataset.map(prepare_dataset, remove_columns=dataset.column_names)
Update on GitHub