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() используется для приведения столбца к другому признаку для декодирования. При использовании этой функции с признаком 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))

Аудиофайлы декодируются и ресемплируются на лету, поэтому при следующем обращении к примеру аудиофайл будет ресемплирован до 16 кГц:

>>> 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() позволяет предобработать весь набор данных за один раз. В зависимости от типа модели, с которой вы работаете, вам потребуется загрузить либо извлекатель признаков, либо процессор.

  • Для предобученных моделей распознавания речи загрузите извлекатель признаков и токенизатор и объедините их в 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