Datasets documentation
Traiter les données audio
Traiter les données audio
Ce guide présente des méthodes spécifiques pour le traitement de jeux de données audio. Apprenez à :
- Rééchantillonner la fréquence d'échantillonnage.
- Utilisez map() avec les jeux de données audio.
Pour un guide sur la façon de traiter n'importe quel type de jeu de données, consultez le guide de processus général.
Cast
La fonction cast_column() sert à convertir une colonne vers une autre fonctionnalité à décoder. Lorsque vous utilisez cette fonction avec la fonctionnalité Audio, vous pouvez rééchantillonner le taux d'échantillonnage :
>>> from datasets import load_dataset, Audio
>>> dataset = load_dataset("PolyAI/minds14", "en-US", split="train")
>>> dataset = dataset.cast_column("audio", Audio(sampling_rate=16000))Les fichiers audio sont décodés et rééchantillonnés à la volée, de sorte que la prochaine fois que vous accédez à un exemple, le fichier audio est rééchantillonné à 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

Carte
La fonction map() permet de prétraiter l’ensemble de votre jeu de données d’un coup. Selon le type de modèle avec lequel vous travaillez, vous devrez charger un extracteur de caractéristiques ou un processeur.
Pour les modèles de reconnaissance vocale pré-entraînés, chargez un extracteur de caractéristiques et un tokenizer, puis combinez-les dans 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)Pour les modèles de reconnaissance vocale affinés, vous n'avez besoin que de charger un
processor:>>> from transformers import AutoProcessor >>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-base-960h")
Lorsque vous utilisez map() avec votre fonction de prétraitement, incluez la colonne audio pour vous assurer de rééchantillonner réellement les données 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)