謝晨偉,陸天翼,湯勇明
(東南大學(xué)電子科學(xué)與工程學(xué)院,南京210096)
?
基于GPU通用計(jì)算平臺(tái)的樂(lè)譜自動(dòng)識(shí)別系統(tǒng)設(shè)計(jì)
謝晨偉,陸天翼,湯勇明*
(東南大學(xué)電子科學(xué)與工程學(xué)院,南京210096)
摘要:在GPU通用計(jì)算平臺(tái)上實(shí)現(xiàn)了一個(gè)鋼琴獨(dú)奏樂(lè)曲的樂(lè)譜識(shí)別系統(tǒng),它讀取WAV格式音頻文件,利用GPU通用計(jì)算技術(shù)加速自相關(guān)函數(shù)算法來(lái)實(shí)現(xiàn)音高的識(shí)別,并綜合考慮短時(shí)能量和基音周期的變化進(jìn)行節(jié)拍劃分。通過(guò)實(shí)際測(cè)試,驗(yàn)證了該樂(lè)譜識(shí)別系統(tǒng)的準(zhǔn)確性,并證明了GPU并行計(jì)算對(duì)系統(tǒng)計(jì)算效率提升的效果:將計(jì)算時(shí)間減少到傳統(tǒng)CPU計(jì)算時(shí)間的16%左右。關(guān)鍵詞:GPU通用計(jì)算;自相關(guān)函數(shù)法;短時(shí)能量;樂(lè)譜識(shí)別
使機(jī)器“聽(tīng)懂”樂(lè)器的演奏并輸出相應(yīng)的樂(lè)譜,這種功能在音樂(lè)創(chuàng)作中能夠極大地提高作曲人的創(chuàng)作效率,同時(shí)在日常生活中也有著非常大的娛樂(lè)價(jià)值。樂(lè)譜的自動(dòng)識(shí)別主要包括音高的識(shí)別(即基音周期的識(shí)別)和節(jié)拍的識(shí)別。近年來(lái),國(guó)內(nèi)外很多學(xué)者在相關(guān)領(lǐng)域做出了巨大的貢獻(xiàn)。
馮雅中等人[1]采用的倒譜法,以及胡瑛等人[2]和徐國(guó)慶等人[3]采用的小波變換法是變換域估計(jì)法中的代表。倒譜法由于引入對(duì)數(shù)計(jì)算所以計(jì)算量較大。小波變換法雖然適用于語(yǔ)音信號(hào)這樣的非平穩(wěn)信號(hào),但其抗噪性能欠佳。常亮等人[4]和林琴等人[5]使用的自相關(guān)函數(shù)算法(ACF)是時(shí)域估計(jì)法中的代表,該算法利用自相關(guān)函數(shù)在信號(hào)基音周期的整數(shù)倍上出現(xiàn)峰值的性質(zhì)進(jìn)行基音周期識(shí)別,具有良好的抗噪性以及較強(qiáng)的抗相位失真能力。
另外出于實(shí)用性的考慮,基音周期識(shí)別往往對(duì)計(jì)算效率有很高的要求。GPU通用計(jì)算技術(shù)將GPU大規(guī)模并行計(jì)算的能力應(yīng)用于一般意義上的科學(xué)計(jì)算,極大的提升了程序的執(zhí)行效率。王海峰等人[6]介紹了GPU在通用計(jì)算領(lǐng)域的典型應(yīng)用。李玉峰等[7]和張健等[8]分別利用GPU加速離散小波變換和方程組求解算法。NVIDIA推出了統(tǒng)一計(jì)算設(shè)備架構(gòu)(CUDA)和對(duì)應(yīng)的編程語(yǔ)言CUDA C[9],使得使用者在無(wú)需具備很多計(jì)算機(jī)圖形學(xué)知識(shí)的情況下完成GPU通用計(jì)算的編程。
綜合考慮各種基音周期識(shí)別算法的計(jì)算量、抗噪性等方面的要求,本文采用自相關(guān)函數(shù)算法進(jìn)行基音周期的識(shí)別,并使用CUDA C語(yǔ)言在GPU通用計(jì)算平臺(tái)上進(jìn)行系統(tǒng)的編程。
讀取WAV格式音頻文件之后,首先由CPU對(duì)數(shù)據(jù)進(jìn)行分幀處理,并將數(shù)據(jù)拷貝到GPU,創(chuàng)建大量的線(xiàn)程并發(fā)執(zhí)行以下操作:利用帶通濾波和中心削波對(duì)樂(lè)曲信號(hào)進(jìn)行預(yù)處理,接著利用自相關(guān)函數(shù)進(jìn)行樂(lè)曲信號(hào)基音周期的識(shí)別。之后,GPU將識(shí)別的結(jié)果返回給CPU,CPU結(jié)合基音周期識(shí)別結(jié)果和信號(hào)短時(shí)能量信息進(jìn)行節(jié)拍劃分。算法的流程如圖1所示。
圖1 算法流程圖
1.1分幀處理
自相關(guān)函數(shù)法要求幀的長(zhǎng)度至少取信號(hào)周期的兩倍。而利用GPU進(jìn)行并行計(jì)算的思路是將數(shù)據(jù)分成盡量多的份數(shù)同時(shí)進(jìn)行計(jì)算,因此一般要求每一幀的長(zhǎng)度應(yīng)盡可能的短。為此,我們將每一幀的長(zhǎng)度定為樂(lè)曲信號(hào)中可能出現(xiàn)的最大基音周期的兩倍,令Fs為樂(lè)曲信號(hào)的采樣率,Tmax為最大基音周期,N為最短幀長(zhǎng),則:
在實(shí)際應(yīng)用中,Tmax通常是頻率為130.8 Hz的音調(diào)對(duì)應(yīng)的周期,即0.007 65 s。
1.2數(shù)據(jù)的拷貝和線(xiàn)程的創(chuàng)建
如圖2所示,對(duì)數(shù)據(jù)進(jìn)行分幀處理之后,CPU將數(shù)據(jù)發(fā)送到GPU,GPU為每一幀數(shù)據(jù)創(chuàng)建一條線(xiàn)程,該線(xiàn)程進(jìn)行對(duì)應(yīng)幀的基音周期識(shí)別。
圖2 數(shù)據(jù)與線(xiàn)程之間的映射
需要注意的是,在計(jì)算自相關(guān)函數(shù)時(shí),程序會(huì)頻繁地訪(fǎng)問(wèn)存儲(chǔ)樂(lè)曲信號(hào)的數(shù)組,平均每個(gè)元素要被訪(fǎng)問(wèn)數(shù)百次。而設(shè)備存儲(chǔ)器屬于片外存儲(chǔ)器,訪(fǎng)問(wèn)它需要大量的時(shí)間[12],這極大地限制了GPU并行計(jì)算的能力。針對(duì)這個(gè)問(wèn)題,可以在計(jì)算前將數(shù)組的一個(gè)副本放在共享存儲(chǔ)器中,共享存儲(chǔ)器屬于片上存儲(chǔ)器,訪(fǎng)問(wèn)速度與寄存器相當(dāng)。這樣,只需要訪(fǎng)問(wèn)一次設(shè)備存儲(chǔ)器,之后可以直接訪(fǎng)問(wèn)共享存儲(chǔ)器,從而極大的減少了訪(fǎng)問(wèn)數(shù)據(jù)的時(shí)間。
數(shù)據(jù)傳送完成之后即可創(chuàng)建線(xiàn)程進(jìn)行計(jì)算,本文共創(chuàng)建2 048條線(xiàn)程進(jìn)行數(shù)據(jù)的計(jì)算,即將原來(lái)的樂(lè)曲數(shù)據(jù)分成2 048幀,每條線(xiàn)程進(jìn)行一幀數(shù)據(jù)的計(jì)算,不同線(xiàn)程之間并發(fā)地執(zhí)行計(jì)算,從而大大的減少了系統(tǒng)識(shí)別樂(lè)譜的總時(shí)間。
2011年,經(jīng)廣州市委組織部、廣東省委組織部選派,我作為省第六批援疆教師,前往新疆疏附縣第二中學(xué)任教。那年4月30日,我和同事們沿著314國(guó)道,乘坐汽車(chē)穿行于戈壁大漠。我們翻過(guò)一座又一座的荒山,晶瑩的雪山看似近在眼前,仿佛觸手可及,可車(chē)子卻像爬行在一條天路上,顛簸著,蠕動(dòng)著,好像永遠(yuǎn)沒(méi)有盡頭,車(chē)內(nèi)的人也陸續(xù)出現(xiàn)暈眩、嘔吐的癥狀。天高地闊,卻孤立隔絕;風(fēng)景壯美,卻荒蕪乏陳。我暗自忖度,那些看慣大漠孤煙的學(xué)生們會(huì)是怎樣的呢?他們會(huì)有怎樣的課堂?怎樣的視野和生活?而我,能為他們做些什么呢?
1.3帶通濾波和中心削波
本文對(duì)樂(lè)曲信號(hào)的預(yù)處理主要分為兩部分:帶通濾波和中心削波。數(shù)字濾波器的設(shè)計(jì)較為簡(jiǎn)單,在此不再贅述。本文所用的中心削波處理函數(shù)的表達(dá)式為
式中的削波電平L是由音頻信號(hào)的峰值大小確定的。Dubnowski[10]提出將語(yǔ)音信號(hào)幀分為3個(gè)小段,找出第1段和第3段的最大幅度值,并將削波電平L取為其中較小值的80%左右。本文通過(guò)測(cè)試比較,將削波電平L取為較小值的68%時(shí)效果最好。
1.4基音周期檢測(cè)
對(duì)于一幀長(zhǎng)度為N的語(yǔ)音信號(hào)sw(n),它的自相關(guān)函數(shù)定義為:
根據(jù)信號(hào)處理理論,當(dāng)l為信號(hào)周期的整數(shù)倍時(shí),Rw(l)為一個(gè)峰值點(diǎn)。
在具體的編程實(shí)現(xiàn)中,假設(shè)sw(n)為存儲(chǔ)樂(lè)曲信號(hào)的數(shù)組,根據(jù)計(jì)算公式,將自相關(guān)函數(shù)的計(jì)算結(jié)果存儲(chǔ)于數(shù)組Rw(l)中,然后遍歷Rw(l),找出數(shù)組中最大元素所在的位置L,若信號(hào)的采樣率為Fs,則基音周期T為:
1.5節(jié)拍識(shí)別
上文在GPU上計(jì)算出每一幀數(shù)據(jù)的基音周期,并將計(jì)算結(jié)果返回給CPU。本小節(jié)將結(jié)合短時(shí)能量和基音周期進(jìn)行節(jié)拍劃分,具體步驟如下:
②如果兩幀數(shù)據(jù)基音周期相同,再比較兩幀數(shù)據(jù)的短時(shí)能量值。短時(shí)能量值定義為:
假設(shè)某相鄰兩幀數(shù)據(jù)的短時(shí)能量值分別為:Ew-1和Ew,設(shè)定閾值β(β>1),當(dāng)Ew≥β·Ew-1時(shí),確定Ew所在的幀為一個(gè)新的節(jié)拍的開(kāi)始。
本文以鋼琴獨(dú)奏樂(lè)曲《小步舞曲》的節(jié)選片段為例(約14 s),說(shuō)明樂(lè)譜自動(dòng)識(shí)別的過(guò)程及識(shí)別效果。需要說(shuō)明的是,一首樂(lè)曲的節(jié)拍并不固定,取決與演奏時(shí)的拍速,所以本文將重點(diǎn)放在檢測(cè)不同節(jié)拍之間的相對(duì)時(shí)長(zhǎng)上。
表1為進(jìn)行實(shí)驗(yàn)的軟硬件環(huán)境。
表1 實(shí)驗(yàn)環(huán)境
為檢驗(yàn)音高識(shí)別的正確性,我們列出常用音名對(duì)應(yīng)的基頻,見(jiàn)表2。
表2 常用音名及其基音頻率
實(shí)驗(yàn)過(guò)程如下:
①讀取《小步舞曲(節(jié)選)》:WAV音頻格式,雙聲道,采樣率44.1 kHz,量化位數(shù)16位。
②以800個(gè)數(shù)據(jù)點(diǎn)為一幀對(duì)信號(hào)進(jìn)行分幀處理,并將數(shù)據(jù)拷貝到GPU。
③GPU創(chuàng)建2個(gè)線(xiàn)程組,每個(gè)線(xiàn)程組包含1 024條線(xiàn)程,線(xiàn)程間并發(fā)地進(jìn)行計(jì)算,并結(jié)合表1確定音高,最后將結(jié)果返回給CPU。
④進(jìn)行節(jié)拍的劃分并確定每個(gè)節(jié)拍的相對(duì)時(shí)長(zhǎng)。
表3給出了程序中檢測(cè)到的各節(jié)拍的基音頻率平均值及相對(duì)時(shí)長(zhǎng)(其中t為最短的一拍所對(duì)應(yīng)的時(shí)間),基音頻率與標(biāo)準(zhǔn)值之間略有差異,但與相鄰兩個(gè)音名之間的差異相比可以忽略,并不會(huì)影響音名的識(shí)別。通過(guò)對(duì)比,系統(tǒng)的識(shí)別結(jié)果與標(biāo)準(zhǔn)的《小步舞曲》樂(lè)譜相比完全一致。
表3 實(shí)驗(yàn)測(cè)試結(jié)果
為了檢驗(yàn)GPU通用計(jì)算技術(shù)對(duì)計(jì)算效率的提升,我們將同一算法用傳統(tǒng)的CPU串行計(jì)算方式實(shí)現(xiàn),用以對(duì)比。對(duì)于《小步舞曲(節(jié)選)》,傳統(tǒng)CPU串行程序的執(zhí)行時(shí)間為1.285 s,而通過(guò)GPU通用計(jì)算技術(shù)加速后的執(zhí)行時(shí)間僅為0.207 s,約為前者的16%。
本文研究了自相關(guān)函數(shù)算法在基音周期識(shí)別方面的應(yīng)用,并在GPU通用計(jì)算平臺(tái)上用CUDA C語(yǔ)言編程實(shí)現(xiàn)了一個(gè)樂(lè)譜自動(dòng)識(shí)別系統(tǒng),從測(cè)試結(jié)果可以看出,該系統(tǒng)能夠準(zhǔn)確地識(shí)別鋼琴獨(dú)奏樂(lè)曲的樂(lè)譜,而GPU通用計(jì)算技術(shù)則在很大程度上提高了算法的計(jì)算效率,滿(mǎn)足實(shí)際應(yīng)用中對(duì)識(shí)別速度的要求。本文測(cè)試實(shí)驗(yàn)采用時(shí)長(zhǎng)14 s的樂(lè)曲信號(hào),GPU創(chuàng)建了2個(gè)線(xiàn)程組,每個(gè)線(xiàn)程組包含1 024條線(xiàn)程。當(dāng)實(shí)際應(yīng)用中碰到更大數(shù)據(jù)量的計(jì)算任務(wù)時(shí),可以通過(guò)增加GPU線(xiàn)程組數(shù)量進(jìn)一步提高程序的識(shí)別速度。
參考文獻(xiàn):
[1]馮雅中,莊越挺,潘云鶴.一種啟發(fā)式的用哼唱檢索音樂(lè)的層次化方法[J].計(jì)算機(jī)研究與發(fā)展,2004(2):333-339.
[2]胡瑛,陳寧.基于小波變換的清濁音分類(lèi)及基音周期檢測(cè)算法[J].電子與信息學(xué)報(bào),2008(2):353-356.
[3]徐國(guó)慶,楊丹.小波變換與FFT聯(lián)合識(shí)別樂(lè)音[J].重慶大學(xué)學(xué)報(bào):自然科學(xué)版,2005,12:51-54.
[4]常亮,徐敬德,崔慧娟.電話(huà)線(xiàn)質(zhì)量語(yǔ)音的基音周期提取算法[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2013,11:1548-1552+1557.
[5]林琴,郭玉堂,劉亞楠.基于自相關(guān)平方函數(shù)與小波變換的基音檢測(cè)[J].計(jì)算機(jī)應(yīng)用,2009(5):1433-1436.
[6]王海峰,陳慶奎.圖形處理器通用計(jì)算關(guān)鍵技術(shù)研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2013(4):757-772.
[7]李玉峰,吳蔚,王愷.基于GPGPU的JPEG2000圖像壓縮方法[J].電子器件,2013(2):163-168.
[8]張健.方程組的迭代法求解在GPU上的實(shí)現(xiàn)[J].電子器件,2010(6):766-771.
[9]Nvidia C U D A.Nvidia Cuda c Programming Guide[M].NVIDIA Corporation,2011:120.
[10]Dubnowski J J,Sehafer R W,Rabiner L R.Real-Time Digital Hardware Pitch Deteetor[J].IEEE Trans on Aeousties,Speeh,and Signal Proeessing,1976,24(2):2-8.
謝晨偉(1992-),男,漢族,本科生,東南大學(xué)電子科學(xué)與工程學(xué)院,xiecw.mail@gmail.com;
湯勇明(1973-),男,漢族,博士,研究員,東南大學(xué)電子科學(xué)與工程學(xué)院。主要從事電路與系統(tǒng)、顯示電子學(xué)領(lǐng)域的教學(xué)和科研工作,tym@seu.edu.cn。
陸天翼(1992-),男,漢族,本科生,東南大學(xué)電子科學(xué)與工程學(xué)院,lodge671 @foxmail.com;
Design of USB3.0 Data Transmission Interface in High Speed Data Acquisition System
YANG Shaobo1,2,PEI Dongxing1,2*,YUE Xiaozhong1,2
(1.Key Laboratory of Instrumentation Science and Dynamic Measurement,North University of China,Tai Yuan 030051,China;
2.Key Lab of Instrumentation Science and Dynamic Measurement,Ministry of Education,North University of China,Taiyuan 030051,China)
Abstract:Stable and reliable high-speed data transmission plays an important role in high-speed data acquisition system.Because missile-borne electronic tester has high demand for speed of data transmission,a high-speed data collection and transmission system is designed.Data transmission part in this system adopts CYUSB3014 chip produced by Cypress company as the interface chip.Interface connection and working process of the hardware is introduced.Main module of the interface software design,such as the DMA channel,GPIF II programmable interface firmware programming are introduced.Test shows that this system has realized reliable high-speed data transmission,and the firmware program operates normally and stably.
Key words:memory testing; high-speed data acquisition; high-speed data transmission; USB3.0 interface
doi:EEACC:7210G10.3969/j.issn.1005-9490.2015.04.039
收稿日期:2014-08-19修改日期:2014-09-15
中圖分類(lèi)號(hào):TP391.42
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1005-9490(2015)04-0908-04