一种音乐情感识别方法及系统与流程

文档序号:20769437发布日期:2020-05-15 19:28阅读:349来源:国知局
一种音乐情感识别方法及系统与流程

本申请涉及数据处理技术领域,特别涉及一种音乐情感识别方法及系统。



背景技术:

通过计算机对音乐情感进行分类或者使计算机理解音乐的情感是一个难题,但它又是十分需要的技术。如果实现这个底层技术,可以改变很多互联网产品的形态,同时节约大量的人力物力成本。

现有的音乐分类方法通常是用神经网络训练已有的数据,从而得到分类模型实现音乐分类。这些训练出的模型在音乐风格分类上略有作用,在情感分类上几乎没有任何效果。因为这样的方法完全依赖于数据的质量,然而目前的音乐标签数据质量往往不高,从而使得情感分类的精度也不高。



技术实现要素:

本申请的目的在于提供一种音乐情感识别方法及系统,能够提高情感识别的精度。

为实现上述目的,本申请提供一种音乐情感识别方法,所述方法包括:

基于thayer理论模型,构建音乐情感分类模型,所述音乐情感分类模型中包括横坐标和纵坐标;其中,所述横坐标用于表征音乐的积极/消极程度,所述纵坐标用于表征音乐的能量;

获取歌词样本集合,并根据所述歌词样本集合构建情感词典,以及根据所述情感词典,计算待分析歌曲的情感分数,所述情感分数用于在所述音乐分类模型的横坐标上标识所述待分析歌曲的第一位置;

检测所述待分析歌曲的bpm值,并对检测出的bpm值进行校正,并通过校正后的bpm值在所述音乐分类模型的纵坐标上标识所述待分析歌曲的第二位置;

根据所述第一位置和所述第二位置,确定所述待分析歌曲在所述音乐情感分类模型中对应的目标情感,并将所述目标情感作为所述待分析歌曲识别出的音乐情感。

进一步地,根据所述歌词样本集合构建情感词典包括:

识别所述歌词样本集合中各个歌词的高频词汇,并为识别出的所述高频词汇进行情感标注,以为各个所述高频词汇设置各自的情感数值;

基于设置了情感数值的高频词汇,构建情感词典。

进一步地,计算待分析歌曲的情感分数包括:

识别所述待分析歌曲的歌词中的情感单元;其中,所述情感单元包括情感词汇和所述情感词汇的修饰词汇;

根据所述情感词典,计算各个所述情感单元的情感值,并根据计算得到的所述情感值,确定所述歌词中每个句子的情感得分;

统计表征积极情感的句子的总得分,并根据所述表征积极情感的句子的总得分和表征积极情感的句子的总数量,确定积极参数;以及统计表征消极情感的句子的总得分,并根据所述表征消极情感的句子的总得分和表征消极情感的句子的总数量,确定消极参数;

将所述积极参数和所述消极参数的和,作为所述待分析歌曲的情感分数。

进一步地,确定所述歌词中每个句子的情感得分包括:

将当前句子中各个情感单元的情感值之和,作为所述当前句子的情感得分。

进一步地,对检测出的bpm值进行校正包括:

获取歌曲样本集,并检测所述歌曲样本集中各个歌曲的bpm值,以根据统计出的所述bpm值确定bpm的常规区间;

判断所述待分析歌曲的bmp值是否处于所述常规区间内;若处于,不对所述待分析歌曲的bmp值进行校正;若不处于,将所述待分析歌曲的bmp值进行翻倍或者减半的校正。

进一步地,对检测出的bpm值进行校正包括:

统计所述待分析歌曲的歌词中每个字出现的平均速度,并判断所述平均速度与检测出的bpm值是否匹配;若匹配,不对所述待分析歌曲的bmp值进行校正;若不匹配,将所述待分析歌曲的bmp值进行翻倍或者减半的校正。

进一步地,在统计所述待分析歌曲的歌词中每个字出现的平均速度时,所述方法还包括:

识别每一句歌词的起止时间,并将识别出的起止时间之和作为歌词的总时长,以及采用标准差和四分位数对平均速度进行统计。

