我正在浏览一些关于在我的自定义数据集上微调 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 将数据处理到 训练模型期望的格式。为此,让我们利用 数据集的map(...)函数。首先,我们加载并重新采样音频 数据,只需调用batch[“audio”]即可。其次,我们提取 来自加载的音频文件的 input_values。在我们的例子中, Wav2Vec2Processor 仅对数据进行标准化。对于其他语音模型, 然而,此步骤可以包括更复杂的特征提取,例如 作为 Log-Mel 特征提取。第三,我们将转录编码为 标签 ID。
这是我几天来一直被困的部分。我已经尝试了所有方法但仍然无法继续。我能够将 Wav2Vec2 处理器生成的
input_values
更改为 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 特征提取?
我认为我的自定义数据集也遇到了同样的问题。您可以尝试本教程第[33]节中的prepare_dataset()函数。
我知道已经晚了,但是你解决问题了吗?教程好像说mfcc等方法适用于其他模型,而不是wav2vec2。