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

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

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

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

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

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

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

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