2013年认证杯SPSSPRO杯数学建模B题(第一阶段)流行音乐发展简史全过程文档及程序

2013年认证杯SPSSPRO杯数学建模

B题 流行音乐发展简史

原题再现:

  随着互联网的发展,流行音乐的主要传播媒介从传统的电台和唱片逐渐过渡到网络下载和网络电台等。网络电台需要根据收听者的已知喜好,自动推荐并播放其它音乐。由于每个人喜好的音乐可能横跨若干种风格,区别甚大,需要分别对待。这就需要探讨如何区分音乐风格的问题。
  在流行音乐中,传统的风格概念包括 Pop(流行)、Country(乡村)、Jazz(爵士)、Rock(摇滚)、R&B(节奏布鲁斯)、New Age(新世纪)等若干大类,它们分别可以细分成许多小类,有些小类甚至可以做更进一步的细分。而每首歌曲只能靠人工赋予风格标签。这样的做法有许多不足:有的类别之间关系不清楚,造成混乱;有的类别过度粗略或精细;有的类别标签没有得到公认;有的音乐归属则存在争议或者难以划归。请你建立合理的数学模型,对流行音乐的风格给出一个自然、合理的分类方法,以便给网络电台的推荐功能和其它可能的用途1提供支持。

整体求解过程概述(摘要)

  由于社会文化的发展,流行音乐的风格日趋多元化,风格之间相互融合发展,造成类别混乱,难以划分,存在分类不当等诸多不足。本文采用循序渐进的方法对流行音乐的风格给出多模型优势互补的分类方法。
  模型一是基于标签的流行音乐风格分类模型。随着 Web日益健全完善,标签数据日益丰富且趋于稳定,标签所表达的语义信息要比描述文档中的关键词更接近被描述事物的特性,标签资源在音乐风格分类领域有着广阔的应用。模型通过 LDA 分析器对抽取的标签资源进行语料库建模,达到音乐风格分类的目的。
  模型二是基于语义的流行音乐风格分类模型。互联网上拥有海量的文本资源,当我们在网络上抓取数据的时候,如果一段流行音乐总与某个特定的流行音乐风格出现在一起,那么我们就认为此流行音乐与这个风格有着非常紧密的联系,从而我们就可以推断其风格,同时也能弥补某些类别标签不够准确、没有得到公认的缺点。
  模型三是基于 LDA 和多类 SVM的流行音乐风格分类模型。模型一和模型二都是在音乐文件具有大量相关数据的前提下具有较高分类准确率的,对于没有标签,数据较少的原创歌曲,体现了其局限性,此时需要提取底层的声学特征进行分类。这也是当前使用广泛且成熟的音频分类方法,本文通过对主流的特征提取及分类的算法进行改进,不但能取得最佳的分类精确率,而且也能实现最好的时间复杂度。
  模型四是基于分形维数的流行音乐风格分类模型。传统的基于声学特征的分类方法算法复杂,数据庞大,开销高,不具有深度推广的潜质,如何在准确率和开销之间做出权衡十分必要。基于分形维数的优势在于只用一维特征就能区分音乐的不同类型即分形刻画了音乐的内在特征——部分与整体的相似性。该方法具有应用简单,分类准确度较高,速度快等优点。
  没有一种模型能应对所有情况,只有扩大其优点,针对性解决,优势互补才能达到理想的分类效果,本文在模型的优化中将多种模型综合,提出了多模态音乐风格分类方法,使分类更加自然、合理、准确。

