CN103559309B - 一种基于gpu加速的音乐检索与推荐系统 - Google Patents
一种基于gpu加速的音乐检索与推荐系统 Download PDFInfo
- Publication number
- CN103559309B CN103559309B CN201310581486.8A CN201310581486A CN103559309B CN 103559309 B CN103559309 B CN 103559309B CN 201310581486 A CN201310581486 A CN 201310581486A CN 103559309 B CN103559309 B CN 103559309B
- Authority
- CN
- China
- Prior art keywords
- melody
- module
- gpu
- music
- storehouse
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/60—Information retrieval; Database structures therefor; File system structures therefor of audio data
- G06F16/63—Querying
- G06F16/632—Query formulation
- G06F16/634—Query by example, e.g. query by humming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/60—Information retrieval; Database structures therefor; File system structures therefor of audio data
- G06F16/68—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/683—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于GPU加速的音乐检索与推荐系统,它包括哼唱旋律提取模块、哼唱检索旋律库建立模块、GPU加速的旋律匹配模块、音乐推荐旋律库建立模块、GPU加速的旋律相似度计算模块和音乐推荐模块;在有数据到来时,整个音乐检索与推荐系统首先由哼唱旋律提取模块接收到该数据;在提取完输入文件的特征之后,数据将被交给旋律匹配模块,旋律匹配模块通过使用预定的旋律匹配算法与哼唱检索旋律库进行匹配,得到哼唱检索结果列表;列表随后将被交给音乐推荐模块,音乐推荐模块通过预定的规则与旋律相似度信息进行比较,最终得到音乐推荐结果列表。本发明模块化设计,具有良好的重用性和可扩展性,完善的后台旋律库,便于曲目的添加、删除等操作。
Description
技术领域
本发明涉及一种基于GPU加速的音乐检索与推荐系统。具体涉及对哼唱检索以及音乐推荐两大部分的GPU加速内容,属于计算机科学技术领域。
背景技术
基于内容的音频检索(Content-BasedAudioInformationRetrieval,CBAIR)是音乐检索领域未来的发展趋势,有别于传统的基于文本描述的分类和检索方式,基于内容的音乐检索利用音乐本身的特征对其进行自动分类,取代手工的文本描述,并采用哼唱的方法进行查询,更加符合音乐这种存在高度主观因素载体的查询工作。哼唱检索(QueryByHumming,QBH)就是基于内容的音乐检索中的一种主要使用的检索方式。音乐推荐作为基于内容的音乐检索的一个组成部分,在满足用户需求方面发挥着重要的作用。
基于内容的音乐检索目前主要存在的问题是用户体验方面的不足,由于检索时所使用的检索算法复杂度普遍较高,导致检索所需要的时间比较长,用户等待的时间也相应较长。在进行推荐的时候需要采用一定的音乐相似算法,目前的音乐相似算法存在着与音乐检索算法类似的问题——算法较为复杂,计算耗时长,不利于带来良好的用户体验。要加快算法的运行速度,首先可以采用的方法是通过对算法本身进行优化来降低算法的复杂度,但是这种方法是有局限的,任何一个算法的复杂度都是有下界的,不可能无限制的降低。另外还可以采用的方法就是采用并行的方式来对算法进行加速。
并行计算有多种方式,传统的并行计算是采用多CPU或者集群的方式来进行的,往往会涉及到多个处理器或者多个计算结点。最近几年产生了一种新的并行方式,那就是采用GPU(GraphicsProcessingUnit,图形处理器)来进行并行计算,GPU并行计算通过将应用程序中计算量繁重的部分交给GPU处理,程序的剩余部分依然在CPU上运行,从而可以实现更高的应用程序性能。CPU与GPU是一个强大的组合,在CPU中包含的是专为串行处理而优化的核心,而GPU则由数以千计更小、更节能的核心组成,这些核心针对并行处理而进行了优化,程序的串行部分在CPU上运行,而并行部分则在GPU上运行。
为了方便开发人员更好地使用GPU来进行并行计算,NVIDIA(英伟达)公司推出了CUDA,CUDA是统一计算架构(ComputeUnifiedDeviceArchitecture)的简称,它是由NVIDIA所推出的一种集成技术,是该公司对于GPGPU(General-PurposecomputingonGraphicsProcessingUnits,通用图形处理器)的正式名称,通过这个技术,开发人员就可以方便地使用NVIDIA的GPU进行并行计算。进行GPU编程时,在GPU上运行的函数有一个特定的名称——核函数,与CPU上的函数不同的是,核函数可以由多个GPU线程同时执行。
总而言之,现有的无论是哼唱检索系统还是音乐推荐系统都普遍存在着所使用的关键算法复杂度较高,系统运行效率较低的问题。
为了更好地进行本专利的阐述,这里首先介绍有关DTW(DynamicTimeWarping,动态时间规整)算法的基本概念与原理。
DTW算法的最终目标是要对两个时间序列和进行比较,这些序列可以是离散的信号,也可以是更一般的由相等的时间间隔采样出的特征序列,对于一个特定的特征空间则有 为了比较两个不同的特征我们需要定义一个度量距离的方法,定义函数
通常情况下,如果x和y彼此之间比较相似,那么c(x,y)就比较小,反之,c(x,y)就比较大。如果我们对序列X和Y中的每一个元素两两之间计算c(x,y)的值,就可以得到距离矩阵矩阵C的元素定义为C(n,m)=c(xn,ym)。DTW算法的目标就是要从距离矩阵中找出一条路径,使得序列X和Y沿此路径计算得到的距离最小。
弯曲路径的定义:
(N,M)-弯曲路径是一个序列p=(p1,p2,…,pL),其中pl=(nl,ml)∈[1:N]×[1:M](l∈[1:L]),并且满足下面三个条件:
(1)边界条件:p1=(1,1),pL=(N,M)
(2)单调性条件:n1≤n2≤…≤nL,m1≤m2≤…≤mL
(3)步长条件:pl+1-pl∈{(1,0),(0,1),(1,1)}(l∈[1:L-1])
若有序列X和Y之间的一个弯曲路径p,那么序列X和Y沿此路径的总距离cp(X,Y)就定义为
进一步来说,在序列X和Y之间的所有弯曲路径中,具有最小距离值的路径称作最优弯曲路径,记为p*,那么序列X和Y之间的DTW距离DTW(X,Y)就定义为沿p*的距离值
其中p是序列X和Y之间的一个(N,M)-弯曲路径;
为了计算最优弯曲路径p*,一个可能的方法是对序列X和Y之间的所有弯曲路径依次进行计算,但是这种计算方法的计算复杂度是指数级的,不具有实用性。下面介绍一种基于动态规划的方法,该方法具有复杂度O(NM),我们首先定义前缀序列X(1:n)=(x1,x2,…,xn)(n∈[1:N])和Y(1:m)=(y1,y2,…,ym)(m∈[1:M]),并且有
D(n,m)=DTW(X(1:n),Y(1:m))(4.4)
所有D(n,m)的值可以定义成一个N×M的矩阵D,也可以称作累积距离矩阵,显然,D(N,M)=DTW(X,Y)。在下面的描述中,一个元组(n,m)代表了距离矩阵C或者是累积距离矩阵D的一个矩阵输入,下面的定理给出了D的高效的计算方法。
定理:
累积距离矩阵D满足下列等式:
D(n,m)=min{D(n-1,m-1),D(n-1,m),D(n,m-1)}+c(xn,ym),(4.5)
1<n≤N,1<m≤M
特别的,DTW(X,Y)=D(N,M),并且可以在O(NM)次操作中完成计算。
这个定理可以帮助我们找到一种递归方法来计算矩阵D,初始化的操作可以通过为矩阵D添加额外的行列来完成,在形式上设定D(n,0)=∞(n∈[1:N]),D(0,m)=∞(m∈[1:M]),D(0,0)=0,那么式(4.5)的递归形式就可以适用于n∈[1:N]以及m∈[1:M]。注意到矩阵D可以采用列优先的形式进行计算,即计算第m列元素的值只需要第m-1列元素的值,也就是说如果我们只需要DTW(X,Y)=D(N,M)的值,那么所需要的存储空间是O(N),类似的,如果采用行优先的方式进行计算,那么所需要的存储空间是O(M),但是无论怎么计算,时间复杂度总是O(NM)。如果需要计算出最优弯曲路径p*,那么整个N×M的矩阵D都是需要保存的。
为了更好地进行本专利申请的阐述,下面介绍一种基于波动模型的音乐相似算法。
一种基于波动模型的音乐相似算法是由EliasPampalk于2006年在Computationalmodelsofmusicsimilarityandtheirapplicationinmusicinformationretrieval一文中提出,以下将这个算法简称为EP算法。
为了更好地进行本专利申请的阐述,下面介绍一种在特征提取过程中所使用的YIN算法。
YIN算法是由HidekiKawahara和AliandeCheveigne于2002年在YINafundmentalfrequencyestimatorforspeechandmusic一文中提出。
发明内容
1、目的:
本发明的目的是提供一种基于GPU加速的音乐检索与推荐系统。该系统主要有以下特征:(1)模块化的设计,具有良好的重用性和可扩展性,易于维护;(2)采用GPU进行关键步骤的计算,具有很高的计算效率;(3)完善的后台旋律库,便于曲目的添加、删除等操作。
2、技术方案:
为了实现上述系统所应具有的功能,本发明的技术方案是这样的:
图1首先展示了本系统整体的工作流程(先介绍系统本身,组成),当有一个哼唱输入之后,首先对该哼唱输入文件进行哼唱输入特征的提取,然后通过旋律匹配与事先建立好的哼唱检索旋律库进行匹配,得到哼唱检索的结果列表,进而通过音乐推荐与事先计算得到的音乐推荐旋律库相似度信息进行音乐推荐,得到最终的音乐推荐结果列表。
本系统接受来自用户的哼唱输入音频,在经过哼唱旋律提取之后,与哼唱检索旋律库中的信息进行旋律匹配,得到哼唱检索的结果,再将哼唱检索的结果与音乐推荐旋律库中的信息进行相似度计算,最终得到音乐推荐的结果。在整个过程中,哼唱检索旋律库与音乐推荐旋律库都是事先建立好的,音乐推荐旋律库的相似度计算也是事先计算好的,这三个过程虽然都需要单独的模块来完成,但是它们并不包含在音乐检索与推荐的实际过程之中。
本发明一种基于GPU加速的音乐检索与推荐系统,如图2所示,它主要包括六个模块:哼唱旋律提取模块、哼唱检索旋律库建立模块、GPU加速的旋律匹配模块、音乐推荐旋律库建立模块、GPU加速的旋律相似度计算模块和音乐推荐模块。
图2中也表示了这六个模块之间的关系:图中纵向较细的箭头表示模块之间的从属关系,横向较粗的箭头表示模块之间数据的流动关系。首先从横向的数据流动来看,在有数据到来时(在本系统中为用户的哼唱输入文件),整个音乐检索与推荐系统首先由哼唱旋律提取模块接收到该数据;在提取完输入文件的特征之后,数据将被交给GPU加速的旋律匹配模块,GPU加速的旋律匹配模块通过使用预定的旋律匹配算法与哼唱检索旋律库建立模块中的哼唱检索旋律库进行匹配,得到哼唱检索结果列表;列表随后将被交给音乐推荐模块,音乐推荐模块通过预定的规则与旋律相似度信息进行比较,最终得到音乐推荐结果列表。
从纵向的模块关系来看,哼唱旋律提取模块、GPU加速的旋律匹配模块以及音乐推荐模块都是音乐检索与推荐主程序的组成部分;GPU加速的旋律匹配模块在进行旋律匹配时需要用到哼唱检索旋律库建立模块所建立的哼唱检索旋律库;GPU加速的旋律相似度计算模块在计算出旋律相似度矩阵时需要用到音乐推荐旋律库建立模块所建立的音乐推荐旋律库,同时音乐推荐模块也需要使用旋律相似度计算模块计算出的旋律相似度矩阵来进行音乐推荐。
在本发明中,对于音乐检索与推荐系统的GPU加速工作,主要针对系统中的两个模块进行,一个是GPU加速的旋律匹配模块,一个是GPU加速的旋律相似度计算模块,这两个模块分别牵涉到系统中的两个重要也是核心的算法:哼唱检索算法(使用DTW算法)和音乐相似算法(使用EP算法)。
下面说明每个模块的组成与功能:
31哼唱旋律提取模块:
该模块的流程结构如图3所示;它负责对用户的哼唱输入进行哼唱旋律特征的提取,首先要经过预处理,预处理之后要进行哼唱旋律特征的提取,在本系统中采用的特征提取算法是YIN算法,其方法将在实施方式中具体介绍。
21哼唱检索旋律库建立模块:
该模块的流程结构如图4所示;它负责基于MIDI文件建立进行哼唱检索时所需要的哼唱检索旋律库。哼唱检索系统的旋律库是基于MIDI文件建立的,为了确保旋律库的准确性,本系统采用手动将主旋律放在第0音轨,并删除其他音轨的信息的方法。
32GPU加速的旋律匹配模块:
该模块的流程结构如图5所示;它负责对已经提取好特征的用户哼唱输入进行与哼唱检索旋律库中的旋律信息的匹配工作,采用的主要算法是DTW算法。在音乐检索与推荐系统当中,采用DTW算法作为哼唱检索中进行旋律匹配的匹配算法,同时采用GPU来对DTW算法进行加速,这样一方面可以保证旋律匹配的准确度,另一方面也通过GPU获得了较快的计算速度。
11音乐推荐旋律库建立模块:
该模块的流程结构如图6所示;它负责基于WAV格式的音频文件建立进行音乐推荐时所需要的音乐推荐旋律库,该模块中所使用的旋律库的构建方法将在实施方式中具体介绍。
22GPU加速的旋律相似度计算模块:
该模块的流程结构如图7所示;它负责对已经建立好的音乐推荐旋律库进行旋律相似度的计算,本系统采用EP算法作为进行音乐推荐时的音乐相似算法。在对音乐推荐进行GPU加速时,其基本思想是对音乐检索与推荐系统中的相似度计算过程进行GPU加速,将其编写为在GPU上运行计算,使用GPU加速的EP算法。本系统在对音乐推荐系统进行GPU加速时采用离线加速的方式,即GPU加速体现在旋律相似度矩阵计算这一离线操作上,在实际的音乐推荐中,由于只是读入事先计算好的矩阵,因而并没有GPU计算的部分。
33音乐推荐模块:
该模块的流程结构如图8所示;它负责根据用户哼唱检索得到的结果为用户进行音乐推荐,其推荐所采用的方法将在实施方式中具体介绍。
41音乐检索与推荐系统主程序:
该模块是整个音乐检索与推荐系统的主程序,它是用户实际可以运行的计算机程序。
3、优点及功效:
本发明一种基于GPU加速的音乐检索与推荐系统。与现有系统相比,其主要的优点有:(1)模块化的设计,具有良好的重用性和可扩展性,易于维护;(2)采用GPU进行关键步骤的计算,具有很高的计算效率;(3)完善的后台旋律库,便于曲目的添加、删除等操作。
附图说明
图1为音乐检索与推荐系统的运行流程图。
图2为基于GPU加速的音乐检索与推荐系统的整体架构图。
图3为哼唱旋律提取模块的流程结构图。
图4为哼唱检索旋律库建立模块的流程结构图。
图5为GPU加速的旋律匹配模块的流程结构图。
图6为音乐推荐旋律库建立模块的流程结构图。
图7为GPU加速的旋律相似度计算模块的流程结构图。
图8为音乐推荐模块的流程结构图。
图9为音乐检索与推荐系统一个具体哼唱输入的系统运行流程图。
具体实施方式
本发明一种基于GPU加速的音乐检索与推荐系统,如图2所示,它包括六个模块:哼唱旋律提取模块、哼唱检索旋律库建立模块、GPU加速的旋律匹配模块、音乐推荐旋律库建立模块、GPU加速的旋律相似度计算模块和音乐推荐模块。
图2中也表示了这六个模块之间的关系:图中纵向较细的箭头表示模块之间的从属关系,横向较粗的箭头表示模块之间数据的流动关系。首先从横向的数据流动来看,在有数据到来时(在本系统中为用户的哼唱输入文件),整个音乐检索与推荐系统首先由哼唱旋律提取模块接收到该数据;在提取完输入文件的特征之后,数据将被交给GPU加速的旋律匹配模块,GPU加速的旋律匹配模块通过使用预定的旋律匹配算法与哼唱检索旋律库建立模块中的哼唱检索旋律库进行匹配,得到哼唱检索结果列表;列表随后将被交给音乐推荐模块,音乐推荐模块通过预定的规则与旋律相似度信息进行比较,最终得到音乐推荐结果列表。
从纵向的模块关系来看,哼唱旋律提取模块、旋律匹配模块以及音乐推荐模块都是音乐检索与推荐主程序的组成部分;GPU加速的旋律匹配模块在进行旋律匹配时需要用到哼唱检索旋律库建立模块所建立的哼唱检索旋律库;GPU加速的旋律相似度计算模块在计算出旋律相似度矩阵时需要用到音乐推荐旋律库建立模块所建立的音乐推荐旋律库,同时音乐推荐模块也需要使用旋律相似度计算模块计算出的旋律相似度矩阵来进行音乐推荐。
在本发明中,对于音乐检索与推荐系统的GPU加速工作,主要针对系统中的两个模块进行,一个是GPU加速的旋律匹配模块,一个是GPU加速的旋律相似度计算模块,这两个模块分别牵涉到系统中的两个重要也是核心的算法:哼唱检索算法(使用DTW算法)和音乐相似算法(使用EP算法)。
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明中每一模块的功能与实现再作进一步详细的说明:图1为音乐检索与推荐系统的运行流程图。
31哼唱旋律提取模块:
该模块的流程结构如图3所示;它负责对用户的哼唱输入进行哼唱旋律特征的提取,首先要经过预处理,预处理的一般流程方法将在实施方式中具体介绍。
音高特征是通过计算基频得到的,包括时域和频域两种方法,时域常用的方法有短时过零率法、自相关函数法和YIN算法,而频域方法一般都基于求出声音信号的频谱包络,分析其谐波,估计出基频。在本系统中采用的特征提取算法是YIN算法,其方法将在实施方式中具体介绍。
21哼唱检索旋律库建立模块:
该模块的流程结构如图4所示;它负责基于MIDI文件建立进行哼唱检索时所需要的哼唱检索旋律库。
哼唱检索系统的旋律库是基于MIDI文件建立的,通过分析MIDI文件的格式可以从MIDI文件中提取出音轨信息,音轨中包含音符、音符开始事件、音符结束事件等信息。为了确保旋律库的准确性,本系统采用手动将主旋律放在第0音轨,并删除其他音轨的信息的方法。
32GPU加速的旋律匹配模块:
该模块的流程结构如图5所示;它负责对已经提取好特征的用户哼唱输入进行与哼唱检索旋律库中的旋律信息的匹配工作,采用的主要算法是DTW算法,DTW算法是一种具备扩展和压缩能力的柔性模式匹配算法,它能够对存在全局或局部扩展、压缩或变形的模式进行匹配,从而解决时间矢量序列间的相似度量问题。该算法采用动态规划的思想对两个矢量序列进行非线性规整,对两序列相似之处进行匹配,以得到两个矢量序列之间的最短距离,两个矢量序列间的距离越小,则它们的相似度越大。
由于DTW算法能够有效地解决哼唱输入特征序列与数据库中歌曲特征序列长度不同而带来的不匹配问题,因此被广泛地应用于哼唱检索系统。但是,由于DTW算法采用动态规划技术来进行旋律的近似匹配,通过局部最优化原理计算出最佳路径的最小累计距离,因此,该算法的计算规模和时间开销较大。
在音乐检索与推荐系统当中,采用DTW算法作为哼唱检索中进行旋律匹配的匹配算法,同时采用GPU来对DTW算法进行加速,这样一方面可以保证旋律匹配的准确度,另一方面也通过GPU获得了较快的计算速度。
11音乐推荐旋律库建立模块:
该模块的流程结构如图6所示;它负责基于WAV格式的音频文件建立进行音乐推荐时所需要的音乐推荐旋律库,该模块中所使用的旋律库的构建方法将在实施方式中具体介绍。
22GPU加速的旋律相似度计算模块:
该模块的流程结构如图7所示;它负责对已经建立好的音乐推荐旋律库进行旋律相似度的计算,本系统采用EP算法作为进行音乐推荐时的音乐相似算法。
在对音乐推荐进行GPU加速时,其基本思想是对音乐检索与推荐系统中的相似度计算过程进行GPU加速,将其编写为在GPU上运行计算,使用GPU加速的EP算法。
在进行音乐推荐时,本系统不需要每次都对旋律相似度矩阵进行计算,对于一个特定的音乐推荐旋律库,事先采用EP算法计算出它的旋律相似度矩阵并保存在文件之中,这样,在进行音乐推荐时只需要读入矩阵就可以进行音乐推荐。这种离线计算的方法有显而易见的好处,那就是可以节省大量的计算时间,旋律相似度矩阵的计算是一个重复性的工作,只需要一次计算后面就可以反复使用结果。
如果旋律库发生变化,那么旋律相似度矩阵只需要进行相应的调整,而不用重新计算整个矩阵,模块中所使用的旋律库的调整方法将在实施方式中具体介绍。
通过旋律库的调整方法本系统可以很方便的在音乐推荐旋律库中添加与删除歌曲,在旋律库规模很大时,由于仅需要计算矩阵的变化部分,因此可以节省出重新计算整个矩阵的时间。
依照离线计算旋律相似度矩阵的思路,在对音乐推荐系统进行GPU加速时也采用离线加速的方式,即GPU加速体现在旋律相似度矩阵计算这一离线操作上,在实际的音乐推荐中,由于只是读入事先计算好的矩阵,因而并没有GPU计算的部分。
33音乐推荐模块:
该模块的流程结构如图8所示;它负责根据用户哼唱检索得到的结果为用户进行音乐推荐,其推荐所采用的方法将在实施方式中具体介绍。
41音乐检索与推荐系统主程序:
该模块是整个音乐检索与推荐系统的主程序,它是用户实际可以运行的计算机程序。
下面以一个具体的用户哼唱输入为例来说明本系统的工作流程:
(图例说明:图9中步骤编号的前两位代表图2中对应的模块,第三位数字代表该步骤对应的是模块中执行的第几步)
在音乐检索与推荐系统启动之后,经过的步骤流程为:
311读入用户的哼唱输入文件:该步骤从磁盘上读取一个录制好的用户哼唱输入文件A,等待后面步骤的处理与计算;
312对输入文件进行预处理:该步骤对A文件进行预处理,预处理需要经过下面的步骤:
步骤S3111:读入WAV波形文件;
步骤S3112:将WAV文件转换为单声道信号;
步骤S3113:进行带通滤波,上下截止频率设置为fH<11025Hz,fL>50Hz;
步骤S3114:进行预加重,对频谱的高频部分加重。预加重数字滤波器为1阶滤波器:H(z)=1-μz-1,从而放大高频部分。μ的值接近1,这里取0.97。
步骤S3115:加汉宁窗,汉宁窗(Hanning)窗函数:
步骤S3116:根据能量谱进行滤波,计算每一帧的平均能量Mean(i),并计算所有帧的平均能量,帧能量小于平均能量的0.3的认为是无声帧,置零。
经过以上步骤得到A文件能谱滤波之后的信息B文件;
313使用YIN算法得到输入文件的特征:该步骤对B文件使用YIN算法提取出旋律特征的信息,需要经过下面的步骤:
步骤S3121:读取采样数据矩阵;
步骤S3122:实现帧间重叠,通过对数据移位半帧,使得下一帧起点在上一帧的二分之一处,突出帧间连续性;
步骤S3123:使用YIN算法输出各音帧音高。
经过以上步骤得到由B文件得到的各音帧音高信息C文件;
321拷贝特征文件以及旋律库到GPU:该步骤将C文件以及211步骤中的旋律库H拷贝到GPU的全局内存中;
322调用核函数进行旋律匹配计算:该步骤调用了GPU上的核函数函数,该函数通过使用GPU来进行哼唱检索中的旋律匹配计算,使用DTW算法;
323得到哼唱检索结果:该步骤通过322步骤中的旋律匹配计算得到用户哼唱输入的检索结果,保存为列表D;
331根据哼唱检索的结果进行音乐推荐:该步骤根据得到的列表D以及旋律库R采用一定的规则进行音乐推荐,进行音乐推荐时需要经过下面的步骤得到推荐结果:
步骤S3311:针对用户的一个哼唱输入进行哼唱检索得到结果之后,选取检索结果的前5名,这里从列表D中选取排名前5的结果;
步骤S3312:对于列表D中前5名的检索结果,分别找到它们在旋律相似度矩阵中对应的行(或列),并找出这些行(或列)中每一行(或列)除自身之外的最小的10个值并记录它们所对应的歌曲名称,这样一共可以得到50个值以及对应的歌曲名称;
步骤S3313:对步骤S3312中得到的50个值按照从小到大进行排序,对于歌曲名称相同的只保留最小的一个值;
步骤S3314:从步骤S3313得到的结果中选取值最小的10首歌曲作为推荐的结果返回。
332得到音乐推荐结果:该步骤根据331步骤中的音乐推荐得到用户哼唱搜索结果的音乐推荐结果,保存为列表F。
其中有些步骤流程不是每次进行音乐检索与推荐时都要进行,一般对于一个固定的旋律库只需要一次执行即可反复使用:
211计算完成的哼唱检索旋律库:该步骤通过一定的方法对一个基于MIDI文件的旋律库进行计算得到哼唱检索旋律库H;
111计算完成的音乐推荐旋律库:该步骤通过一定的方法构建一个基于WAV文件的音乐推荐旋律库R,方法需要进行的步骤为:
步骤S1111:为本系统哼唱检索旋律库中的各个歌曲寻找与之对应的WAV音频文件,将其包含在库中。由于进行哼唱检索时使用的库中文件格式为MIDI(MusicalInstrumentDigitalInterface,一种文件格式),而音乐推荐时使用的音乐相似算法进行相似度比较时使用的文件格式为WAV,因此需要人工为二者建立对应关系。使用音乐相似算法进行相似度计算时的输入为哼唱检索得到的结果,即从哼唱检索旋律库中得到的与用户哼唱的旋律最为相近的若干MIDI旋律所对应的WAV文件。
步骤S1112:寻找与哼唱检索旋律库中的歌曲曲风相似的旋律添加到库中,例如同一位歌手演唱的曲目,或是同为舒缓、激昂的旋律,可以达到的效果是进行音乐推荐时可以将这些曲风相似的旋律推荐出来。
221拷贝音乐推荐旋律库到GPU:该步骤将111步骤中得到的旋律库R拷贝到GPU的全局内存中;
222调用核函数进行音乐相似度计算:该步骤调用了GPU上的核函数函数,该函数通过使用GPU来对音乐推荐旋律库R进行音乐相似度的计算,使用了EP算法。
如果音乐推荐旋律库发生了变化,则重新执行以下的步骤:
221拷贝音乐推荐旋律库到GPU:该步骤将111步骤中得到的旋律库R拷贝到GPU的全局内存中;
222调用核函数进行音乐相似度计算:该步骤调用了GPU上的核函数函数,该函数通过使用GPU来对音乐推荐旋律库R进行音乐相似度的计算,对旋律相似度矩阵进行修改,修改需要进行的步骤为:
步骤S2211:如果从旋律库中删除了歌曲,则需要将旋律相似度矩阵中删除歌曲对应的行以及列删除;
步骤S2212:如果向旋律库中添加了歌曲,则需要首先计算新添加的歌曲与旋律库中现有的每一首歌曲的相似度,这样可以得到一个行向量,然后将行向量添加到矩阵的最后一行之后,将行向量转置得到的列向量添加到矩阵的最后一列之后。
通过以上所有的步骤方法,我们就可以得到一个用户哼唱输入文件的完整的哼唱检索以及音乐推荐的结果。
最后所应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
Claims (1)
1.一种基于GPU加速的音乐检索与推荐系统,其特征在于:它包括哼唱旋律提取模块、哼唱检索旋律库建立模块、GPU加速的旋律匹配模块、音乐推荐旋律库建立模块、GPU加速的旋律相似度计算模块和音乐推荐模块;
在有数据到来时,整个音乐检索与推荐系统首先由哼唱旋律提取模块接收到该数据;在提取完输入文件的特征之后,数据将被交给GPU加速的旋律匹配模块,GPU加速的旋律匹配模块通过使用预定的旋律匹配算法与哼唱检索旋律库建立模块中的哼唱检索旋律库进行匹配,得到哼唱检索结果列表;列表随后将被交给音乐推荐模块,音乐推荐模块通过预定的规则与旋律相似度信息进行比较,最终得到音乐推荐结果列表;哼唱旋律提取模块、GPU加速的旋律匹配模块以及音乐推荐模块都是音乐检索与推荐主程序的组成部分;GPU加速的旋律匹配模块在进行旋律匹配时需要用到哼唱检索旋律库建立模块所建立的哼唱检索旋律库;GPU加速的旋律相似度计算模块在计算出旋律相似度矩阵时需要用到音乐推荐旋律库建立模块所建立的音乐推荐旋律库,同时音乐推荐模块也需要使用GPU加速的旋律相似度计算模块计算出的旋律相似度矩阵来进行音乐推荐;
所述哼唱旋律提取模块,它负责对用户的哼唱输入进行哼唱旋律特征的提取,首先要经过预处理,预处理之后要进行哼唱旋律特征的提取,在本系统中采用的特征提取算法是YIN算法;
所述哼唱检索旋律库建立模块,它负责基于MIDI文件建立进行哼唱检索时所需要的哼唱检索旋律库,哼唱检索系统的旋律库是基于MIDI文件建立的,为了确保旋律库的准确性,本系统采用手动将主旋律放在第0音轨,并删除其他音轨的信息的方法;
所述GPU加速的旋律匹配模块,它负责对已经提取好特征的用户哼唱输入进行与哼唱检索旋律库中的旋律信息的匹配工作,采用的算法是DTW算法;在音乐检索与推荐系统当中,采用DTW算法作为哼唱检索中进行旋律匹配的匹配算法,同时采用GPU来对DTW算法进行加速,这样一方面可以保证旋律匹配的准确度,另一方面也通过GPU获得了较快的计算速度;
所述音乐推荐旋律库建立模块,它负责基于WAV格式的音频文件建立进行音乐推荐时所需要的音乐推荐旋律库;
所述GPU加速的旋律相似度计算模块,它负责对已经建立好的音乐推荐旋律库进行旋律相似度的计算,本系统采用EP算法作为进行音乐推荐时的音乐相似算法;在对音乐推荐进行GPU加速时,是对音乐检索与推荐系统中的相似度计算过程进行GPU加速,将其编写为在GPU上运行计算,使用GPU加速的EP算法;本系统在对音乐推荐系统进行GPU加速时采用离线加速的方式,即GPU加速体现在旋律相似度矩阵计算这一离线操作上,在实际的音乐推荐中,由于只是读入事先计算好的矩阵,因而并没有GPU计算的部分;
所述音乐推荐模块,它负责根据用户哼唱检索得到的结果为用户进行音乐推荐。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310581486.8A CN103559309B (zh) | 2013-11-19 | 2013-11-19 | 一种基于gpu加速的音乐检索与推荐系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310581486.8A CN103559309B (zh) | 2013-11-19 | 2013-11-19 | 一种基于gpu加速的音乐检索与推荐系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103559309A CN103559309A (zh) | 2014-02-05 |
CN103559309B true CN103559309B (zh) | 2016-05-25 |
Family
ID=50013555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310581486.8A Active CN103559309B (zh) | 2013-11-19 | 2013-11-19 | 一种基于gpu加速的音乐检索与推荐系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103559309B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447016B (zh) * | 2014-08-18 | 2018-09-14 | 北大方正集团有限公司 | 一种组件的快速搜索及重用的办法 |
CN104750839B (zh) * | 2015-04-03 | 2019-02-15 | 魅族科技(中国)有限公司 | 一种数据推荐方法、终端及服务器 |
CN105930522B (zh) * | 2016-05-25 | 2019-04-30 | 北京小米移动软件有限公司 | 智能推荐音乐的方法、系统和装置 |
CN108257591A (zh) * | 2016-12-29 | 2018-07-06 | 北京酷我科技有限公司 | 一种音乐的识别方法及系统 |
CN106844528A (zh) * | 2016-12-29 | 2017-06-13 | 广州酷狗计算机科技有限公司 | 获取多媒体文件的方法和装置 |
CN110019957A (zh) * | 2017-12-27 | 2019-07-16 | 飞狐信息技术(天津)有限公司 | 一种视频推荐方法及装置 |
CN111368129A (zh) * | 2018-12-25 | 2020-07-03 | 天津大学青岛海洋技术研究院 | 基于深度神经网络的哼唱检索法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1978483A1 (en) * | 2007-04-04 | 2008-10-08 | Qualcomm Incorporated | Indexes of graphics processing objects in graphics processing unit commands |
CN102270214A (zh) * | 2010-06-03 | 2011-12-07 | 索尼公司 | 内容推荐系统、内容推荐设备和内容推荐方法 |
CN102521281A (zh) * | 2011-11-25 | 2012-06-27 | 北京师范大学 | 一种基于最长匹配子序列算法的哼唱计算机音乐检索方法 |
CN103324698A (zh) * | 2013-06-08 | 2013-09-25 | 北京航空航天大学 | 一种基于数据级并行gpu加速的大规模哼唱旋律匹配系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7827491B2 (en) * | 2006-05-12 | 2010-11-02 | Tran Bao Q | Systems and methods for video editing |
US7917784B2 (en) * | 2007-01-07 | 2011-03-29 | Apple Inc. | Methods and systems for power management in a data processing system |
-
2013
- 2013-11-19 CN CN201310581486.8A patent/CN103559309B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1978483A1 (en) * | 2007-04-04 | 2008-10-08 | Qualcomm Incorporated | Indexes of graphics processing objects in graphics processing unit commands |
CN102270214A (zh) * | 2010-06-03 | 2011-12-07 | 索尼公司 | 内容推荐系统、内容推荐设备和内容推荐方法 |
CN102521281A (zh) * | 2011-11-25 | 2012-06-27 | 北京师范大学 | 一种基于最长匹配子序列算法的哼唱计算机音乐检索方法 |
CN103324698A (zh) * | 2013-06-08 | 2013-09-25 | 北京航空航天大学 | 一种基于数据级并行gpu加速的大规模哼唱旋律匹配系统 |
Non-Patent Citations (1)
Title |
---|
基于内容的音乐检索系统研究;赵静;《中国优秀硕士论文全文数据库 信息科技辑》;20061231;I138-80 * |
Also Published As
Publication number | Publication date |
---|---|
CN103559309A (zh) | 2014-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103559309B (zh) | 一种基于gpu加速的音乐检索与推荐系统 | |
Foscarin et al. | ASAP: a dataset of aligned scores and performances for piano transcription | |
Typke | Music retrieval based on melodic similarity | |
CN102053998A (zh) | 一种利用声音方式检索歌曲的方法及系统装置 | |
KR20080054393A (ko) | 음악 분석 | |
CN103324698A (zh) | 一种基于数据级并行gpu加速的大规模哼唱旋律匹配系统 | |
Baggi et al. | Music navigation with symbols and layers: Toward content browsing with IEEE 1599 XML encoding | |
Birmingham et al. | Query by humming with the vocalsearch system | |
CN103559232A (zh) | 一种基于二分逼近动态时间归整匹配的音乐哼唱检索方法 | |
Chowdhuri | Phononet: multi-stage deep neural networks for raga identification in hindustani classical music | |
CN113178182A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
Herremans et al. | A multi-modal platform for semantic music analysis: visualizing audio-and score-based tension | |
CN105630831B (zh) | 哼唱检索方法及系统 | |
JP5516720B2 (ja) | カテゴリ生成プログラム、カテゴリ生成装置およびカテゴリ生成方法 | |
CN101488128B (zh) | 基于旋律印记的音乐搜索方法和系统 | |
Wenger et al. | Constrained example-based audio synthesis | |
Zhao | [Retracted] Tone Recognition Database of Electronic Pipe Organ Based on Artificial Intelligence | |
Moelants et al. | The problems and opportunities of content-based analysis and description of ethnic music | |
JP3934556B2 (ja) | 信号識別子の抽出方法及びその装置、信号識別子からデータベースを作成する方法及びその装置、及び、検索時間領域信号を参照する方法及びその装置 | |
Moelants et al. | Problems and opportunities of applying data-& audio-mining techniques to ethnic music | |
Wen et al. | Music main melody extraction by an interval pattern recognition algorithm | |
JP2010164825A (ja) | プレイリスト作成装置、楽曲再生装置、プレイリスト作成方法およびプレイリスト作成プログラム | |
JP2008257020A (ja) | メロディーの類似度算出方法及び類似度算出装置 | |
JP2012159717A (ja) | 楽曲データの変化点検出装置、楽曲データの変化点検出方法及び楽曲データの変化点検出プログラム | |
Sharma et al. | An efficient approach using LPFT for the karaoke formation of musical song |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210209 Address after: Room 203-204, building Y2, 112 liangxiu Road, Pudong New Area, Shanghai, 201203 Patentee after: SHANGHAI ZHIRUI ELECTRONIC TECHNOLOGY Co.,Ltd. Address before: 100191 No. 37, Haidian District, Beijing, Xueyuan Road Patentee before: BEIHANG University |