为实现上述目的,本申请还提供一种音乐情感识别系统,所述系统包括:

模型构建单元,用于基于thayer理论模型,构建音乐情感分类模型,所述音乐情感分类模型中包括横坐标和纵坐标;其中,所述横坐标用于表征音乐的积极/消极程度,所述纵坐标用于表征音乐的能量;

横坐标分析单元,用于获取歌词样本集合,并根据所述歌词样本集合构建情感词典,以及根据所述情感词典,计算待分析歌曲的情感分数,所述情感分数用于在所述音乐分类模型的横坐标上标识所述待分析歌曲的第一位置;

纵坐标分析单元,用于检测所述待分析歌曲的bpm值,并对检测出的bpm值进行校正,并通过校正后的bpm值在所述音乐分类模型的纵坐标上标识所述待分析歌曲的第二位置;

情感确定单元,用于根据所述第一位置和所述第二位置,确定所述待分析歌曲在所述音乐情感分类模型中对应的目标情感,并将所述目标情感作为所述待分析歌曲识别出的音乐情感。

进一步地,所述横坐标分析单元包括:

词汇识别模块,用于识别所述歌词样本集合中各个歌词的高频词汇,并为识别出的所述高频词汇进行情感标注,以为各个所述高频词汇设置各自的情感数值;

构建模块,用于基于设置了情感数值的高频词汇,构建情感词典。

进一步地,所述横坐标分析单元还包括:

情感单元识别模块,用于识别所述待分析歌曲的歌词中的情感单元;其中,所述情感单元包括情感词汇和所述情感词汇的修饰词汇;

情感得分计算模块,用于根据所述情感词典,计算各个所述情感单元的情感值,并根据计算得到的所述情感值,确定所述歌词中每个句子的情感得分;

参数确定模块,用于统计表征积极情感的句子的总得分,并根据所述表征积极情感的句子的总得分和表征积极情感的句子的总数量,确定积极参数;以及统计表征消极情感的句子的总得分,并根据所述表征消极情感的句子的总得分和表征消极情感的句子的总数量,确定消极参数;

情感分数确定模块,用于将所述积极参数和所述消极参数的和,作为所述待分析歌曲的情感分数。

由上可见,本发明提出的技术方案,通过对心理学的thayer理论模型进行修改,从而构建出适用于音乐情感分类的模型。该模型的横坐标可以表征音乐的积极/消极程度,纵坐标可以用于表征音乐的能量。在实际应用中,可以针对大量的音乐样本确定横坐标和纵坐标的数值。当需要对待分析歌曲的情感进行分类时,可以通过计算待分析歌曲的情感分数,确定出待分析歌曲在模型中横坐标上的第一位置,然后,可以根据歌曲的bpm值,确定出待分析歌曲在模型中纵坐标上的第二位置。这样,第一位置和第二位置交叉处的情感类型,便可以作为待分析歌曲的音乐情感。可见,通过这种方式能够快速、准确地识别出歌曲的音乐情感。

附图说明

图1为音乐情感识别方法的示意图;

图2为十种情感类型的示意图;

图3为精简后的六种情感类型的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施方式,都应当属于本申请保护的范围。

本申请提供一种音乐情感识别方法,请参阅图1,所述方法包括:

s1:基于thayer理论模型,构建音乐情感分类模型,所述音乐情感分类模型中包括横坐标和纵坐标;其中,所述横坐标用于表征音乐的积极/消极程度,所述纵坐标用于表征音乐的能量;

s2:获取歌词样本集合,并根据所述歌词样本集合构建情感词典,以及根据所述情感词典,计算待分析歌曲的情感分数,所述情感分数用于在所述音乐分类模型的横坐标上标识所述待分析歌曲的第一位置;

s3:检测所述待分析歌曲的bpm值,并对检测出的bpm值进行校正,并通过校正后的bpm值在所述音乐分类模型的纵坐标上标识所述待分析歌曲的第二位置;