问题分析:

  伴随着数字技术的飞速发展,越来越多的音乐被上传到互联网上,正是这种海量的且不断增长的音乐资源使得用来处理音乐数据库的音乐信息检索(MIR)系统受到了越来越多的关注。网络用户更希望可以利用和音乐内容有关的信息来检索音乐。音乐的风格,例如蓝调(Blues)、摇滚(Rock)等就是经常被用户使用的检索词。目前,很多音乐网站例如 Last.fm,mp3.com 等都相继推出了基于风格的音乐检索系统。因此,音乐风格的准确分类对于现代音乐信息检索系统来说是至关重要的。
  音乐风格分类历经了人工化和自动化两个阶段。早期,绝大多数的音乐网站都是对音乐的风格进行人工标注,其中最著名的就是潘多拉网站(pandora.com)聘请音乐专家所进行的“音乐染色体工程(music genome project)”。虽然人工地对音乐进行风格标注取得了一定的成功,但是这样做消耗了大量的人力成本、时间成本和资金成本;而更为严重的问题是,人工标注的速度显然已经不能满足网络中音乐资源飞速增长的需求。

  基于标签数据的分类方法
  Web 时代的到来恰恰提供了这样的一个机遇。Web 技术允许网络用户使用标签对其感兴趣的资源进行个性化标注,这其中自然也包括音乐资源,文献通过实验证明了互联网中的标签数据的分布服从无标度网络的特征,在若干时间间隔后标签会趋于稳定,而且标签所表达的语义信息要比描述文档中的关键词更接近被描述事物的特性;文献通过大量的实验数据验证了用户对歌曲进行标注时使用的标签与音乐专家对音乐的评价具有高度的一致性。因此,标签资源在音乐风格的自动分类领域同样有着广阔的应用前景。在此提出了基于标签的音乐风格分类方法,使用 LDA 方法对由音乐标签组成的语料库进行建模。

  基于语义的分类方法
  模型一中存在标签信息的不明确,有的标签没有得到公认等问题,使其不具有普遍适用性。在此提出了基于语义音乐风格分类模型,使用音乐名称和艺术家姓名这些与音乐有关的语义信息,通过搜索网络资源,计算音乐与不同音乐风格之间的联系紧密度并以此为依据进行音乐的风格分类。

  基于声学特征的分类方法
  模型一和模型二都是在音乐文件具有大量相关数据的前提下具有较高分类准确率的,当音乐文件最初发布时,其相关数据相对而言较少,基于标签和语义的方法不再适用。此时需要提取音乐自身的声学特征,然后根据这些特征对音乐进行风格分类。在此提出了基于线性判别分析和支持向量机的音乐分类模型。

  基于分形的分类方法
  目前绝大多数音频分类算法集中在两方面——音频的特征提取以及根据音频特征进行分类。现有的音频特征算法有:短时过零率、时域的短时能量、谱质心分析、频域带宽等,还有基于听觉感受的 MFCC(Mel-frequency cepstral coefficients)梅尔倒频谱系数等。另一方面,分类算法可利用模式识别和模式分类中已知算法,如CMM(Gaussian mixture model) 高斯混合模型、NN(Neural Network) 神经网络、HMM(Hidden Markov Model) 隐马尔可夫模型等。这些方法都存在着算法复杂,数据庞大,高精度带来的高开销等问题。在此提出了基于分形维数的音乐分类模型,通过对不同风格音乐的分形维数的计算与比较,确定音乐分类的范围指标,然后利用此指标作为依据对音乐进行自动分类。由于维数为 1,所以此方法使用简单,速度较快,同时也具有较高的分类精度。

模型假设:

  当代流行音乐进入了高度细分化的时代,同时尚在继续细分更微观的类型。流行音乐电台细分市场的类型化方向正是来自流行音乐的细分化。对于流行音乐的分类目前尚无统一标准,我们使用目前认同度较高的分类标准,对流行音乐类型进行筛选合并后将流行音乐分为如下类型。
  1. Pop 流行(Dream-Pop, Classical Pop, Britpop, Synth Pop)
  2. R&B 节奏布鲁斯(Soul)
  3. Hip-Hop 饶舌(Trip-Hop, Brit-Hop)
  4. Rap 说唱(Gangsta Rap)
  5. Jazz 爵士(Bossa Nova)
  6. Rock 摇滚(Reggae,Punk)
  7. Electro 电子(Techno,House,Disco,Chill Out)
  8. Country 乡村
  9. Blue 蓝调
  10. Newage 新世纪

论文缩略图:

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

