当前位置: 首页 > article >正文

【机器学习实战中阶】音乐流派分类-自动化分类不同音乐风格

在这里插入图片描述
音乐流派分类 – 自动化分类不同音乐风格

在本教程中,我们将开发一个深度学习项目,用于自动化地从音频文件中分类不同的音乐流派。我们将使用音频文件的频率域和时间域低级特征来分类这些音频文件。

对于这个项目,我们需要一个具有相似大小和相似频率范围的音频曲目数据集。GTZAN流派分类数据集是音乐流派分类项目中最推荐的数据集,并且它是为了这个任务而收集的。

音乐流派分类器模型
在这里插入图片描述

音乐流派分类
关于数据集:
GTZAN流派收藏数据集是在2000-2001年间收集的。它由1000个音频文件组成,每个文件持续30秒。有10个类(10种音乐流派),每个类包含100个音频曲目。每个曲目都是.wav格式。该数据集包含以下10种流派的音频文件:
在这里插入图片描述

蓝调
古典音乐
乡村音乐
迪斯科
嘻哈
爵士乐
金属
流行音乐
雷鬼
摇滚
音乐流派分类方法:
在这个数据集上有多种方法可以执行分类。其中一些方法包括:

多类别支持向量机
K-均值聚类
K近邻算法
卷积神经网络
我们将使用K近邻算法,因为在各种研究中,它已经为解决此问题显示出最佳的结果。

K-近邻算法是一种广泛用于回归和分类任务的机器学习算法。它基于相似度度量,即数据点之间的距离,来进行预测。

特征提取:
音乐流派分类项目的第一个步骤是从音频文件中提取特征和组成部分。这包括识别语言内容并丢弃噪声。

梅尔频率倒谱系数(MFCC):
这些是自动语音和语音识别研究中使用的一流特征。生成这些特征有一些步骤:

由于音频信号在不断变化,首先我们把这些信号分割成较小的帧。每个帧大约持续20-40毫秒。
然后我们尝试识别每帧中出现的不同频率。
现在,从噪声中分离出语言频率。
为了丢弃噪声,对这些频率进行离散余弦变换(DCT)。使用DCT,我们只保留有可能包含高信息量的具体频率序列。
构建音乐流派分类的步骤:
从以下链接下载GTZAN数据集:

GTZAN数据集

创建一个名为“music_genre.py”的新Python文件,并将下面步骤中的代码粘贴进去:

  1. 导入:
from python_speech_features import mfcc
import scipy.io.wavfile as wav
import numpy as np
from tempfile import TemporaryFile
import os
import pickle
import random 
import operator
import math
import numpy as np
  1. 定义一个函数以获取特征向量之间的距离并找到邻居:
def getNeighbors(trainingSet, instance, k):
    distances = []
    for x in range (len(trainingSet)):
        dist = distance(trainingSet[x], instance, k )+ distance(instance, trainingSet[x], k)
        distances.append((trainingSet[x][2], dist))
    distances.sort(key=operator.itemgetter(1))
    neighbors = []
    for x in range(k):
        neighbors.append(distances[x][0])
    return neighbors
  1. 识别最近的邻居:
def nearestClass(neighbors):
    classVote = {
   }
    for x in range(len(neighbors)):
        response = neighbors[x]
        if response in classVote:
            classVote[response]+=1 
        else:
            classVote[response]=1
    sorter = sorted(classVote

http://www.kler.cn/a/510167.html

相关文章:

  • 快速入门:如何注册并使用GPT
  • 力扣-数组-303 区域和检索-数组不可变
  • TiDB 和 MySQL 的关系:这两者到底有什么不同和联系?
  • QT 使用QTableView读取数据库数据,表格分页,跳转,导出,过滤功能
  • 快手极速版如何查找ip归属地?怎么关掉
  • SDL2基本的绘制流程与步骤
  • Springboot之错误端点/error
  • 两个关于TCP/IP的问题
  • 搜维尔科技:Xsens人形机器人解决方案的优势
  • dockerhub上一些镜像
  • Vue.js项目核心:深入解析App.vue的结构与作用
  • 【深度学习】自编码器(Autoencoder, AE)
  • PHP企业微信SCRM社群营销系统
  • 使用 Python 操作 MySQL 数据库
  • Linux链接
  • 2.3.1(项目)kv存储——框架梳理(待定)
  • 地址转坐标:利用高德API进行批量地理编码
  • C++(二十二)
  • 财务RPA就是财务机器人吗?有什么作用
  • 安装matlab2024a错误license checkout failed Error-8
  • MATLAB基础应用精讲-【数模应用】基于QPSK的调制和解调(附MATLAB代码实现)
  • 力扣动态规划-2【算法学习day.96】
  • 学习华为熵减模型:激发组织活力(系列之三)
  • PostgreSQL_安装部署
  • Golang——内存(内存管理、内存逃逸、垃圾回收 (GC) 机制)
  • 学生管理系统C++版(简单版)