Datasets documentation
Xử lý dữ liệu âm thanh
Xử lý dữ liệu âm thanh
Hướng dẫn này trình bày các phương pháp cụ thể để xử lý các bộ dữ liệu âm thanh. Học cách:
- Tái lấy mẫu tần số lấy mẫu.
- Sử dụng map() với các bộ dữ liệu âm thanh.
Để tìm hiểu cách xử lý bất kỳ loại bộ dữ liệu nào, hãy xem hướng dẫn quy trình chung.
Cast
Hàm cast_column() được dùng để chuyển đổi một cột sang một đặc trưng khác để giải mã. Khi bạn sử dụng hàm này với đặc trưng Audio, bạn có thể lấy lại mẫu (resample) tần số lấy mẫu:
>>> from datasets import load_dataset, Audio
>>> dataset = load_dataset("PolyAI/minds14", "en-US", split="train")
>>> dataset = dataset.cast_column("audio", Audio(sampling_rate=16000))Các tệp âm thanh được giải mã và lấy mẫu lại theo thời gian thực, vì vậy lần tiếp theo bạn truy cập một ví dụ, tệp âm thanh sẽ được lấy mẫu lại ở 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

Bản đồ
Hàm map() giúp tiền xử lý toàn bộ bộ dữ liệu của bạn một lúc. Tùy thuộc vào loại mô hình bạn đang làm việc, bạn sẽ cần tải một feature extractor hoặc một processor.
Đối với các mô hình nhận dạng giọng nói được huấn luyện trước, hãy tải một bộ trích xuất đặc trưng và một bộ phân từ, sau đó kết hợp chúng trong một
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)Đối với các mô hình nhận dạng giọng nói đã được tinh chỉnh, bạn chỉ cần tải một
processor:>>> from transformers import AutoProcessor >>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-base-960h")
Khi bạn sử dụng map() với hàm tiền xử lý của mình, hãy bao gồm cột audio để đảm bảo bạn thực sự đang lấy lại mẫu dữ liệu âm thanh:
>>> 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)