%%Feature_Extract.m
function [FileName,mean_value,variance]=Feature_Extract(FileName)
% [mean_value,variance]=Feature_Extract(FileName)
% FileName是需要分析的波形文件的路径
% mean_value是计算得出的特征值的平均值
% variance是计算得出的特征值的方差
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[F,Fs,NBITS] = wavread(FileName,20*44100);         % 读入波形数据
time = 20;                                         % 采样时间60秒
T = 1:time*Fs;                                       % 采样时间轴
Wave = F(T);                                         % 采样段数据
Wave = Wave/max(abs(Wave)); % 数据归一化处理
WLen = length(T); % 统计采样数据点的数量winlen = 2^nextpow2(Fs*20/1000); % 窗长为10ms~30ms,这里取20ms
dupwin = 2^nextpow2(Fs*5/1000); % 为保持连续性,窗口有重叠,重叠5ms
stepwin = winlen-dupwin; % 窗每次移动stepwin个采样点
E = zeros(WLen-stepwin,1); %` 初始化能量矩阵
for i = 1:stepwin:WLen-stepwin % 计算帧能量FExm = Wave(i:i+stepwin);E(i) = sum(xm.*xm);
end
E0 = [E zeros(length(E),1)]; % 为记录帧的位置准备,E0第一维是E,% 第二维是相应的位置
E0 = setxor(E0(:,1),0); % 删除末尾零记录
j=1;
for i = 1:length(E) % 记录帧的位置if E(i)>0E0(j,1)=E(i);E0(j,2)=i;j = j+1;end
end
Emin = min(E0(:,1)); % 计算帧能量的最小值
Emax = max(E0(:,1)); % 计算帧能量的最大值
Emean = mean(E0(:,1)); % 计算帧能量的平均值
lamda = 0.5; % 设定静音阈值
Ttfe = Emin + lamda * (Emean - Emin);for i = 1:length(E0(:,1)) % 屏蔽E0中对饮帧能量小于静音阈值的值if E0(i,1) < Ttfe E0(i,1) = 0;end
end
% 寻找特征片段
FER = ones(length(E0(:,1)),2); % 初始化帧能量比矩阵
for i = 1:(length(E0(:,1))-1) % 计算帧能量比if(and(E0(i,1),E0(i+1,1))) % 若当前帧与后一帧都不为零FERa = E0(i+1,1)/E0(i,1);FERb = E0(i,1)/E0(i+1,1);FER(i,1)=max(FERa,FERb);FER(i,2)=E0(i,2);end
end
level = mean(FER(:,1)); % 设定高潮端点阈值
result0 = zeros(length(FER(:,2)),1); % 初始化结果矩阵
j = 2;
if FER(1,1)-level >0result(1) = FER(1,2);
end              %过滤出高潮端点
for i = 2:length(FER(:,2))-1if FER(i,2)-level >0if FER(i-1,2)-level <0result0(j) = FER(i,2);j = j+1;endend
end
result0 = setxor(result0,0); % 删除多余的零元素
result = zeros(length(result0)-1,1);
for i = 1:length(result0)-1result(i) = result0(i+1)-result(i);
end
charaction = zeros(size(result));
for i = 1:length(result)-1charaction(i) = result(i+1)-result(i);
end
result = charaction;
FileName;                 %输出特征向量
u = mean(result);
d = var(result);
disp([FileName])
disp([ '均值:' num2str(u) '方差:' num2str(d)]);
mean_value = u; % 函数返回特征向量
variance = d;
end
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/291617.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言goto语句介绍

在C语言中&#xff0c;goto语句是一种流程控制语句&#xff0c;用于无条件地转移到程序中的特定标签位置。尽管goto语句在编程中具有一定的争议&#xff0c;但在某些情况下&#xff0c;它可以提供一种简单有效的解决方案。本文将深入介绍C语言中的goto语句&#xff0c;包括其基…

5个免费的3D钣金CAD软件

如果你正在设计简单的折叠钣金零件&#xff0c;则只需设计一些具有圆角半径的法兰&#xff1a;一个简单的钣金模块。 首先&#xff0c;你可以采用老式方式绘图并以 2D 方式完成所有操作。 许多传统制造商仍在使用 2D DWG 和 DXF 图纸。 因此&#xff0c;你很有可能只需快速起草…

18.8K星开源免费的跨平台密码管理器:KeePassXC

KeePassXC&#xff1a;您的跨平台密码守护神&#xff0c;安全存储&#xff0c;随心所欲&#xff0c;无论何处皆可信手拈来! - 精选真开源&#xff0c;释放新价值。 概览 当你面临一堆应用需要填写各种各样的密码的时候、当你需要记忆各种各样的密码或是需要保存保密文件或私密…

【win10 win11添加右键】git bash

打开注册表编辑器。 按下Win键 R&#xff0c;然后输入”regedit”并按下回车键来打开注册表编辑器。计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\git_bash\command2. 导航到注册表路径&#xff1a;依次展开”HKEY_CLASSES_ROOT\Directory\Background\shell”。右键…

怎样完成票据证件的关键信息抽取任务

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2024.03.30 Last edited: 2024.03.30 目录 怎样完成票据证件的关键信息抽取任务 基于深度学习的主流方法 关键信息抽取任务流程 训练OCR模型…

用 AI 编程-释放ChatGPT的力量

最近读了本书&#xff0c;是 Sean A Williams 写的&#xff0c;感觉上还是相当不错的。一本薄薄的英文书&#xff0c;还真是写的相当好。如果你想看&#xff0c;还找不到&#xff0c;可以考虑私信我吧。 ChatGPT for Coders Unlock the Power of AI with ChatGPT: A Comprehens…

软考104-上午题-【结构化开发】-系统结构设计原则

一、系统结构设计原则 为保证总体结构设计顺利完成&#xff0c;应遵循以下几条原则。 1、分解-协调原则。整个系统是一个整体&#xff0c;具有整体目的和功能&#xff0c;但这些目的和功能的实现又是由相互联系的各个组成部分共同工作的结果。 解决复杂问题的一个很重要的原…

你该选择哪个职业呢?数据科学家、数据分析师和数据工程师

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

粉丝免费福利第一期-海浪型手机支架

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师&#xff0c;大模型&#xff0c;爬虫、ACM算法 &#x1f492; 公众号&#xff…

配置Web运行环境与第一个网页

目录 安装与配置Web环境: 1.下载 2.安装 3.下载插件 第一个网页: 安装与配置Web环境: 如下使用了VSC作为web的运行环境。 下面是VSC的官网点击进入:Download Visual Studio Code - Mac, Linux, Windowshttps://code.visualstudio.com/download 1.下载 进入官网后可以看到…

SpringBoot整合腾讯云邮件发送服务非STMP

SpringBoot整合腾讯云邮箱服务 1、pom配置 <!-- 腾讯云邮箱服务--><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><!-- go to https://search.maven.org/search?qtencen…

11-设计模式:Go常用设计模式概述

设计模式是啥呢&#xff1f;简单来说&#xff0c;就是将软件开发中需要重复性解决的编码场景&#xff0c;按最佳实践的方式抽象成一个模型&#xff0c;模型描述的解决方法就是设计模式。使用设计模式&#xff0c;可以使代码更易于理解&#xff0c;保证代码的重用性和可靠性。 …

动态规划之方格取数

方格取数 动态规划&#xff0c;数字三角形模型 题目链接 https://www.luogu.com.cn/problem/P1004 题目描述 解法一 O ( n 4 ) O(n^4) O(n4) #include<bits/stdc.h> using namespace std; int n, i, j, l, k, x, y, s; int d[55][55], f[55][55][55][55]; int main()…

nginx界面管理工具之nginxWebUI 搭建与使用

nginx界面管理工具之nginxWebUI 搭建与使用 一、nginxWebUI 1.nginx网页配置工具 官网地址: http://www.nginxwebui.cn 源码地址&#xff1a;https://git.chihiro.org.cn/chihiro/nginxWebUI 2.功能说明 本项目可以使用WebUI配置nginx的各项功能, 包括http协议转发, tcp协议…

CQ 社区版2.10.0 | 新增 SQL 审核、全新英文版上线…

三月中旬&#xff0c;我们预告了 CloudQuery 社区版即将上线的「SQL 审核」功能。现在&#xff0c;它来了&#xff01; 本次社区版 v2.10.0&#xff0c;除了 SQL 审核功能&#xff0c;我们还在手动授权、连接分组等模块做了新功能和优化。 新增功能 新增 SQL 审核功能 支持…

Linux编译器-gcc/g++/gdb使用

Linux编译器-gcc/g/gdb使用 一、背景知识二、 gcc如何完成2.1 预处理(进行宏替换)2.2 编译&#xff08;生成汇编&#xff09;2.3 汇编&#xff08;生成机器可识别代码&#xff09;2.4 连接&#xff08;生成可执行文件或库文件&#xff09; 三、函数库四、gcc选项五、gdb5.1 背景…

产品之美10| 小小提示词(hint),便于用户交互

最近AIGC功能火热&#xff0c;有文生图和图生图两种。当用户初次接触到文生图的时候&#xff0c;会有一刻停顿&#xff1a;我该怎用输入呢&#xff1f;这时候的hint就可以发挥作用了&#xff1a; 编辑框&#xff08;EditView)里面有可爱的小女孩&#xff0c;加风格卡通。用户看…

基于单片机的二维码LCD显示控制设计

**单片机设计介绍&#xff0c;基于单片机的二维码LCD显示控制设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的二维码LCD显示控制设计是一个集硬件、软件与通信于一体的综合性项目。此设计的主要目标是实现单片机…

【动手学深度学习-pytorch】 9.4 双向循环神经网络

在序列学习中&#xff0c;我们以往假设的目标是&#xff1a; 在给定观测的情况下 &#xff08;例如&#xff0c;在时间序列的上下文中或在语言模型的上下文中&#xff09;&#xff0c; 对下一个输出进行建模。 虽然这是一个典型情景&#xff0c;但不是唯一的。 还可能发生什么其…

【详细讲解yarn的安装和使用】

&#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…