謝晨偉,陸天翼,湯勇明
(東南大學電子科學與工程學院,南京210096)
?
基于GPU通用計算平臺的樂譜自動識別系統(tǒng)設計
謝晨偉,陸天翼,湯勇明*
(東南大學電子科學與工程學院,南京210096)
摘要:在GPU通用計算平臺上實現(xiàn)了一個鋼琴獨奏樂曲的樂譜識別系統(tǒng),它讀取WAV格式音頻文件,利用GPU通用計算技術加速自相關函數(shù)算法來實現(xiàn)音高的識別,并綜合考慮短時能量和基音周期的變化進行節(jié)拍劃分。通過實際測試,驗證了該樂譜識別系統(tǒng)的準確性,并證明了GPU并行計算對系統(tǒng)計算效率提升的效果:將計算時間減少到傳統(tǒng)CPU計算時間的16%左右。關鍵詞:GPU通用計算;自相關函數(shù)法;短時能量;樂譜識別
使機器“聽懂”樂器的演奏并輸出相應的樂譜,這種功能在音樂創(chuàng)作中能夠極大地提高作曲人的創(chuàng)作效率,同時在日常生活中也有著非常大的娛樂價值。樂譜的自動識別主要包括音高的識別(即基音周期的識別)和節(jié)拍的識別。近年來,國內外很多學者在相關領域做出了巨大的貢獻。
馮雅中等人[1]采用的倒譜法,以及胡瑛等人[2]和徐國慶等人[3]采用的小波變換法是變換域估計法中的代表。倒譜法由于引入對數(shù)計算所以計算量較大。小波變換法雖然適用于語音信號這樣的非平穩(wěn)信號,但其抗噪性能欠佳。常亮等人[4]和林琴等人[5]使用的自相關函數(shù)算法(ACF)是時域估計法中的代表,該算法利用自相關函數(shù)在信號基音周期的整數(shù)倍上出現(xiàn)峰值的性質進行基音周期識別,具有良好的抗噪性以及較強的抗相位失真能力。
另外出于實用性的考慮,基音周期識別往往對計算效率有很高的要求。GPU通用計算技術將GPU大規(guī)模并行計算的能力應用于一般意義上的科學計算,極大的提升了程序的執(zhí)行效率。王海峰等人[6]介紹了GPU在通用計算領域的典型應用。李玉峰等[7]和張健等[8]分別利用GPU加速離散小波變換和方程組求解算法。NVIDIA推出了統(tǒng)一計算設備架構(CUDA)和對應的編程語言CUDA C[9],使得使用者在無需具備很多計算機圖形學知識的情況下完成GPU通用計算的編程。
綜合考慮各種基音周期識別算法的計算量、抗噪性等方面的要求,本文采用自相關函數(shù)算法進行基音周期的識別,并使用CUDA C語言在GPU通用計算平臺上進行系統(tǒng)的編程。
讀取WAV格式音頻文件之后,首先由CPU對數(shù)據(jù)進行分幀處理,并將數(shù)據(jù)拷貝到GPU,創(chuàng)建大量的線程并發(fā)執(zhí)行以下操作:利用帶通濾波和中心削波對樂曲信號進行預處理,接著利用自相關函數(shù)進行樂曲信號基音周期的識別。之后,GPU將識別的結果返回給CPU,CPU結合基音周期識別結果和信號短時能量信息進行節(jié)拍劃分。算法的流程如圖1所示。
圖1 算法流程圖
1.1分幀處理
自相關函數(shù)法要求幀的長度至少取信號周期的兩倍。而利用GPU進行并行計算的思路是將數(shù)據(jù)分成盡量多的份數(shù)同時進行計算,因此一般要求每一幀的長度應盡可能的短。為此,我們將每一幀的長度定為樂曲信號中可能出現(xiàn)的最大基音周期的兩倍,令Fs為樂曲信號的采樣率,Tmax為最大基音周期,N為最短幀長,則:
在實際應用中,Tmax通常是頻率為130.8 Hz的音調對應的周期,即0.007 65 s。
1.2數(shù)據(jù)的拷貝和線程的創(chuàng)建
如圖2所示,對數(shù)據(jù)進行分幀處理之后,CPU將數(shù)據(jù)發(fā)送到GPU,GPU為每一幀數(shù)據(jù)創(chuàng)建一條線程,該線程進行對應幀的基音周期識別。
圖2 數(shù)據(jù)與線程之間的映射
需要注意的是,在計算自相關函數(shù)時,程序會頻繁地訪問存儲樂曲信號的數(shù)組,平均每個元素要被訪問數(shù)百次。而設備存儲器屬于片外存儲器,訪問它需要大量的時間[12],這極大地限制了GPU并行計算的能力。針對這個問題,可以在計算前將數(shù)組的一個副本放在共享存儲器中,共享存儲器屬于片上存儲器,訪問速度與寄存器相當。這樣,只需要訪問一次設備存儲器,之后可以直接訪問共享存儲器,從而極大的減少了訪問數(shù)據(jù)的時間。
數(shù)據(jù)傳送完成之后即可創(chuàng)建線程進行計算,本文共創(chuàng)建2 048條線程進行數(shù)據(jù)的計算,即將原來的樂曲數(shù)據(jù)分成2 048幀,每條線程進行一幀數(shù)據(jù)的計算,不同線程之間并發(fā)地執(zhí)行計算,從而大大的減少了系統(tǒng)識別樂譜的總時間。
2011年,經(jīng)廣州市委組織部、廣東省委組織部選派,我作為省第六批援疆教師,前往新疆疏附縣第二中學任教。那年4月30日,我和同事們沿著314國道,乘坐汽車穿行于戈壁大漠。我們翻過一座又一座的荒山,晶瑩的雪山看似近在眼前,仿佛觸手可及,可車子卻像爬行在一條天路上,顛簸著,蠕動著,好像永遠沒有盡頭,車內的人也陸續(xù)出現(xiàn)暈眩、嘔吐的癥狀。天高地闊,卻孤立隔絕;風景壯美,卻荒蕪乏陳。我暗自忖度,那些看慣大漠孤煙的學生們會是怎樣的呢?他們會有怎樣的課堂?怎樣的視野和生活?而我,能為他們做些什么呢?
1.3帶通濾波和中心削波
本文對樂曲信號的預處理主要分為兩部分:帶通濾波和中心削波。數(shù)字濾波器的設計較為簡單,在此不再贅述。本文所用的中心削波處理函數(shù)的表達式為
式中的削波電平L是由音頻信號的峰值大小確定的。Dubnowski[10]提出將語音信號幀分為3個小段,找出第1段和第3段的最大幅度值,并將削波電平L取為其中較小值的80%左右。本文通過測試比較,將削波電平L取為較小值的68%時效果最好。
1.4基音周期檢測
對于一幀長度為N的語音信號sw(n),它的自相關函數(shù)定義為:
根據(jù)信號處理理論,當l為信號周期的整數(shù)倍時,Rw(l)為一個峰值點。
在具體的編程實現(xiàn)中,假設sw(n)為存儲樂曲信號的數(shù)組,根據(jù)計算公式,將自相關函數(shù)的計算結果存儲于數(shù)組Rw(l)中,然后遍歷Rw(l),找出數(shù)組中最大元素所在的位置L,若信號的采樣率為Fs,則基音周期T為:
1.5節(jié)拍識別
上文在GPU上計算出每一幀數(shù)據(jù)的基音周期,并將計算結果返回給CPU。本小節(jié)將結合短時能量和基音周期進行節(jié)拍劃分,具體步驟如下:
②如果兩幀數(shù)據(jù)基音周期相同,再比較兩幀數(shù)據(jù)的短時能量值。短時能量值定義為:
假設某相鄰兩幀數(shù)據(jù)的短時能量值分別為:Ew-1和Ew,設定閾值β(β>1),當Ew≥β·Ew-1時,確定Ew所在的幀為一個新的節(jié)拍的開始。
本文以鋼琴獨奏樂曲《小步舞曲》的節(jié)選片段為例(約14 s),說明樂譜自動識別的過程及識別效果。需要說明的是,一首樂曲的節(jié)拍并不固定,取決與演奏時的拍速,所以本文將重點放在檢測不同節(jié)拍之間的相對時長上。
表1為進行實驗的軟硬件環(huán)境。
表1 實驗環(huán)境
為檢驗音高識別的正確性,我們列出常用音名對應的基頻,見表2。
表2 常用音名及其基音頻率
實驗過程如下:
①讀取《小步舞曲(節(jié)選)》:WAV音頻格式,雙聲道,采樣率44.1 kHz,量化位數(shù)16位。
②以800個數(shù)據(jù)點為一幀對信號進行分幀處理,并將數(shù)據(jù)拷貝到GPU。
③GPU創(chuàng)建2個線程組,每個線程組包含1 024條線程,線程間并發(fā)地進行計算,并結合表1確定音高,最后將結果返回給CPU。
④進行節(jié)拍的劃分并確定每個節(jié)拍的相對時長。
表3給出了程序中檢測到的各節(jié)拍的基音頻率平均值及相對時長(其中t為最短的一拍所對應的時間),基音頻率與標準值之間略有差異,但與相鄰兩個音名之間的差異相比可以忽略,并不會影響音名的識別。通過對比,系統(tǒng)的識別結果與標準的《小步舞曲》樂譜相比完全一致。
表3 實驗測試結果
為了檢驗GPU通用計算技術對計算效率的提升,我們將同一算法用傳統(tǒng)的CPU串行計算方式實現(xiàn),用以對比。對于《小步舞曲(節(jié)選)》,傳統(tǒng)CPU串行程序的執(zhí)行時間為1.285 s,而通過GPU通用計算技術加速后的執(zhí)行時間僅為0.207 s,約為前者的16%。
本文研究了自相關函數(shù)算法在基音周期識別方面的應用,并在GPU通用計算平臺上用CUDA C語言編程實現(xiàn)了一個樂譜自動識別系統(tǒng),從測試結果可以看出,該系統(tǒng)能夠準確地識別鋼琴獨奏樂曲的樂譜,而GPU通用計算技術則在很大程度上提高了算法的計算效率,滿足實際應用中對識別速度的要求。本文測試實驗采用時長14 s的樂曲信號,GPU創(chuàng)建了2個線程組,每個線程組包含1 024條線程。當實際應用中碰到更大數(shù)據(jù)量的計算任務時,可以通過增加GPU線程組數(shù)量進一步提高程序的識別速度。
參考文獻:
[1]馮雅中,莊越挺,潘云鶴.一種啟發(fā)式的用哼唱檢索音樂的層次化方法[J].計算機研究與發(fā)展,2004(2):333-339.
[2]胡瑛,陳寧.基于小波變換的清濁音分類及基音周期檢測算法[J].電子與信息學報,2008(2):353-356.
[3]徐國慶,楊丹.小波變換與FFT聯(lián)合識別樂音[J].重慶大學學報:自然科學版,2005,12:51-54.
[4]常亮,徐敬德,崔慧娟.電話線質量語音的基音周期提取算法[J].清華大學學報:自然科學版,2013,11:1548-1552+1557.
[5]林琴,郭玉堂,劉亞楠.基于自相關平方函數(shù)與小波變換的基音檢測[J].計算機應用,2009(5):1433-1436.
[6]王海峰,陳慶奎.圖形處理器通用計算關鍵技術研究綜述[J].計算機學報,2013(4):757-772.
[7]李玉峰,吳蔚,王愷.基于GPGPU的JPEG2000圖像壓縮方法[J].電子器件,2013(2):163-168.
[8]張健.方程組的迭代法求解在GPU上的實現(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-),男,漢族,本科生,東南大學電子科學與工程學院,xiecw.mail@gmail.com;
湯勇明(1973-),男,漢族,博士,研究員,東南大學電子科學與工程學院。主要從事電路與系統(tǒng)、顯示電子學領域的教學和科研工作,tym@seu.edu.cn。
陸天翼(1992-),男,漢族,本科生,東南大學電子科學與工程學院,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
中圖分類號:TP391.42
文獻標識碼:A
文章編號:1005-9490(2015)04-0908-04