本發(fā)明涉及一種基于旋律特征匹配的智能硬件鋼琴曲復(fù)練指導(dǎo)方法,屬于計(jì)算機(jī)音樂識別領(lǐng)域。
背景技術(shù):
隨著生活環(huán)境的變化和生活條件的提高,越來越多的孩子和成人對于鋼琴學(xué)習(xí)產(chǎn)生興趣。目前學(xué)習(xí)鋼琴的方式,主要通過參加培訓(xùn)班等老師手把手的進(jìn)行指導(dǎo),否則學(xué)員沒法分辨出自己所奏鋼琴曲音樂旋律的正確性。近幾年來,伴隨著互聯(lián)網(wǎng)和智能硬件的快速發(fā)展,一些網(wǎng)上教學(xué)和特色的音樂識別軟件也得到了很快的發(fā)展,特別是以可穿戴式設(shè)備等智能硬件的發(fā)展,對于人們的學(xué)習(xí)和娛樂生活產(chǎn)生了重大的影響,但學(xué)員依然并不能在無指導(dǎo)老師情況下,實(shí)現(xiàn)自我糾錯,自我提升。
近二十幾年,音樂識別的相關(guān)算法和理論得到了較為深入的研究,基于旋律的特征匹配算法也有很多,例如中國公開專利CN103247286A提出的一種利用GPU對多聲部音樂進(jìn)行旋律提取的并行化法,該算法雖然顯著降低了提取所需要的硬件資源,同時(shí)提高了算法的開發(fā)進(jìn)度,但GPU成本和算法復(fù)雜度較高,同時(shí)不利于智能小硬件的應(yīng)用,還有中國公開專利CN103853836A和CN101916250A也提出一些算法已經(jīng)運(yùn)用在了許多基于旋律的音樂檢索系統(tǒng)中,但對于鋼琴曲特征識別應(yīng)用效果并不顯著。
本發(fā)明將基于旋律特征匹配的音樂識別算法與智能硬件相結(jié)合,提出了一種鋼琴曲復(fù)練得指導(dǎo)方法,通過動態(tài)實(shí)時(shí)的鋼琴彈奏評分,便可快速了解掌握鋼琴彈奏中的不足。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提出了一種基于旋律特征匹配的智能硬件鋼琴曲復(fù)練指導(dǎo)方法,可用于指導(dǎo)兒童等音樂學(xué)員進(jìn)行鋼琴曲的復(fù)習(xí)演奏。
本發(fā)明為解決其技術(shù)問題采用如下技術(shù)方案:
一種基于旋律特征匹配的智能硬件鋼琴曲復(fù)練指導(dǎo)方法,包括以下步驟:
步驟(1)通過便攜式智能硬件設(shè)備進(jìn)行演奏音樂的實(shí)施錄音,利用麥克風(fēng)陣列進(jìn)行波速形成,去除背景噪聲以提高音樂信號錄音質(zhì)量。
步驟(1-1)通過智能硬件設(shè)備進(jìn)行錄音,根據(jù)聲音的短時(shí)能量、小波變換子帶系數(shù)幅度,進(jìn)行音樂起始與結(jié)束的斷點(diǎn)檢測。
步驟(1-2)通過麥克風(fēng)陣列進(jìn)行波速形成,定向接收音樂信號,對來自不同方位的干擾噪聲進(jìn)行抑制。
步驟(2)步驟(1)中所述的錄制的音樂信號中,進(jìn)行基頻估計(jì),求取所有諧波分量的頻率,作為鋼琴曲的旋律特征。
步驟(2-1)通過自相關(guān)運(yùn)算,求取自相關(guān)最大值對應(yīng)的頻率數(shù)值,作為諧波分量的基頻,
步驟(2-2)從原始信號中減去步驟(2-1)中所述的諧波分量基頻,重復(fù)進(jìn)行自相關(guān)運(yùn)算,提取其余諧波分量頻率,作為鋼琴曲的旋律特征。
步驟(3)根據(jù)步驟(2)中所述諧波分量基頻,轉(zhuǎn)換為鋼琴曲中對應(yīng)的音符,獲得音符的時(shí)間序列。
步驟(3-1)從鋼琴曲標(biāo)準(zhǔn)演奏錄音中,提取步驟(2)中所述的基頻,轉(zhuǎn)換為標(biāo)準(zhǔn)音符序列。
步驟(3-1)從學(xué)員演奏的鋼琴曲錄音中,提取步驟(2)中所述的基頻,轉(zhuǎn)換為演奏音符序列。
步驟(4)通過動態(tài)時(shí)間規(guī)劃,進(jìn)行步驟(3)中所述的標(biāo)準(zhǔn)音符序列和演奏音符序列的匹配,獲得相似度值,對匹配數(shù)值進(jìn)行規(guī)整化,獲得得分,用于指導(dǎo)學(xué)員正確演奏。
本發(fā)明的有益效果在于:本發(fā)明可通過動態(tài)實(shí)時(shí)錄音、特征提取、匹配和評分過程,給學(xué)員彈奏的鋼琴曲進(jìn)行評分,從而學(xué)員可根據(jù)分?jǐn)?shù)進(jìn)行自我找錯糾正,提升自己的鋼琴彈奏水平,此外,基于智能硬件實(shí)現(xiàn),可讓評分具有趣味性,這樣可以給學(xué)員在反復(fù)練習(xí)中感受到快樂和進(jìn)步,增強(qiáng)學(xué)員練好鋼琴的信心。
附圖說明
圖1為本發(fā)明涉及的鋼琴曲復(fù)練指導(dǎo)系統(tǒng)流程圖;
圖2為本發(fā)明涉及的麥克風(fēng)陣列抑制噪聲;
圖3為本發(fā)明涉及的音符序列的動態(tài)匹配打分。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明作進(jìn)一步闡述:
如附圖1所示,首先需要采集鋼琴曲的標(biāo)準(zhǔn)演奏的錄音,一般可以由授課老師進(jìn)行,在演示教學(xué)過程中,通過便攜式的智能硬件設(shè)備進(jìn)行錄音。在學(xué)員或兒童進(jìn)行在家練習(xí)的過程中,打開智能硬件設(shè)備,啟動音樂復(fù)練指導(dǎo)功能,對演奏的樂曲進(jìn)行錄音,采集音頻信號。
在獲得所需音頻信號后,通過頻率估計(jì)算法,將錄音轉(zhuǎn)換為音符序列,鋼琴的88個(gè)鍵分別對應(yīng)頻率范圍為A2(27.5Hz)至c5(4186Hz)。在獲得音符序列之后,通過動態(tài)規(guī)劃進(jìn)行優(yōu)化匹配,對匹配獲得的相似度進(jìn)行轉(zhuǎn)換,獲得最終的得分。
如附圖2所示,由于麥克風(fēng)位置不同,麥克風(fēng)收到的信號成分也不同,采用盲源分離技術(shù),將噪聲分量和音樂分量進(jìn)行分離。
接收信號X表示為
X=AS (1)
其中,
S=[S(n),N(n)]T (2)
S為音樂源和噪聲源產(chǎn)生的二維向量。X=[X1,X2]T為二維觀測數(shù)據(jù)。2×N矩陣A為傳輸矩陣,在A和S都是未知的情況下,根據(jù)觀測向量X確定出轉(zhuǎn)移矩陣W,使變換后的輸出Y為原信號S的估計(jì):
Y=WX (3)
對于雙麥克風(fēng)陣列,無法分離超過兩個(gè)的音源信號,但是對于遠(yuǎn)程噪聲,多個(gè)噪聲源疊加后,在兩個(gè)麥克風(fēng)上的信號基本一致,可以認(rèn)為是一個(gè)音源。通過對音樂和背景噪聲的分離后,我們可以進(jìn)一步通過濾波進(jìn)行噪聲的抑制。
如附圖3所示,實(shí)線代表一條音符序列的頻率變換曲線,虛線代表另一條音符序列的頻率變換曲線。通過尋找最相似的頻率數(shù)值,將序列音符進(jìn)行對準(zhǔn),在對準(zhǔn)之后,計(jì)算頻率之間的差異距離,累計(jì)總距離差異,得到相似度。
在進(jìn)行相似頻率音符的對準(zhǔn)的過程中,需要遍歷當(dāng)前音符周圍的所有的可能的音符,通過動態(tài)時(shí)間規(guī)整算法,完成這個(gè)最優(yōu)化過程,動態(tài)時(shí)間規(guī)整的計(jì)算過程如下:
音符序列存儲在S1,S2中,
讀取序列長度:
int n=s1.length();
int m=s2.length();
申請計(jì)算機(jī)內(nèi)存用于存儲距離匹配數(shù)據(jù):
ArrayList<Float>dtw=new ArrayList<Float>();
初始化所有可能的匹配方式的距離差距量:
設(shè)定搜索范圍參數(shù):
int degree=2;
dtw.set(0,(float)0.0);
int w=(n+m)/2;//DTW parameter local constrain
w=w+degree;
動態(tài)規(guī)劃遍歷尋優(yōu):
計(jì)算序列距離:
cost=dist(s1,s2);
float minimum=0;
判斷頻率差距最小的匹配途徑:
獲取兩個(gè)序列的相似度值:
dist=dtw.get(n*m-1);
如表1所示,鋼琴的88個(gè)鍵盤與頻率具有對應(yīng)關(guān)系,因此通過對頻率的估計(jì),能夠反映出旋律特征信息,進(jìn)而對演奏正確性進(jìn)行評價(jià),指導(dǎo)用戶或兒童復(fù)練。
表1
以上所述實(shí)施例,只是本發(fā)明的較佳實(shí)例,并非來限制本發(fā)明的實(shí)施范圍,故凡依本發(fā)明申請專利范圍所述的構(gòu)造、特征及原理所做的等效變化或修飾,均應(yīng)包括于本發(fā)明專利申請范圍內(nèi)。