我正在浏览一些关于在我的自定义数据集上微调 Wav2Vec2 预训练模型的博客。以下是相同的资源。
https://colab.research.google.com/github/huggingface/notebooks/blob/master/examples/multi_lingual_speech_recognition.ipynb#scrollTo=GNFuvi26Yiw6
https://huggingface.co/blog/fine-tune-xlsr-wav2vec2
我是能够完成整个过程,结果也按预期生成。下面是他们提到我们可以使用其他特征提取方法(如 MFCC)的部分的摘录。
最后,我们可以利用 Wav2Vec2Processor 将数据处理为模型期望的格式进行训练。为此,让我们使用 Dataset 的 map(...) 函数。首先,我们通过调用 batch["audio"] 加载和重新采样音频数据。其次,我们从加载的音频文件中提取 input_values。在我们的例子中,Wav2Vec2Processor 只对数据进行规范化。然而,对于其他语音模型,此步骤可以包括更复杂的特征提取,例如 Log-Mel 特征提取。第三,我们将转录内容编码为标签 ID。
这是我自几天以来就被困住的部分。我已经尝试了所有方法,但仍然无法继续。我能够将input_values
Wav2Vec2 处理器生成的值更改为 MFCC 的值,如下面的代码所示,但仍然没有运气。
def prepare_dataset(batch):
audio = batch["audio"]
batch["input_values"] = processor(audio["array"], 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
通过将一维浮点数组的 Wav2Vec2Processor 更改input_values
为 MFCC 的系数一维浮点数组,我能够训练模型,但在评估步骤时,它给了我这个错误。
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-164-3435b262f1ae> in <module>()
----> 1 trainer.train()
<ipython-input-143-57d9e4596fb5> in <listcomp>(.0)
17 # split inputs and labels since they have to be of different lenghts and need
18 # different padding methods
---> 19 input_features = [{"input_values": feature["input_values"]} for feature in features]
20 label_features = [{"input_ids": feature["labels"]} for feature in features]
21
KeyError: 'input_values'
我应该如何继续使用带有 Wav2Vec2 预训练模型的 MFCC 特征提取?