s4:根据所述第一位置和所述第二位置,确定所述待分析歌曲在所述音乐情感分类模型中对应的目标情感,并将所述目标情感作为所述待分析歌曲识别出的音乐情感。

在一个实施方式中,根据所述歌词样本集合构建情感词典包括:

识别所述歌词样本集合中各个歌词的高频词汇,并为识别出的所述高频词汇进行情感标注,以为各个所述高频词汇设置各自的情感数值;

基于设置了情感数值的高频词汇,构建情感词典。

在一个实施方式中,计算待分析歌曲的情感分数包括:

识别所述待分析歌曲的歌词中的情感单元;其中,所述情感单元包括情感词汇和所述情感词汇的修饰词汇;

根据所述情感词典,计算各个所述情感单元的情感值,并根据计算得到的所述情感值,确定所述歌词中每个句子的情感得分;

统计表征积极情感的句子的总得分,并根据所述表征积极情感的句子的总得分和表征积极情感的句子的总数量,确定积极参数;以及统计表征消极情感的句子的总得分,并根据所述表征消极情感的句子的总得分和表征消极情感的句子的总数量,确定消极参数;

将所述积极参数和所述消极参数的和,作为所述待分析歌曲的情感分数。

在一个实施方式中,确定所述歌词中每个句子的情感得分包括:

将当前句子中各个情感单元的情感值之和,作为所述当前句子的情感得分。

在一个实施方式中,对检测出的bpm值进行校正包括:

获取歌曲样本集,并检测所述歌曲样本集中各个歌曲的bpm值,以根据统计出的所述bpm值确定bpm的常规区间;

判断所述待分析歌曲的bmp值是否处于所述常规区间内;若处于,不对所述待分析歌曲的bmp值进行校正;若不处于,将所述待分析歌曲的bmp值进行翻倍或者减半的校正。

在一个实施方式中,对检测出的bpm值进行校正包括:

统计所述待分析歌曲的歌词中每个字出现的平均速度,并判断所述平均速度与检测出的bpm值是否匹配;若匹配,不对所述待分析歌曲的bmp值进行校正;若不匹配,将所述待分析歌曲的bmp值进行翻倍或者减半的校正。

在一个实施方式中,在统计所述待分析歌曲的歌词中每个字出现的平均速度时,所述方法还包括:

识别每一句歌词的起止时间,并将识别出的起止时间之和作为歌词的总时长,以及采用标准差和四分位数对平均速度进行统计。

具体地,在一个应用场景中,通过音乐在时间上反应出的特征(如bpm(beatperminute,拍子数)、调性、音频能量)和音乐在歌词上反应出的特征,结合心理学上的thayer理论,提出了新的多模态音乐情感分析模型,以下简称为cyme模型。以下介绍这个模型的构建细则。

1、thayer理论与音乐情感

thayer二维情绪模型用来进行情绪划分,其纵坐标表示的是能量维度,从“low”(低)到“high”(高)变化呈现了主体的情绪活跃度;横坐标表示的是积极与消极程度,从“negative”(消极)到“positive”(积极)的变化映射到了模型的横轴上。根据这个理论,可以将人类一些基本情绪环绕对应在这个坐标系上,比如annoying(恼怒的)、excited(激动的)等等。在情感维度上基本沿用了这个心理学分类方法。

2、thayer坐标系的映射和分类优化

但是在实施过程中,发现这个坐标系里的情绪并不等价适用于音乐中的情感。比如annoying、angry、nervous、bored、sleepy、calm这几个情绪就极少出现在音乐中,常听、常唱的音乐中很少有表达annoying(恼怒)、angry(生气)等情绪的音乐,只有少数metal(金属乐)、blackmetal(黑金属)、hardrock(硬摇)等存在上述一些情绪,并且这些歌曲比较小众。发现了这个问题后,对thayer模型的分类进行了优化升级。通过大量的音乐分析和音乐标签聚类,划分了“励志和热情”、“积极和充满希望”、“欢乐”、“激情和high”、“抒情和感动“、“放松和迷幻”、“悲伤”、“低落”、“极端”、“其他”10个类别,大致如图2所示。

3、情感分类降维拆分与坐标迁移

