??? 摘? 要: 設(shè)計了一款便攜式音樂分析儀,對一段音樂信號進(jìn)行音高和時值特征分析,將分析結(jié)果以MIDI格式符號記錄下來,通過MIDI音頻合成芯片回放音樂旋律的同時可將音符信息解析成五線譜并由LCD顯示。介紹了部分主要硬件電路接口和核心算法的軟件設(shè)計。?
??? 關(guān)鍵詞: DSP; ARM; 音樂分析
?
??? 隨著多媒體技術(shù)的發(fā)展和音頻數(shù)據(jù)的膨脹,音樂分析在音樂數(shù)據(jù)庫檢索技術(shù)、樂器調(diào)音技術(shù)和自動記譜技術(shù)中有很重要的應(yīng)用價值。目前有很多類似Cakewalk的應(yīng)用軟件都集成了音樂分析功能,通過檢測音頻的音高和音符長短,把音頻信號轉(zhuǎn)變?yōu)镸IDI格式符號記錄下來[1]。但這些應(yīng)用軟件都需要以PC機(jī)為載體,這給廣大音樂愛好者和創(chuàng)作者帶來了極大不便。本文利用DSP芯片TMS320VC5502的快速運(yùn)算能力和低功耗特點(diǎn),設(shè)計了以TMS320VC5502為核心運(yùn)算處理模塊,以對音高和音長的檢測來實(shí)現(xiàn)對音樂信號的實(shí)時分析的便攜式音樂分析儀。?
1 儀器工作原理?
??? 音樂信號與語音信號一樣是短時相關(guān)的,可用語音信號識別的相關(guān)知識來解決音樂信號的識別。音高和音符時長是音樂信號主旋律的兩大要素。本儀器系統(tǒng)設(shè)計就是由音頻信號采集模塊采集音樂信號,通過DSP對音樂信號的運(yùn)算處理來檢測音符的音高和時值長短,將音樂信號轉(zhuǎn)變?yōu)镸IDI格式的數(shù)據(jù),存儲到ARM的Flash中。ARM將音頻信號通過MIDI芯片回放的同時可將MIDI格式數(shù)據(jù)轉(zhuǎn)化為五線譜并驅(qū)動LCD顯示。?
2 系統(tǒng)硬件設(shè)計?
??? 便攜式音樂分析儀的系統(tǒng)硬件結(jié)構(gòu)如圖1所示,由音頻信號采集、DSP音樂信號處理、CPU控制、顯示與鍵盤接口等部分組成。核心處理器選用TMSC20VC5502,系統(tǒng)CPU選用ARM S3C44B0X,LCD選用適合便攜式開發(fā)的SHARP公司的LQ043T3DX02,音頻AD選用24位低功耗專用語音模數(shù)轉(zhuǎn)換芯片CS53L21,MIDI芯片選用合成能力優(yōu)異的YAMAHA724。?
?

?
2.1 音頻信號采集部分?
??? CS53L21是Cirrus Logic公司推出的24位低功耗專用語音模數(shù)轉(zhuǎn)換芯片,可提供4kHz~96kHz范圍的采樣頻率的設(shè)置,支持左/右聲道音頻獨(dú)立控制,包括數(shù)字音量控制和混音、自動電平控制,具有用于DC測量的高通濾波能力。CS53L21基于多位△-∑架構(gòu),通過前端模擬集成提供雙軌高質(zhì)量信號轉(zhuǎn)換,可進(jìn)而簡化設(shè)計并削減設(shè)計所需的昂貴器件。?
??? CS53L21的接口電路如圖2所示。作為本儀器的外部接口, MICI以單通道的方式與CS53L2芯片的AIN3B引腳相連接(由于CS53L21提供差分輸入選擇,還可考慮用AIN1B和AIN3A將MICI接成差分方式輸入以進(jìn)一步抑制噪聲),由AIN2B提供偏置電壓。偏置電壓具有0.8×VA、0.7×VA、0.6×VA和0.5×VA四種電平模式,可通過設(shè)置MIC Control寄存器的MICBIAS_LVL[1:0]位來選擇其中一種偏置。?
?

