Datasets documentation
处理音频数据
快速入门
教程
操作指南
概述
通用用法
加载流程流与 PyTorch 配合使用与 TensorFlow 配合使用与 NumPy 配合使用与 JAX 配合使用与 Pandas 配合使用与 Polars 配合使用与 PyArrow 配合使用与 Spark 配合使用缓存管理云存储搜索索引CLI故障排除
音频
视觉
3D
文本
表格数据
时间序列
Agent 评估
数据集仓库
概念指南
参考
You are viewing main version, which requires installation from source. If you'd like
regular pip install, checkout the latest stable version (v4.8.4).
处理音频数据
本指南介绍了处理音频数据集的具体方法。学习如何:
- 重新采样采样率。
- 在音频数据集上使用 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() 函数有助于一次性预处理整个数据集。根据您使用的模型类型,您需要加载一个 feature extractor 或一个 processor。
对于预训练的语音识别模型,加载一个特征提取器和分词器,并将它们组合成一个
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)