CN104217731A - 一种快速识别独奏乐曲乐谱的方法 - Google Patents
一种快速识别独奏乐曲乐谱的方法 Download PDFInfo
- Publication number
- CN104217731A CN104217731A CN201410432269.7A CN201410432269A CN104217731A CN 104217731 A CN104217731 A CN 104217731A CN 201410432269 A CN201410432269 A CN 201410432269A CN 104217731 A CN104217731 A CN 104217731A
- Authority
- CN
- China
- Prior art keywords
- music
- data
- music score
- solo
- gpu
- 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.)
- Pending
Links
Landscapes
- Auxiliary Devices For Music (AREA)
Abstract
本发明涉及一种快速识别独奏乐曲乐谱的方法:由计算机录制独奏乐曲并保存为.wav格式音频文件,然后CPU将乐曲数据分成若干帧并将其传送给图形处理单元(GPU)。GPU同时对每一帧原始数据进行带通滤波和中心削波,然后通过改进自相关函数法实现乐曲音调的识别(即基音周期识别)。之后GPU将计算结果返回给CPU,CPU再计算每一帧数据的短时能量值,并进行差分运算提取出短时能量的变化率,根据变化率进行节拍划分并确定每一拍的时长,从而得到乐曲的演奏速度。本发明能够准确地计算乐曲的音调、节拍和演奏速度。通过改进自相关函数法并采用并行处理方式,不仅提高了音调识别的准确率,而且计算速度提高6倍左右。
Description
技术领域
本发明涉及一种快速识别独奏乐曲乐谱的方法。
背景技术
自动识别独奏乐曲的乐谱是指将用户演奏的独奏乐曲信号录制为音频文件,通过解析音频文件计算出乐曲的乐谱信息:包括音调信息和节拍信息。这种功能在音乐创作中能够极大地提高作曲人的创作效率,也可以指出演奏者在演奏过程中出现的错误。
目前的独奏乐曲乐谱自动识别主要有两类:基于MIDI格式音频文件的乐谱自动识别和基于WAV格式音频文件的乐谱自动识别方法。前者由于MIDI文件本身包含有大量的乐谱信息,而且MIDI文件并不是常用的音频文件格式而受到很大限制。后者由于需要大量的计算导致识别速度较慢,从而限制了这种方法的实用价值。
本文提出一种新的快速识别独奏乐曲乐谱的方法,利用改进自相关函数来提高音调识别的准确率,综合考虑短时能量和音调信息进行节拍划分。同时,本发明利用并行处理方式将计算速度提高6倍。
发明内容
本发明提出了一种快速识别独奏乐曲乐谱的方法,包括如下步骤:
A、录制独奏乐曲并保存为.wav格式音频文件;
B、在CPU上将数据分成若干帧以便于后期并行处理;
C、将分帧后的数据传送给GPU;
D、GPU对数据进行带通滤波和中心削波;
E、GPU通过改进的自相关函数法进行乐曲音调的计算,并将计算结果返回给CPU;
F、CPU计算每一帧的短时能量值,并通过对所有帧的短时能量求差分运算而获取乐曲信号短时能量的变化率;
G、根据节拍划分的结果,结合采样率计算每一个节拍持续的时间;
本发明的有益技术效果:能够准确地计算独奏乐曲的音调、节拍和演奏速度。通过改进自相关函数法提高了基音周期识别的准确率,而且通过并行处理将计算速度提高6倍左右。
附图说明
图1是本发明的计算流程图。
图2是数据与线程之间的映射关系图。
图3是乐曲信号时域波形图。
图4是识别结果。
具体实施方式
如图1所示,计算机读取事先录制的.wav格式独奏乐曲音频文件,将乐曲数据保存为数组形式,然后CPU将乐曲数据进行分帧处理并将其拷贝到GPU,GPU为每一帧数据创建一条线程,该线程进行对应帧的带通滤波、中心削波和基音周期识别(即音高的识别),最后将音高识别的结果返回给CPU,由CPU结合短时能量变化率进行节拍识别。具体计算过程如下:
1.分帧处理
本发明首先将原乐曲数据分成若干帧,每一帧的长度为乐曲信号中可能出现的最大基音周期的两倍,令Fs为乐曲信号的采样率,Tmax为最大基音周期,N为最短帧长,则有
N=Tmax·Fs×2
一般情况下,最大基音周期Tmax是频率为130.8Hz的音调对应的周期,即0.00765s,Fs通常是44.1kHz,因此,N约等于674,为方便起见,本发明将N取为700。
2.数据的拷贝和线程的创建
如图2所示,对数据进行分帧处理之后,CPU将数据发送到GPU,GPU为每一帧数据创建一条线程,该线程进行对应帧的基音周期识别。
需要注意的是,在计算自相关函数时,程序会频繁地访问存储乐曲信号的数组,平均每个元素要被访问数百次。而设备存储器属于片外存储器,访问它需要大量的时间,这极大地限制了GPU并行计算的能力。针对这个问题,可以在计算前将数组的一个副本放在共享存储器中,共享存储器属于片上存储器,访问速度与寄存器相当。这样,只需要访问一次设备存储器,之后可以直接访问共享存储器,从而极大的减少了访问数据的时间。
数据传送完成之后即可创建线程进行计算,本文共创建2048条线程进行数据的计算,即将原来的乐曲数据分成2048帧,每条线程进行一帧数据的计算,不同线程之间并发地执行计算,从而大大的减少了系统识别乐谱的总时间。
3.带通滤波和中心削波
本发明利用带通滤波和中心削波对乐曲数据进行预处理。数字带通滤波器的设计较为简单,在此不再赘述。本文所用的中心削波处理函数的表达式为
式中的削波电平L是由音频信号的峰值大小确定的。本发明在实施过程中将信号帧分成3个小段,找出第一段和第三段的最大幅度值,并将削波电平L取为其中较小值的68%。
4.音调的计算
可以通过计算乐曲信号的基音周期来计算音调,音调代表乐曲信号频率的高低,只要对基音周期求倒数就可以得到音调信息。本发明通过改进自相关函数法进行基音周期的计算。
对于一帧长度为N的语音信号sw(n),传统的自相关函数定义为:
本发明定义改进的自相关函数为:
式中lmin=Tmin·Fs,lmax=Tmax·Fs。Tmin和Tmax分别代表乐曲信号中可能出现的最小和最大基音周期。一般情况下Tmin=0.00101s,Tmax=0.00765s,即乐曲常用音调的最小基音周期和最大基音周期。
本发明对自相关函数的改进在于:
1.除以求和项数N-l,传统自相关函数
2.减少l的取值范围。
传统自相关函数的定义与上式相比没有除以N-l,可能出现的问题是分子求和部分由于l增大,使得求和项数减少,从而导致Rw(l)整体减少,这会影响自相关函数计算基音周期的准确性。同时,传统的自相关函数l的取值范围为从1到N-1,而本发明根据常用音名基音周期的实际范围,减少基音周期的取值范围,以此减少计算量。
之后根据信号处理理论,当l为信号周期的整数倍时,Rw(l)为一个峰值点。因此,通过找出Rw(l)最大时l的值(假设此时l=l0),就可以根据下式信号的基音周期:
基音周期的倒数就是音调高低,单位为Hz。
5.节拍划分
GPU计算出每一帧信号的音调之后,将结果返回给CPU,CPU对每一帧信号计算短时能量,对于一帧乐曲信号sw(n),它的短时能量定义为:
对所有帧计算出短时能量之后,可以得到一个短时能量的序列:
Ew1,Ew2,Ew3…,之后定义第i帧信号的短时能量变化率Di为:
Di=Ew(i+1)-Ewi
Di实际上是对短时能量序列求差分的结果,代表了短时能量的变化率。如图3所示,乐曲信号每一拍的短时能量随着时间不断衰减。只有当新的一拍到来时,短时能量才会陡然上升。本发明利用这一性质,计算每一帧信号短时能量的变化率,当其大于一个固定的阈值时,则判定这一帧信号为一个新节拍的开始。
6.计算演奏速度
划分节拍之后,可以根据节拍内包含的帧数m、每一帧包含的数据点数n以及乐曲的采样率Fs来计算某一个节拍的时间t:
将t与指定乐谱中的拍速进行对比,便可指出演奏者演奏中出现的错误。
7.实验测试
本文以钢琴独奏乐曲《小步舞曲》的节选片段为例(约14秒),说明乐谱自动识别的过程及识别效果。需要说明的是,一首乐曲的节拍并不固定,取决与演奏时的拍速,所以本文将重点放在检测不同节拍之间的相对时长上。
为检验音高识别的正确性,我们列出常用音名对应的基频,见表1.
表1 常用音名及其基音频率
实验过程如下:
①读取《小步舞曲(节选)》:WAV音频格式,双声道,采样率44.1kHz,量化位数16位。
②以800个数据点为一帧对信号进行分帧处理,并将数据拷贝到GPU。
③GPU创建2个线程组,每个线程组包含1024条线程,线程间并发地进行计算,并结合表1确定音高,最后将结果返回给CPU。
④进行节拍的划分并确定每个节拍的相对时长。
表2给出了程序中检测到的各节拍的基音频率平均值及相对时长(其中t为最短的一拍所对应的时间),基音频率与标准值之间略有差异,但与相邻两个音名之间的差异相比可以忽略,并不会影响音名的识别。最后将结果整理成简谱形式如图4,通过对比,系统的识别结果与标准的《小步舞曲》乐谱相比完全一致。
表2 实验测试结果
为了检验GPU通用计算技术对计算效率的提升,我们将同一算法用传统的CPU串行计算方式实现,用以对比。对于《小步舞曲(节选)》,传统CPU串行程序的执行时间为1.285s,而通过GPU通用计算技术加速后的执行时间仅为0.207s,约为前者的16%。
需要指出的是,上述测试实验仅为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (7)
1.一种快速识别独奏乐曲乐谱的方法,其特征在于,包括以下步骤:
A、录制独奏乐曲并保存为.wav格式音频文件;
B、在CPU上将数据分成若干帧以便于后期并行处理;
C、将分帧后的数据传送给GPU设备存储器,并缓存至GPU共享存储器;
D、GPU对数据进行带通滤波和中心削波;
E、GPU通过改进的自相关函数法进行乐曲音调的计算,并将计算结果返回给CPU;
F、CPU计算每一帧的短时能量值,并通过对所有帧的短时能量求差分运算而获取乐曲信号短时能量的变化率;
G、根据节拍划分的结果,结合采样率计算每一个节拍持续的时间。
2.根据权利1所述的一种快速识别独奏乐曲乐谱的方法,其特征在于:所述乐谱数据包括音调数据和节拍数据。
3.根据权利1所述的一种快速识别独奏乐曲乐谱的方法,其特征在于:将乐曲数据分成若干帧,并采用并行计算方式加速乐谱识别速度。
4.根据权利1所述的一种快速识别独奏乐曲乐谱的方法,其特征在于:利用改进的自相关函数法进行音调的检测。
5.根据权利4所述的一种快速识别独奏乐曲乐谱的方法,其特征在于:改进的自相关函数法根据乐曲信号音调范围特征,只选取部分范围计算自相关函数,从而减少计算量。
6.根据权利4所述的一种快速识别独奏乐曲乐谱的方法,其特征在于:改进的自相关函数法对自相关函数计算公式进行修改,提高音调识别的准确率。
7.根据权利1所述的一种自动识别乐谱的方法,其特征在于:对短时能量求差分获取其变化率,根据短时能量变化率进行节拍划分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410432269.7A CN104217731A (zh) | 2014-08-28 | 2014-08-28 | 一种快速识别独奏乐曲乐谱的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410432269.7A CN104217731A (zh) | 2014-08-28 | 2014-08-28 | 一种快速识别独奏乐曲乐谱的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104217731A true CN104217731A (zh) | 2014-12-17 |
Family
ID=52099137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410432269.7A Pending CN104217731A (zh) | 2014-08-28 | 2014-08-28 | 一种快速识别独奏乐曲乐谱的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104217731A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105609106A (zh) * | 2015-12-16 | 2016-05-25 | 魅族科技(中国)有限公司 | 记事文档生成方法和装置 |
CN108364660A (zh) * | 2018-02-09 | 2018-08-03 | 腾讯音乐娱乐科技(深圳)有限公司 | 重音识别方法、装置及计算机可读存储介质 |
CN109920449A (zh) * | 2019-03-18 | 2019-06-21 | 广州市百果园网络科技有限公司 | 节拍分析方法、音频处理方法及装置、设备、介质 |
CN110599987A (zh) * | 2019-08-25 | 2019-12-20 | 南京理工大学 | 基于卷积神经网络的钢琴音符识别算法 |
CN113066512A (zh) * | 2021-03-24 | 2021-07-02 | 平安科技(深圳)有限公司 | 佛教音乐识别方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120063170A (ko) * | 2010-12-07 | 2012-06-15 | 한국기술교육대학교 산학협력단 | 악보인식시스템 및 이를 이용한 악보인식방법 |
CN102737645A (zh) * | 2012-06-15 | 2012-10-17 | 武汉天喻信息产业股份有限公司 | 一种语音信号的基音周期估计算法 |
CN103035253A (zh) * | 2012-12-20 | 2013-04-10 | 成都玉禾鼎数字娱乐有限公司 | 一种自动识别音乐旋律调号的方法 |
CN103354092A (zh) * | 2013-06-27 | 2013-10-16 | 天津大学 | 一种带检错功能的音频乐谱比对方法 |
CN103646247A (zh) * | 2013-09-26 | 2014-03-19 | 惠州学院 | 一种乐谱识别方法 |
JP2014056310A (ja) * | 2012-09-11 | 2014-03-27 | Kawai Musical Instr Mfg Co Ltd | 楽譜認識装置及びプログラム |
CN103824555A (zh) * | 2012-11-19 | 2014-05-28 | 腾讯科技(深圳)有限公司 | 音频段提取方法及提取装置 |
CN103902647A (zh) * | 2013-12-27 | 2014-07-02 | 上海斐讯数据通信技术有限公司 | 一种应用于智能设备上的乐谱识别方法及智能设备 |
-
2014
- 2014-08-28 CN CN201410432269.7A patent/CN104217731A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120063170A (ko) * | 2010-12-07 | 2012-06-15 | 한국기술교육대학교 산학협력단 | 악보인식시스템 및 이를 이용한 악보인식방법 |
CN102737645A (zh) * | 2012-06-15 | 2012-10-17 | 武汉天喻信息产业股份有限公司 | 一种语音信号的基音周期估计算法 |
JP2014056310A (ja) * | 2012-09-11 | 2014-03-27 | Kawai Musical Instr Mfg Co Ltd | 楽譜認識装置及びプログラム |
CN103824555A (zh) * | 2012-11-19 | 2014-05-28 | 腾讯科技(深圳)有限公司 | 音频段提取方法及提取装置 |
CN103035253A (zh) * | 2012-12-20 | 2013-04-10 | 成都玉禾鼎数字娱乐有限公司 | 一种自动识别音乐旋律调号的方法 |
CN103354092A (zh) * | 2013-06-27 | 2013-10-16 | 天津大学 | 一种带检错功能的音频乐谱比对方法 |
CN103646247A (zh) * | 2013-09-26 | 2014-03-19 | 惠州学院 | 一种乐谱识别方法 |
CN103902647A (zh) * | 2013-12-27 | 2014-07-02 | 上海斐讯数据通信技术有限公司 | 一种应用于智能设备上的乐谱识别方法及智能设备 |
Non-Patent Citations (6)
Title |
---|
曹西征等: ""基于WAV文件的独奏乐曲信号中的乐谱识别"", 《计算机应用》 * |
李鹏等: ""改进的基音检测方法及在音乐检索中的应用"", 《计算机工程与应用》 * |
杨森斌等: ""一种改进的自相关函数基音检测算法"", 《现代电子技术》 * |
沈瑜等: ""加权短时自相关函数的基音周期估计算法"", 《计算机工程与应用》 * |
胡瑛等: ""一种改进的自相关基音检测算法"", 《电子科技》 * |
马莎莎等: ""基于短时能量的循环AMDF基音检测算法"", 《计算机仿真》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105609106A (zh) * | 2015-12-16 | 2016-05-25 | 魅族科技(中国)有限公司 | 记事文档生成方法和装置 |
CN108364660A (zh) * | 2018-02-09 | 2018-08-03 | 腾讯音乐娱乐科技(深圳)有限公司 | 重音识别方法、装置及计算机可读存储介质 |
CN109920449A (zh) * | 2019-03-18 | 2019-06-21 | 广州市百果园网络科技有限公司 | 节拍分析方法、音频处理方法及装置、设备、介质 |
CN110599987A (zh) * | 2019-08-25 | 2019-12-20 | 南京理工大学 | 基于卷积神经网络的钢琴音符识别算法 |
CN113066512A (zh) * | 2021-03-24 | 2021-07-02 | 平安科技(深圳)有限公司 | 佛教音乐识别方法、装置、设备及存储介质 |
CN113066512B (zh) * | 2021-03-24 | 2024-02-23 | 平安科技(深圳)有限公司 | 佛教音乐识别方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11657798B2 (en) | Methods and apparatus to segment audio and determine audio segment similarities | |
CN104217731A (zh) | 一种快速识别独奏乐曲乐谱的方法 | |
CN110880329B (zh) | 一种音频识别方法及设备、存储介质 | |
KR102128926B1 (ko) | 오디오 정보 처리 방법 및 디바이스 | |
CN101740025A (zh) | 评估演唱者的嗓音性能的方法和使用该方法的设备 | |
CN104143324B (zh) | 一种乐音音符识别方法 | |
WO2019232928A1 (zh) | 音乐模型训练、音乐创作方法、装置、终端及存储介质 | |
CN104992712B (zh) | 能识别音乐自动成谱的方法 | |
EP3373299B1 (en) | Audio data processing method and device | |
JP4973537B2 (ja) | 音響処理装置およびプログラム | |
CN103839538B (zh) | 音乐节奏检测方法及检测装置 | |
CN105161116B (zh) | 多媒体文件高潮片段的确定方法及装置 | |
KR101666521B1 (ko) | 입력 신호의 피치 주기 검출 방법 및 그 장치 | |
CN108986841A (zh) | 音频信息处理方法、装置及存储介质 | |
CN105280196A (zh) | 副歌检测方法及系统 | |
CN109920446A (zh) | 一种音频数据处理方法、装置及计算机存储介质 | |
CN101399035A (zh) | 从音频文件提取节拍的方法和设备 | |
Mehrabi et al. | Similarity measures for vocal-based drum sample retrieval using deep convolutional auto-encoders | |
CN104252872A (zh) | 歌词生成方法和智能终端 | |
TWI740315B (zh) | 聲音分離方法、電子設備和電腦可讀儲存媒體 | |
CN105609114A (zh) | 一种发音检测方法及装置 | |
CN109002529A (zh) | 音频检索方法及装置 | |
CN106095943B (zh) | 演唱歌曲熟识广度检测方法和装置 | |
JPWO2019043798A1 (ja) | 楽曲解析装置および楽曲解析プログラム | |
CN111489739A (zh) | 音素识别方法、装置及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20141217 |
|
WD01 | Invention patent application deemed withdrawn after publication |