?
??? CS53L21與TMS320VC550的接口電路分為控制端口和音頻端口兩部分??刂贫丝诘倪B接是將CS53L21的串行控制端口SCL和SDA直接與TMS320VC5502的IIC模塊的SCL和SDA相連。TMS320VC5502的內(nèi)部時鐘信號SYSCLK2作為IIC通信的時鐘信號控制SDA上的數(shù)據(jù)傳輸。CS53L21的寄存器的初始化需要TMS320VC5502以IIC通信協(xié)議對其進(jìn)行訪問和操作來實(shí)現(xiàn)。音頻端口的連接是將CS53L21的串行音頻接口MCLK、SCLK、LRCK和SDOUT與TMS320VC5502的多通道緩沖串口0(MCBSP0)相連。MCLK與ELCKOUT2相連用于將TMS320VC5502的內(nèi)部時鐘信號SYSCLK3輸入CS53L21的MCLK引腳作為其主時鐘信號。SCLK與CLKR0、CLKX0連接用于向CS53L21提供串行音頻接口的串行時鐘,其中,CLKR0和CLKX0短接可使CS53L21主從方式均可使用。本系統(tǒng)設(shè)計是采取將CS53L21配置為從機(jī)的方式。LRCK與FSR0和FSX0相連用于向CS53L21提供必需的幀同步脈沖信號。SDOUT與DR0相連用于將采樣數(shù)據(jù)以IIS格式從CS53L21向TMS320VC5502傳輸。?
2.2 CPU控制部分?
??? CPU S3C44B0X與TMS320VC5502的接口設(shè)計電路如圖3所示,TMS320VC5502通過主機(jī)接口HPI與S3C44B0X相連時,除了8位數(shù)據(jù)總線及控制信號線外,不需要附加其他的邏輯電路。S3C44B0X作為系統(tǒng)的CPU以尋址TMS320VC5502的RAM的方式來讀取信號分析結(jié)果,并將結(jié)果通過MIDI合成芯片回放的同時解析成五線譜送LCD顯示。本系統(tǒng)采用多路復(fù)用8位HPI模式,主機(jī)S3C44B0X必須讀/寫2個連續(xù)的8位數(shù)據(jù)整合為16位數(shù)據(jù),通過地址線A0提供HBIL信號指示當(dāng)前傳輸?shù)氖堑谝蛔止?jié)還是第二字節(jié)??刂菩盘朒CNTL0 和HCNTL1用于指示訪問哪一個HPI 內(nèi)部寄存器,HCS 作為HPI 的基本輸入使能信號,與HDS1、HDS2信號一起控制HPI的數(shù)據(jù)傳輸。?
?

?
3 軟件設(shè)計及核心算法分析?
??? 系統(tǒng)軟件設(shè)計主要有ARM上電引導(dǎo)及初始化、DSP通過主機(jī)接口HPI自舉引導(dǎo)及系統(tǒng)初始化(包括系統(tǒng)時鐘CLK初始化、I2C模塊初始化、MCBSP0初始化)[2]和系統(tǒng)功能執(zhí)行。?
??? DSP音樂信號處理的軟件流程如圖4 所示。DSP自舉引導(dǎo)、初始化系統(tǒng)后開啟定時器0和AD,然后開始接收采樣數(shù)據(jù)。當(dāng)檢測到音符起止位置后,對音符進(jìn)行音長時值記錄和音高識別,DSP將識別結(jié)果存儲到主機(jī)ARM可訪問的RAM區(qū)域,由ARM通過HPI口讀取并保存結(jié)果,直到音樂信號結(jié)束。?
?

?
??? 音高分析過程中的FFT變換是耗費(fèi)存儲空間和運(yùn)算時間的主要部分。TMS320VC5502擁有32K×16位的片上RAM,將DSP從AD接收采樣數(shù)據(jù)的程序設(shè)計成循環(huán)隊(duì)列的方式,可節(jié)省很大一部分存儲空間,除去4 096點(diǎn)FFT所需的8KB空間外足夠供程序段和數(shù)據(jù)段分配使用,不需外擴(kuò)存儲器。程序整體設(shè)計采取C語言與匯編語言混合編程,對于FFT部分采用匯編代碼實(shí)現(xiàn),可進(jìn)一步減少運(yùn)算時間以滿足實(shí)時性要求。?
3.1 音符音高分析算法設(shè)計?
??? 音樂的音高(音調(diào))是指聲音的高低,可通過計算信號基頻得出。首先從信號幅度包絡(luò)上檢測到音符的起止位置,然后由如圖5所示的音高檢測算法流程起止位置映射音符的原始數(shù)據(jù)。若原始數(shù)據(jù)大于4 096個點(diǎn),就取前4 096個點(diǎn)作為音符有效數(shù)據(jù),若不夠4 096個點(diǎn),就補(bǔ)零到4 096個,然后對4 096點(diǎn)數(shù)據(jù)做FFT變換,采取置信度[3]的方法即可找到音符音高。?
?

