資料集文件
處理音訊資料
立即開始
教學課程
操作指南
總覽
一般用法
載入流程串流與 PyTorch 搭配使用與 TensorFlow 搭配使用與 NumPy 搭配使用與 JAX 搭配使用與 Pandas 搭配使用與 Polars 搭配使用與 PyArrow 搭配使用與 Spark 搭配使用快取管理雲端儲存搜尋索引命令列介面 (CLI)疑難排解
音訊 (Audio)
視覺
文字
表格式
資料集儲存庫
概念指南
參考
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
處理音訊資料
本指南介紹處理音訊資料集的具體方法。瞭解如何:
- 重新取樣採樣率。
- 在音訊資料集上使用 map()。
關於如何處理各類資料集的指南,請參考通用處理指南。
轉型 (Cast)
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))音訊檔案會在運行時(on-the-fly)進行解碼和重新取樣,因此下次您存取該範例時,音訊檔案將被重新取樣至 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)
map() 函式有助於一次預處理整個資料集。根據您所使用的模型類型,您需要載入 特徵提取器 (feature extractor) 或 處理器 (processor)。
對於預訓練的語音識別模型,請載入特徵提取器和分詞器 (tokenizer),並將它們整合在一個
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)