thayer模型中的横坐标体现的是音乐的积极与消极。其实计算机算法从音频角度分析,很难得到歌曲的积极/消极程度,因为通常见到的mp3、wav等单轨音频是一个信息高度压缩后的音乐呈现方式。因此创造了从歌词文本角度结合音乐大小调的方式来分析歌曲的积极/消极程度。

从乐理角度来看,一般情况下,运用大调音阶所呈现的歌曲通常是积极向上的,小调则是消极忧郁的,所以检测音乐的大小调可以作为音乐的积极/消极程度的判断依据。另一方面,歌词和音乐是密不可分的,一首忧伤的歌曲的歌词也一定是阴郁婉转的,依据这个特征,只要从语言角度分析出歌词的积极/消极程度,就能很大程度上体现对应歌曲的横轴valence上的程度。

同样对于纵轴,也找到了一个映射关系。一般情况下音乐的bpm和纵轴有很大关系,bpm较高的音乐在情感上的表现会更加“high”,相反低bpm的音乐会比较“low”。

总体上来说把音乐情感这个比较复杂的问题依据心理学模型和相关乐理知识拆解为两个一维向量,转换了原来高维的信息,使得可以用无监督的方法实现音乐情感分类。

3、从类别的横纵坐标属性精简分类

上一步横纵轴映射到具体的任务后,就可以通过简单模拟的方式来检验一下这个模型,同时细化情感分类的标准。通过对多首歌曲做了人工的bpm分析和情感分析,发现显示两个主要结果:1、bpm和音乐情感的关联是比较稳健的;2、之前假定的10个分类基本满足分类需求。至此,各种论证基本成熟,可以优化之前的十个分类为:“励志热情”、“欢愉”、“激情”、“抒情”、“平淡放松”、“悲伤”六大类,创建了最终的cyme模型,如图3所示。至此,的cyme模型创建完毕,接下来主要从如何利用该模型实现情感分类。

阶段二:横轴/歌词文本的情感处理

在横轴上主要通过歌词文本分析得出情感上的正负向评分。想要达到这个目标,就必须使计算机读懂这些歌词。目前在自然语言处理方面有很多关于常规白话语言、对话的处理工具和数据集。但是发现,歌词同写文章、日常对话的信息呈现方式有很大不同,歌词相对于后两者通常具有上下文缺乏联系,逻辑不够严密,句子简短凝练,情景跳跃等特点,整体上较常规文字的呈现方式更加天马行空。因此已有的自然语言处理方法不能直接套用在歌词处理上,需要构建自己的数据集和采用更加贴近歌词的处理方法。

1、数据集的构建:

在的歌词库中选择了多首歌曲,用分词工具进行中文分词,将一个句子进行切分,得到一个个单独的词,然后用停用词表筛选这些字和词。最终发现,在流行歌曲中,“爱”、“说”、“想”等词在两个部分的统计词频都是最高的,其它的高频词也有很多相似性。后续,可以筛选排名前频率大于100的3070个词进行情感标注,标注以情感正负向为依靠从-5(最消极)到5(最积极)打分,组成新的情感字典。然后和传统自然语言处理的情感字典合并,替换掉重复的高频词。这样构建的一个针对流行歌曲歌词的情感词典,并且有很高的泛用性。

2、情感单元:

情感单元是构成歌曲情感最基本的元素,每个情感单元由情感词及其修饰词构成。其中情感词来自情感词典,修饰词分为两类:否定词以及连接词。

否定词是对情感词表达情感的否定,它会反转情感词的极性,将积极的情感变消极,消极的情感变积极。常见的否定词有“不、别、没”等。比如“放弃”一词本身是消极情感词,而由否定词“不”修饰的情感单元“不放弃”就是积极的情感单元。