?
3.2 音符時值分析算法設(shè)計?
??? 音樂信號的特征是時域波形在節(jié)奏點(diǎn)上幅度大、能量相對集中。因此系統(tǒng)設(shè)計采取在12kHz的采樣頻率下將接收的語音數(shù)據(jù)以128個點(diǎn)(大概10ms)分為一幀,幀間重疊64點(diǎn)(約5ms)數(shù)據(jù),通過求短時能量得到理想的波形包絡(luò),在此基礎(chǔ)上設(shè)立門限來找出音符起止位置[4]。計算音符時長的算法流程如下:?
??? (1)設(shè)立初始門限值。假定音樂信號開始的前N幀信號為純背景噪聲,計算前10幀的短時能量的平均值的1.2倍作為初始門限。?
??? (2)判定音符的起止位置,并記錄起止時刻。若當(dāng)前幀的短時能量超過了前面計算出的門限值,且此后連續(xù)5幀都超過了該門限值即認(rèn)為找到了音符起始位置。同樣,在找到音符的起始位置后,如果有信號能量值回落到門限以下,且此后連續(xù)5幀都低于該門限值即認(rèn)為找到了音符結(jié)束位置。?
??? (3)計算音符時長。根據(jù)上一步得到的音符的起始、結(jié)束時刻,由T=T2-T1得到該音符時長。?
??? (4)門限更新。由式Hi=βHi-1+(1-β)E進(jìn)行門限的更新。式中β取0.9,Hi-1為前一音符的門限值,E為當(dāng)前N幀信號短時能量值的幾何平均值的1.2倍。 ?
??? (5)回到第(2)步,直到整個音樂信號分析結(jié)束。?
4 系統(tǒng)測試?
??? (1)音頻合成器產(chǎn)生的頻率為440Hz的鋼琴“標(biāo)準(zhǔn)音”,經(jīng)本儀器采集、做4 096點(diǎn)FFT變換后得到的頻譜如圖6 所示??梢钥闯銎漕l譜為理想頻譜,最大峰值即為基音。對應(yīng)序號K=150,根據(jù)基頻計算公式得:f0=fs/N×K=12 000/4 096×150=439.5Hz,可見測試結(jié)果很準(zhǔn)確。?
?

?
??? 圖7所示為一段2/4拍、1拍2音的節(jié)奏音樂信號經(jīng)本儀器采集、處理得到的理想包絡(luò),在此基礎(chǔ)上由前面提到的時值分析算法可準(zhǔn)確找到音符的起止位置。?
?

?
??? (2) 利用本儀器對一段含有60個音符的音樂信號進(jìn)行分析,檢測到的音符個數(shù)為57個。根據(jù)十二平均率,連續(xù)的兩個半音之間的頻率比為1.059 46,即頻率偏差率為5.946%,而本儀器音高識別的平均誤差絕對值遠(yuǎn)小于5.946%,檢測出的音符都可以正確對應(yīng)到其標(biāo)準(zhǔn)頻率。因此,對檢測出的57個音符的識別率是百分之百,儀器的識別率為57/60=95%,樂曲本身演奏速度為1分鐘完成120個四分音符,即每個四分音符的時值為60/120=0.5s=500ms。本儀器對于57個音符的時長分析的平均絕對值誤差為13.5ms,最大絕對值誤差為25.6ms。測試表明了本儀器高效、可靠。?
??? 便攜式音樂分析儀采用具有超強(qiáng)快速運(yùn)算能力的DSP作為核心運(yùn)算模塊和24位音頻模數(shù)轉(zhuǎn)換芯片作為音頻采集模塊,實(shí)現(xiàn)對音樂信號的高速采集和實(shí)時分析。由于采用了4 096點(diǎn)FFT算法,可實(shí)現(xiàn)對大部分音符音調(diào)的精確識別。如果待測音符為低音,則需要采取抽取的方法來降低采樣頻率,從而改善頻域分辨率以達(dá)到精確識別的目的。經(jīng)實(shí)踐測試表明,該儀器對于有規(guī)律的節(jié)奏音樂可實(shí)現(xiàn)完美檢測。系統(tǒng)設(shè)計合理,性能穩(wěn)定,可靠性高,具有良好實(shí)用和推廣價值。?
參考文獻(xiàn)?
[1] 楊士穎.計算機(jī)音樂制作與數(shù)字音頻[M].上海:上海大學(xué)出版社,2001.?
[2] 胡慶鐘,李小剛,吳鈺淳.TMS320C55X DSP原理、應(yīng)用與設(shè)計[M].北京:機(jī)械工業(yè)出版社,2005.?
[3] 顧亦然,秦軍,王鎖平.幾種音樂識別算法的比較[J].南京郵電學(xué)報,1998,18(2).?
[4] 果永振,何遵文,畢志明.基于DSP實(shí)現(xiàn)語音端點(diǎn)檢測.[J].電聲技術(shù),2002(12).
