创建一个用于识别古典音乐作曲家的音频分类流水线
创建音频分类流水线识别古典音乐作曲家
逐步指南:构建基于音频的机器学习分类模型,用于多个顶级古典作曲家,并通过Hugging Face实现在线化
对于训练人类从事经典音频的作者身份可能是一项容易的任务,但对于机器学习算法来说可能并非如此。
为了克服这个困难,我在这里详细介绍了如何构建自己的音频分类流程,并使用多个免费工具使其对公众可用,这些工具包括:
- 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)