连接词是连接句子内各个成分的重要方式,在歌词中也会经常出现,比如“就算失望不能绝望”中的“就算、不能”连接词。在这里只考虑连接了情感词的连接词,如果连接词前后某一部分出现情感词而另一部分没有出现,就只考虑含有情感词的那一部分。连接词根据其种类的不同对情感词的影响也不同。这里主要考虑了表示转折关系和表示递进关系的这两类连接词。表示转折关系的连接词,如“虽然、但是”会反转前半部分的情感而加强后半部分的情感;表示递进关系的连接词,如“与其、不如”会减弱前半部分的情感而加强后半部分的情感。

情感单元的划分使用了基于句法的划分方式。使用了stanfordcorenlp的dependencyparsing开源工具,它可以得到句内各个实体之间的依存关系,借助这个工具来匹配修饰词和情感词。句子“几句是非也无法将我的热情冷却”中一共有一个修饰词“无法”以及两个情感词“热情”和“冷却”,通过句法分析工具可以看出修饰词“无法”和情感词“冷却”之间有依存关系而和情感词“热情”之间没有依存关系,因此最终可以得到两个情感单元“热情”和“无法冷却”。通过这种划分方式可以尽可能地从语义的角度划分各个情感单元,从而提升最终结果的质量。

3、歌曲情感得分:

首先找出每一句歌词句内的情感单元,然后将句内各个情感单元的分数相加就可以得到一句歌词的情感分数。

整首歌曲的情感分数不能将每句的得分简单相加,因为注意到一首歌的情感是有感情基调的即一首歌或者整体偏积极、或者整体偏消极,而每句的情感得分是不稳定的。如果一首歌情感得分为正的句子明显多于情感得分为负的句子,那可以认为这首歌整体传达的是积极的情感,这时就需要减少情感得分为负的句子对整体得分的影响。

最后整首歌曲的得分计算公式如下:

s=sp·np+sn·nn

其中s表示歌曲情感总得分,sp表示积极情感句子的总得分,np表示积极情感句子的数量,np表示消极情感句子的总得分,nn表示消极情感句子的数量。

阶段三:纵轴/歌曲的音频能量分析

对于歌曲的音频能量分析主要是提取歌曲的速度。对于音乐速度的提取采用开源音频处理库librosa中的librosa.beat.tempo函数。它可以输出一首歌的速度也就是bpm的值。然而在使用过程中发现了一个问题,即bpm的二倍差值问题,这个问题是bpm检测普遍存在的问题,其他的算法和软件都没有很好的解。

具体来说,bpm检测的算法是从一组可能成为这首歌bpm的数据中找出最可能是真实bpm的数据作为检测结果,所以可能会造成误差。但是根据计算机算法识别音乐节拍的特性,它的误差仅限于比真实速度快一倍或者慢一倍,一般不会出现其他更大的错误。举例说明就是当一首歌被检测出bpm是100的时候,这首歌的bpm可能是100,也可能是200或者50,计算机无法完全准确的计算出真实的bpm。

针对这个二倍误差问题采取了以下解决方法。

1、从音乐的角度对歌曲bpm进行研究分析,从中确定大部分歌曲的bpm阈值,这个阈值被锁定在40-140之间。也就是说如果原有方法计算出来的bpm不在这个范围内,就可以认为它很大概率是计算错误的。比如原方法计算出一首歌的bpm是180,那么正常情况下极少数歌曲能够有这么高的速度,尤其是流行歌曲,就认为这首歌真是的速度应该是180/2=90,这样可以过滤掉大部分错误计算。

2、从歌词的速度分析歌曲bpm的计算结果是否正常。的歌词文本中含有每个字的时间,所以可以统计一首歌词中每个字出现的平均速度,这个速度一定程度上反应了歌曲的速度,通俗说就是快歌里歌词行进速度也会比较快。其中有两个关键点:(1)、为了防止前奏、间奏等歌曲中没有人唱的部分(没有人唱就意味着没有歌词)加入平均会影响歌词的真实平均速度。只统计歌词有效部分,即将每一句的起止时间与总句数的乘积作为总时间,而不是一首歌的起止时间作为总时间。(2)为了防止部分音乐中插入的说唱(说唱语速较快)以及拖长音或者全音符(语速较慢)影响整首歌的速度基调,采用了标准差和四分位数进行处理,使得计算出来的歌词速度尽量和歌曲速度有一个很好的匹配。

