Datasets documentation
معالجة بيانات الصوت
معالجة بيانات الصوت
يُظهر هذا الدليل طرقًا محددة لمعالجة مجموعات بيانات الصوت. تعلّم كيفية:
- إعادة أخذ عينات معدل أخذ العينات.
- استخدم 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))تُفكَّك ملفات الصوت وتُعاد عينةً لها على الفور، لذا في المرة التالية التي تصل فيها إلى مثال، تكون ملف الصوت قد أُعيدت عينته إلى 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() في معالجة مجموعة بياناتك بالكامل مسبقًا دفعة واحدة. اعتمادًا على نوع النموذج الذي تعمل عليه، ستحتاج إلى تحميل مستخرج ميزات أو معالج.
بالنسبة إلى نماذج التعرف على الكلام المُسبقة التدريب، حمّل مستخرج الميزات ومُقسّم الرموز وادمجها في
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)