0

我正在浏览一些关于在我的自定义数据集上微调 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_valuesWav2Vec2 处理器生成的值更改为 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 特征提取?

4

1 回答 1

0

我想我的自定义数据集也有同样的问题。您可以尝试本教程第 [33] 节中的 prepare_dataset() 函数。

于 2022-01-16T09:44:35.380 回答