CN103247286B - 一种基于gpu的多声部音乐旋律提取方法 - Google Patents
一种基于gpu的多声部音乐旋律提取方法 Download PDFInfo
- Publication number
- CN103247286B CN103247286B CN201310106172.2A CN201310106172A CN103247286B CN 103247286 B CN103247286 B CN 103247286B CN 201310106172 A CN201310106172 A CN 201310106172A CN 103247286 B CN103247286 B CN 103247286B
- Authority
- CN
- China
- Prior art keywords
- track
- pitch
- gpu
- melody
- music
- 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
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000000605 extraction Methods 0.000 claims abstract description 21
- 238000001228 spectrum Methods 0.000 claims abstract description 12
- 238000001514 detection method Methods 0.000 claims abstract description 8
- 238000012217 deletion Methods 0.000 claims abstract description 7
- 230000037430 deletion Effects 0.000 claims abstract description 7
- 238000001914 filtration Methods 0.000 claims description 17
- 230000009466 transformation Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 4
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 4
- 238000006243 chemical reaction Methods 0.000 abstract description 2
- 230000002596 correlated effect Effects 0.000 abstract 1
- 239000011295 pitch Substances 0.000 description 28
- 230000003595 spectral effect Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
Landscapes
- Auxiliary Devices For Music (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
本发明提出一种利用GPU对多声部音乐进行旋律提取的并行化方法,该方法有三大步骤:步骤一,在GPU上对音乐数据进行频谱变换和音高显著值计算;步骤二,在CPU上利用音高显著值构造音高轨迹,然后求取音高轨迹的相关特征,并利用这些特征进行语音检测;步骤三,对剩余的语音轨迹进行倍频删除和异常值删除,最终获得多声部音乐的旋律轨迹。本发明立足于多声部音乐,但是可以更好地应用在不含背景音的音乐和语音中。利用GPU进行旋律提取,将提取时间由秒级降到毫秒级,从而达到实时应用的标准。此外,它显著降低了提取所需要的硬件资源,同时提高了算法的开发进度,使该方法在商业应用和科学研究领域均具有广泛地实用价值和应用前景。
Description
技术领域
本发明提出了一种音乐旋律提取的加速方法,具体涉及一种利用GPU对多声部音乐进行旋律提取的并行化方法。属于计算机科学的并行化应用领域。
背景技术
给定一首多声部音乐,旋律提取的任务是自动从中提取出音乐的旋律轨迹。现在最常用的旋律轨迹是音乐的基频(F0)序列。当前大部分算法都是基于显著值的,该类算法通过估计音高的显著值来构造旋律轨迹,算法的通用结构是:首先得到信号的频谱表示,然后利用频谱表示计算音高显著值的时频表示。显著值的波峰被看作旋律可能的F0候选值。最后,通过不同的波峰选择方法或者跟踪方法选择最终的F0。当前准确度最高的算法在求得了音高的显著值之后,会首先构造音高轨迹,然后通过音高轨迹的筛选来选择正确的轨迹。
多声部音频的特征提取算法可以应用在哼唱搜索(Query by Humming),歌手识别等领域;同时它还可以作为推测音乐语义的中间步骤,具有非常大的应用价值。由于背景音的影响,旋律提取算法的复杂度较高,运行较慢,不能实时地应用,这限制了其使用范围。缓慢的运行时间和庞大的测试库也导致算法测试和改进的困难,准确率与MIDI音乐的旋律提取相比低了很多。
当前解决的方法主要是依靠分布式计算来解决运行缓慢的问题,但是速度提升有限同时集群的搭建和维护都需要很高的费用。此外,也有人用FPGA来进行算法加速,但是此种方式编程极为复杂,开发周期过长,限制了其发展。
由于GPU出色的浮点运算能力、超大的内存带宽和相对较低的价格,以及相应编程语言的改进(CUDA),使GPU在通用计算领域发挥着越来越大的作用。通过算法的通用结构可以看出,算法的某些步骤具有很好的并行性,这启发我们可以通过对算法进行GPU并行化使其达到实时性要求。
发明内容
1、目的:
本发明的目的是利用GPU提供一种多声部音乐的旋律提取并行化方法。该方法首先在GPU上对多声部音乐进行频谱变换,并求取频谱峰值。然后利用频谱峰值计算音高的显著值,然后求取频率的显著值峰值,并将结果拷贝到CPU。最后在CPU空间通过显著值峰值构造音高轨迹,计算轨迹特征,对音高轨迹进行过滤获得最终的旋律轨迹。
2、技术方案:
本发明的技术方案是这样的:
如图1所示,本发明共包括三个步骤,其中第一个步骤在GPU上运行,第二个步骤在CPU上运行,第三个步骤的一个算法又移植到GPU上运行。具体的步骤如下:
(1)步骤S1:对音乐文件进行频谱变换,并求取音高显著值,具体的步骤又细分如下:
a)将音频文件由CPU空间拷贝到GPU空间,然后进行频谱变换;
b)对频谱变换的结果进行过滤,只保留较大的峰值;
c)利用上一步的结果求取音高的显著值,然后再求取显著值的峰值;
d)将音高的显著值峰值拷贝到CPU空间。
(2)步骤S2:利用显著值的峰值构造音高轨迹,然后求取每个轨迹的相关特征,并利用这些特征对轨迹进行语音检测;
(3)步骤S3:利用“旋律音高均值”对语音轨迹进行倍频删除和异常值删除,获得最终的旋律轨迹。
其中,步骤S1,每一个小的步骤都是分帧处理的,每一帧都获得一个结果,最后将每一帧的结果串成轨迹。在GPU上的并行化中,不同的block处理不同的帧,block内的线程再并行处理一帧内的数据。
其中,步骤S1的b,是利用最大峰值对频谱峰值进行过滤,低于最大峰值THRESHOLD的峰值将会被过滤掉。
其中,步骤S1的c,显著值的计算用音分单位(cent),这样可以提高计算精度,直到算法最后都将采用音分单位。最后的结果根据实际需要可以转换为Hz单位。频率和音分的转换公式如下:
我们总共计算480个不同的显著值,显著值的计算公式如下:
其中,Nh表示需要计算的谐波个数,在实际中取值为8。I表示FFT滤波之后剩余的频谱峰值个数。fi和ai表示候选基频的频率和振幅。g(b,h,fi)表示频率为fi、振幅为ai的候选基频对“箱子”b的第h个谐波的权重。权重函数为:
其中,表示谐波与“箱子”b的中心频率的半音程距离,α是谐波权重参数。非零的参数δ意味着每个FFT过滤之后的峰值不仅对一个箱子的显著值有贡献,对它周围的箱子也有贡献,这样可以量化过程中产生的误差。
其中,步骤S2,每个轨迹的特征包括:音高均值音高标准差轨迹平均显著值轨迹总显著值轨迹显著值标准差和长度(Cl)。然后利用乐器和语音在这些特征上分布的不同进行轨迹过滤。
其中,步骤S3,“旋律音高均值”的计算是利用每个时刻剩余的多个音高候选值进行加权平均,权值就是每个音高所在轨迹的显著值总和,这样可以使最终的准确率更高。
3、优点及功效:
本发明所提出的基于GPU的多声部音乐旋律提取算法,它与现有技术相比,其主要的优点是:(1)编程简单,只需要利用c语言的扩展语言CUDA就可以对GPU编程,入门和开发进度都比FPGA快。(2)加速比高,将串行情况下运行时间从秒级降到不足100ms,加速比接近100倍,使旋律提取算法可以实时应用。(3)性价比高,好GPU的价格也不过几千块钱,但是却可以取得非常高的加速比,这是集群***所不能比拟的。(4)在GPU上采用单精度浮点数运算,但是准确率与串行程序相比没有下降。(5)可以应用在大规模的库上进行快速测试,对参数进行调优。
附图说明
图1多声部音乐旋律提取的整体流程图
图2音乐数据在GPU上运行之前的调整图
图3“空间换时间”策略下的寻找峰值图
具体实施方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明的主要思想是利用GPU对多声部音乐的旋律提取进行加速,使其可以推广到很多实时应用中去。该算法不止适用于多声部音乐,对不含背景音的音乐或语音提取准确度更高。
下面以一实例进行说明,音乐片段采样率44.1kHz,长度21s,格式为wav。
首先在CPU空间中读取音乐文件,并分析获得文件的采样率和数据长度,然后传递到GPU空间开始进行旋律提取。在进行频谱变换之前需要先对数据进行调整使其适合在GPU上处理。数据调整的方式如图2,之前的音乐数据分帧处理会有重叠部分,这不利于GPU操作,将数据依赖性消除会显著提高加速比。为了提高频谱变换的分辨率,还需要对音乐数据进行补零操作。在我们的例子中,按照4倍的方式补零分辨率可以到达5Hz。
数据调整完之后,按照图1所示,进行旋律提取,包括以下步骤:
(1)步骤S1:对音乐文件进行频谱变换,并求取音高显著值:
a)频谱变换利用NVIDIA提供的CUFFT库完成,变换的结果为复数,需要转换成模。GPU的调度策略是:一个BLOCK中的所有线程去处理一帧数据,不同的BLOCK处理不同的音频帧,帧内则是每一个线程访问独立的数据;
b)在峰值过滤之前首先要求得所有的峰值,我们采用的方法是“空间换时间”方法,如图3所示,分配与原数组等长的新数组,然后将每个线程找到的峰值保存在该新数组与原数组下标对应的位置。然后利用规约方法获得每一帧中峰值的最大值,最后利用原子操作和最大峰值对每一帧的峰值进行过滤。在利用原子操作保存峰值的时候,可能会存在多个线程同时方法计数变量的问题,这会导致直接利用计数变量会访问冲突,我们利用CUDA提供的库函数返回值来访问正确的计数变量;
c)利用上一步的结果求取音高的显著值,在求取每一个频率的显著值时,频率之间没有依赖性,这非常适合与在GPU上并行实现。我们的方法还是让不同的block处理不同的帧,block内的每一个线程去求一个频率的显著值。由于上一步求得的频谱峰值会多次使用,所以为了加快访问速度,我们将频率峰值及其下标首先放在共享内存中。这样后面求取显著值就可以直接读取共享内存中的数据,由于每个线程访问的共享数据相同,所以不会存在bankconflict,从而显著提升了访问速度。然后利用和上一步相同的方式对显著值进行过滤;
d)将音高的显著值峰值拷贝到CPU空间。
(2)步骤S2:利用显著值的峰值构造音高轨迹,轨迹的构造就是将在时间上连续,然后频率相差很小的音高组合在一起,构成一个有起始和结束时间的音高轨迹。轨迹的构造在CPU上完成,采用的数据结构是链表。然后求取每个轨迹的相关特征,并利用这些特征对轨迹进行语音检测;
语音检测分为三个步骤:首先利用轨迹的音高标准差和长度(Cl)进行轨迹过滤,过滤掉同时Cl>10的轨迹;然后利用所有轨迹的显著值均值和标准差进行过滤,过滤公式为:ν被设为0.3;最后利用轨迹的音高均值差进行过滤,过滤公式为:ν被设为1.2。语音检测之后剩余的轨迹都可以认为是语音轨迹。
(3)步骤S3:利用“旋律音高均值”对语音轨迹进行倍频删除和异常值删除,获得最终的旋律轨迹。
“旋律音高均值”的计算依赖于平滑滤波器的使用,该滤波器运行时间较长,同时具有良好的并行性,所以我们将其在GPU上做运算。平滑滤波器的关键就是采用共享内存保存当前计算的临时和,然后采用规约方法将共享内存相加。由于BLOCK内每个线程访问的数据不一致,同时全局内存的数据长度不确定,所以不适合将全局内存中的数据放到共享内存中。
最后所应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
Claims (3)
1.一种基于GPU的对多声部音乐进行旋律提取的并行化方法,其特征在于:该方法具体步骤如下:
步骤一:在GPU上对音乐数据进行频谱变换和音高显著值计算;
步骤二:在CPU上利用音高显著值构造音高轨迹,然后求取音高轨迹的
相关特征,并利用这些特征进行语音检测;
语音检测分为三个步骤:首先利用轨迹的音高标准差和长度Cl进行轨迹过滤,过滤掉同时Cl>10的轨迹;然后利用所有轨迹的显著值均值和标准差进行过滤,过滤公式为:v被设为0.3;最后利用轨迹的音高均值和方差CσP进行过滤,过滤公式为:v被设为1.2;该语音检测之后剩余的轨迹都是语音轨迹,
步骤三:对所述语音轨迹进行倍频删除和异常值删除,最终获得多声部
音乐的旋律轨迹。
2.根据权利要求1所述的一种基于GPU的对多声部音乐进行旋律提取的并行化方法,其特征在于:步骤一所述的操作都在GPU上并行完成,是本方法的核心,基本的并行策略是不同的block处理不同的帧,一个block内的所有线程并行处理一帧内的数据。
3.根据权利要求1所述的一种基于GPU的对多声部音乐进行旋律提取的并行化方法,其特征在于:步骤二中所述的操作在CPU上完成,采用的数据结构是链表,要求取的轨迹特征是音高均值、音高标准差、轨迹平均显著值、轨迹总显著值、轨迹显著值标准差和长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310106172.2A CN103247286B (zh) | 2013-03-28 | 2013-03-28 | 一种基于gpu的多声部音乐旋律提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310106172.2A CN103247286B (zh) | 2013-03-28 | 2013-03-28 | 一种基于gpu的多声部音乐旋律提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103247286A CN103247286A (zh) | 2013-08-14 |
CN103247286B true CN103247286B (zh) | 2015-09-23 |
Family
ID=48926774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310106172.2A Active CN103247286B (zh) | 2013-03-28 | 2013-03-28 | 一种基于gpu的多声部音乐旋律提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103247286B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108257591A (zh) * | 2016-12-29 | 2018-07-06 | 北京酷我科技有限公司 | 一种音乐的识别方法及*** |
CN111223491B (zh) * | 2020-01-22 | 2022-11-15 | 深圳市倍轻松科技股份有限公司 | 一种提取音乐信号主旋律的方法、装置及终端设备 |
CN113066458B (zh) * | 2021-03-17 | 2024-07-09 | 平安科技(深圳)有限公司 | 基于类lisp链数据的旋律生成方法、装置、设备及存储介质 |
CN115550503B (zh) * | 2021-06-30 | 2024-04-23 | 华为技术有限公司 | 一种生成多种音效的方法、装置和终端设备、存储介质 |
CN115527514B (zh) * | 2022-09-30 | 2023-11-21 | 恩平市奥科电子科技有限公司 | 音乐大数据检索的专业声乐旋律特征提取方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916564A (zh) * | 2008-12-05 | 2010-12-15 | 索尼株式会社 | 信息处理装置、旋律线提取方法、低音线提取方法及程序 |
CN102521281A (zh) * | 2011-11-25 | 2012-06-27 | 北京师范大学 | 一种基于最长匹配子序列算法的哼唱计算机音乐检索方法 |
CN102984147A (zh) * | 2012-11-23 | 2013-03-20 | 上海吟隆信息科技有限公司 | 一种基于旋律识别的多媒体安全过滤方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484647B2 (en) * | 2009-07-24 | 2013-07-09 | Apple Inc. | Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU |
-
2013
- 2013-03-28 CN CN201310106172.2A patent/CN103247286B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916564A (zh) * | 2008-12-05 | 2010-12-15 | 索尼株式会社 | 信息处理装置、旋律线提取方法、低音线提取方法及程序 |
CN102521281A (zh) * | 2011-11-25 | 2012-06-27 | 北京师范大学 | 一种基于最长匹配子序列算法的哼唱计算机音乐检索方法 |
CN102984147A (zh) * | 2012-11-23 | 2013-03-20 | 上海吟隆信息科技有限公司 | 一种基于旋律识别的多媒体安全过滤方法 |
Non-Patent Citations (2)
Title |
---|
《大规模音乐喷泉的实时模拟》;王槐欣等;《中国图像图形学报》;20100331;第15卷(第3期);全文 * |
基于iOS平台的乐音识别关键技术研究与设计;王婷;《中国优秀硕士学位论文全文数据库》;20121119;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103247286A (zh) | 2013-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103247286B (zh) | 一种基于gpu的多声部音乐旋律提取方法 | |
JP6784362B2 (ja) | 歌曲メロディ情報処理方法、サーバ、および記憶媒体 | |
Wu et al. | Polyphonic music transcription with semantic segmentation | |
Hargreaves et al. | Structural segmentation of multitrack audio | |
CN103324698A (zh) | 一种基于数据级并行gpu加速的大规模哼唱旋律匹配*** | |
CN110377782A (zh) | 音频检索方法、装置和存储介质 | |
Duan et al. | Note-level Music Transcription by Maximum Likelihood Sampling. | |
CN103559309A (zh) | 一种基于gpu加速的音乐检索与推荐*** | |
Degara et al. | Note onset detection using rhythmic structure | |
Teixeira et al. | Ulises: a agent-based system for timbre classification | |
CN109300484B (zh) | 音频对齐方法、装置、计算机设备以及可读存储介质 | |
Ma | [Retracted] Music Rhythm Detection Algorithm Based on Multipath Search and Cluster Analysis | |
Xiao et al. | Using Statistic Model to Capture the Association between Timbre and Perceived Tempo. | |
CN108257591A (zh) | 一种音乐的识别方法及*** | |
Lai | [Retracted] Automatic Music Classification Model Based on Instantaneous Frequency and CNNs in High Noise Environment | |
Peeters | Template-based estimation of tempo: using unsupervised or supervised learning to create better spectral templates | |
Vatolkin et al. | Evaluation of audio feature groups for the prediction of arousal and valence in music | |
Gong et al. | Monaural musical octave sound separation using relaxed extended common amplitude modulation | |
Sentürk et al. | An approach for linking score and audio recordings in makam music of Turkey | |
Lartillot | Computational analysis of maqam music: From audio transcription to musicological analysis, everything is tightly intertwined | |
Khadkevich et al. | Phase-change based tuning for automatic chord recognition | |
Liu et al. | Research on Yunnan Folk Music Classification Based on the Features of HHT-MFCC | |
Zhang | Extraction and recognition of music melody features using a deep neural network | |
CN115527514B (zh) | 音乐大数据检索的专业声乐旋律特征提取方法 | |
Sangnark et al. | Thai music emotion recognition by linear regression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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 |
Effective date of registration: 20210207 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 |
|
TR01 | Transfer of patent right |