创建一个用于识别古典音乐作曲家的音频分类流水线

创建音频分类流水线识别古典音乐作曲家

逐步指南:构建基于音频的机器学习分类模型,用于多个顶级古典作曲家,并通过Hugging Face实现在线化

Stefany Andrade在Unsplash上的照片

对于训练人类从事经典音频的作者身份可能是一项容易的任务,但对于机器学习算法来说可能并非如此。

为了克服这个困难,我在这里详细介绍了如何构建自己的音频分类流程,并使用多个免费工具使其对公众可用,这些工具包括:

  • MusicNet数据集 – 由330个经过精心策划的、经过许可的(CC0:公共领域)标记的古典音乐录音组成;
  • Kaggle笔记本 – 一个流行的通用服务,例如提供免费的NVIDIA TESLA P100 GPU 供注册的Kaggle用户使用来训练机器学习模型;
  • Meta的wav2vec2-base-960h模型,约有9500万个可训练参数,预训练并在16kHz采样的语音音频的960小时上进行了微调,用于训练MusicNet的样本音频数据:
  • 最后,使用HuggingFace门户来训练、共享和提供机器学习模型。

所有选择数据、训练模型并将其发送到HuggingFace repo的端到端代码都可以在此处公开获取。下面,我将描述最重要的步骤。

多类别音频分类的数据选择和采样

在加载初始数据后,将其重新采样为16 kHz的速率,使用torchaudio库将其转换为NumPy数组,并在训练过程中进一步截断为100秒的样本,以进一步节省内存:

def get_transform_audio(file):    audio,rate = torchaudio.load(str(file))    transform = torchaudio.transforms.Resample(rate,RATE_HZ)    audio = transform(audio).squeeze(0).numpy()    return audio[:MAX_LENGTH] # 截断为音频的第一部分以节省内存dd['audio'] = dd['file'].progress_apply(get_transform_audio)