Python Train_使用隐马尔可夫模型进行音乐流派分类的Python实现

37d64f4d850cbe1b35c540655264112f.png

音乐类型分类一直是音乐信息检索领域研究的热点问题。在本教程中,我们将尝试使用隐马尔可夫模型对音乐类型进行分类,隐马尔可夫模型非常擅长对时间序列数据进行建模。由于音乐音频文件是时间序列信号,我们希望HMM能够满足我们的需求,给我们一个准确的分类。隐马尔可夫模型是表示观察序列的概率分布的模型。我们假设输出是由隐藏状态生成的。

数据集和特征

我们将使用Marsyas提供的机器学习数据集,这是一个名为GTZAN的开源软件。它是每30秒长的1000个音轨的集合。代表10种类型,每种包含100个音轨。所有音轨都是.au格式的22050Hz单声道16位音频文件。在我们的教程中,我们将使用所有提供的类型(blues, classical, jazz, country, pop, rock, metal, disco, hip-hop, reggae)。对于音乐类型分类,我们将更容易使用WAV文件,因为它们可以通过scipy库轻松读取。因此,我们必须将AU文件转换为WAV格式。可以在此处(http://opihi.cs.uvic.ca/sound/genres.tar.gz)访问机器学习数据集。

对于音频处理,我们需要找到一种简洁地表示歌曲波形的方法。Mel频率倒谱系数(MFCC)是一种很好的方法。MFCC获取信号的功率谱(power spectrum),然后使用Filter banks和离散余弦变换的组合来提取特征。

让我们开始为我们的项目导入必要的Python库。

from python_speech_features import mfcc, logfbankfrom scipy.io import wavfileimport numpy as npimport matplotlib.pyplot as pltfrom hmmlearn import hmmfrom sklearn.metrics import confusion_matriximport itertoolsimport os
08468fa43550ef3d1bf1532a95ccd0cd.png

让我们从机器学习数据集中选择一首歌并提取MFCC和Filter banks 特征。

sampling_freq, audio = wavfile.read("genres/blues/blues.00000.wav")mfcc_features = mfcc(audio, sampling_freq)filterbank_features = logfbank(audio, sampling_freq)
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值