Datasets documentation

오디오 데이터 처리

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

and get access to the augmented documentation experience

to get started

오디오 데이터 처리

이 가이드에서는 오디오 데이터셋을 처리하는 구체적인 방법을 보여줍니다. 다음을 배워보세요:

  • 샘플링 레이트를 리샘플링합니다.
  • 오디오 데이터셋에 map()을 사용합니다.

모든 유형의 데이터셋을 처리하는 방법에 대한 가이드는 일반 처리 가이드를 참고하세요.

캐스팅

cast_column() 함수는 컬럼을 디코딩할 다른 feature로 캐스팅하는 데 사용됩니다. 이 함수를 Audio feature와 함께 사용하면 샘플링 레이트를 리샘플링할 수 있습니다:

>>> 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를 로드해야 합니다.

  • 사전 학습된 음성 인식 모델의 경우, feature extractor와 tokenizer를 로드하여 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")

audio 컬럼을 포함하여 map()을 전처리 함수와 함께 사용하면 오디오 데이터가 실제로 리샘플링되는지 확인할 수 있습니다:

>>> 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