阶段四:模型拟合

选取排行榜前200首的流行歌曲,对其进行人工情感标注,然后通过以上的方式计算横纵坐标,从而绘制出如图3所述的模型。

图3显示,六种不同的情感在坐标中呈现出聚类分布。后续可以通过支持向量机来拟合这个模型,得到不同情感的分类函数。结果显示拟合的模型和最初提出的cyme模型十分近似,验证了这个方法的可行性。至此,可以通过这个模型对任意一首歌进行情感分类。

本申请还提供一种音乐情感识别系统,所述系统包括:

模型构建单元,用于基于thayer理论模型,构建音乐情感分类模型,所述音乐情感分类模型中包括横坐标和纵坐标;其中,所述横坐标用于表征音乐的积极/消极程度,所述纵坐标用于表征音乐的能量;

横坐标分析单元,用于获取歌词样本集合,并根据所述歌词样本集合构建情感词典,以及根据所述情感词典,计算待分析歌曲的情感分数,所述情感分数用于在所述音乐分类模型的横坐标上标识所述待分析歌曲的第一位置;

纵坐标分析单元,用于检测所述待分析歌曲的bpm值,并对检测出的bpm值进行校正,并通过校正后的bpm值在所述音乐分类模型的纵坐标上标识所述待分析歌曲的第二位置;

情感确定单元,用于根据所述第一位置和所述第二位置,确定所述待分析歌曲在所述音乐情感分类模型中对应的目标情感,并将所述目标情感作为所述待分析歌曲识别出的音乐情感。

在一个实施方式中,所述横坐标分析单元包括:

词汇识别模块,用于识别所述歌词样本集合中各个歌词的高频词汇,并为识别出的所述高频词汇进行情感标注,以为各个所述高频词汇设置各自的情感数值;

构建模块,用于基于设置了情感数值的高频词汇,构建情感词典。

在一个实施方式中,所述横坐标分析单元还包括:

情感单元识别模块,用于识别所述待分析歌曲的歌词中的情感单元;其中,所述情感单元包括情感词汇和所述情感词汇的修饰词汇;

情感得分计算模块,用于根据所述情感词典,计算各个所述情感单元的情感值,并根据计算得到的所述情感值,确定所述歌词中每个句子的情感得分;

参数确定模块,用于统计表征积极情感的句子的总得分,并根据所述表征积极情感的句子的总得分和表征积极情感的句子的总数量,确定积极参数;以及统计表征消极情感的句子的总得分,并根据所述表征消极情感的句子的总得分和表征消极情感的句子的总数量,确定消极参数;

情感分数确定模块,用于将所述积极参数和所述消极参数的和,作为所述待分析歌曲的情感分数。

由上可见,本发明提出的技术方案,通过对心理学的thayer理论模型进行修改,从而构建出适用于音乐情感分类的模型。该模型的横坐标可以表征音乐的积极/消极程度,纵坐标可以用于表征音乐的能量。在实际应用中,可以针对大量的音乐样本确定横坐标和纵坐标的数值。当需要对待分析歌曲的情感进行分类时,可以通过计算待分析歌曲的情感分数,确定出待分析歌曲在模型中横坐标上的第一位置,然后,可以根据歌曲的bpm值,确定出待分析歌曲在模型中纵坐标上的第二位置。这样,第一位置和第二位置交叉处的情感类型,便可以作为待分析歌曲的音乐情感。可见,通过这种方式能够快速、准确地识别出歌曲的音乐情感。

上面对本申请的各种实施方式的描述以描述的目的提供给本领域技术人员。其不旨在是穷举的、或者不旨在将本发明限制于单个公开的实施方式。如上所述,本申请的各种替代和变化对于上述技术所属领域技术人员而言将是显而易见的。因此,虽然已经具体讨论了一些另选的实施方式,但是其它实施方式将是显而易见的,或者本领域技术人员相对容易得出。本申请旨在包括在此已经讨论过的本发明的所有替代、修改、和变化,以及落在上述申请的精神和范围内的其它实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1