Datasets documentation
Procesar datos de audio
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)