Datasets documentation

Procesar datos de audio

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

Procesar datos de audio

Esta guía muestra métodos específicos para procesar conjuntos de datos de audio. Aprenda a:

  • Re-muestrear la tasa de muestreo.
  • Usa map() con conjuntos de datos de audio.

Para una guía sobre cómo procesar cualquier tipo de conjunto de datos, consulta la guía de proceso general.

Cast

La función cast_column() se utiliza para convertir una columna a otra característica para ser decodificada. Cuando se usa esta función con la característica Audio, se puede re-muestrear la tasa de muestreo:

>>> from datasets import load_dataset, Audio

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

Los archivos de audio se decodifican y re-muestrean al vuelo, por lo que la próxima vez que accedas a un ejemplo, el archivo de audio se re-muestreará a 16 kHz:

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

La función map() ayuda a preprocesar todo el conjunto de datos de una sola vez. Dependiendo del tipo de modelo con el que estés trabajando, necesitarás cargar un feature extractor o un processor.

  • Para los modelos de reconocimiento de voz preentrenados, cargue un extractor de características y un tokenizador y combínelos en un 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)
  • Para los modelos de reconocimiento de voz ajustados, solo necesitas cargar un processor:

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

Cuando uses map() con tu función de preprocesamiento, incluye la columna audio para asegurarte de que realmente estás muestreando de nuevo los datos de 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