陳小橋, 孫經(jīng)緯, 王子橋, 蔡靜宜
(武漢大學(xué) 電子信息學(xué)院, 武漢 430072)
機(jī)器智能化技術(shù)是科學(xué)技術(shù)發(fā)展的綜合性結(jié)果,與眾多學(xué)科發(fā)展密切相關(guān),對社會經(jīng)濟(jì)發(fā)展產(chǎn)生重大影響。機(jī)器人是先進(jìn)制造技術(shù)和自動化裝備的典型代表,是人造機(jī)器的“終極”形式,是多種高新技術(shù)發(fā)展成果的綜合集成,當(dāng)今社會越來越多的智能機(jī)器已經(jīng)被應(yīng)用在我們的生活中[1-2]。自1958年美國聯(lián)合控制公司研制出第一臺機(jī)械手以來,機(jī)械手在近幾十年發(fā)展迅速。同時,隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,機(jī)械手與智能應(yīng)用結(jié)合得更加緊密[3-4]。目前,機(jī)械手智能化在工業(yè)生產(chǎn)和科學(xué)研究方面應(yīng)用很廣,但在日常生活中鮮為人見,即使已有基于數(shù)控技術(shù)的彈琴機(jī)械手研究[5],但其單一的功能制約了應(yīng)用發(fā)展。因此,探索智能機(jī)械手的更多用途就愈顯重要。
本文研究了一款智能機(jī)械手,該機(jī)械手通過電動機(jī)驅(qū)動滑軌移動和手指按鍵,能夠進(jìn)行電子琴演奏。結(jié)合網(wǎng)絡(luò)上流行的聽歌識曲和樂譜識別功能,能自行演奏相應(yīng)歌曲,適用于公共場合表演、家庭娛樂和電子琴入門教學(xué)等方面,具有很大的應(yīng)用前景和市場潛力。
本系統(tǒng)可實(shí)現(xiàn)聽歌識曲、樂譜識別和演奏功能,系統(tǒng)功能框圖如圖1所示。圖中,機(jī)械手可通過對外界音源進(jìn)行錄音,處理音源后識別歌曲實(shí)現(xiàn)聽歌識曲功能。通過對樂譜進(jìn)行拍照,處理圖像后識別樂符實(shí)現(xiàn)樂譜識別功能。成功識別歌曲后,依據(jù)電子樂譜協(xié)議,驅(qū)動機(jī)械手彈奏電子琴,實(shí)現(xiàn)演奏功能[6]。
圖1 系統(tǒng)功能框圖
為實(shí)現(xiàn)智能機(jī)械手的聽歌識曲、樂譜識別和演奏功能,本系統(tǒng)分為核心平臺、控制平臺和執(zhí)行機(jī)構(gòu)3部分,系統(tǒng)結(jié)構(gòu)框圖如圖2所示。圖中,核心平臺用于實(shí)現(xiàn)人機(jī)交互以及聽歌識曲、樂譜識別功能,其中,顯示屏用于顯示交互式界面,攝像頭和拾音器分別用于樂譜拍攝和歌曲錄音,串口用于和控制平臺進(jìn)行通信。控制平臺用于控制執(zhí)行機(jī)構(gòu)的一系列動作,對機(jī)械手演奏過程進(jìn)行時序調(diào)配和資源調(diào)度,其中,PWM波控制電動機(jī)的轉(zhuǎn)速,控制信號控制電動機(jī)的方向,串口用于接收核心平臺指令,時鐘信號用于實(shí)現(xiàn)硬件時序的同步。執(zhí)行機(jī)構(gòu)用于實(shí)現(xiàn)機(jī)械手的演奏過程,通過驅(qū)動伺服電動機(jī)和舵機(jī),實(shí)現(xiàn)滑軌移動和機(jī)械手按鍵。
圖2 系統(tǒng)結(jié)構(gòu)框圖
2.2.1聽歌識曲功能
一首歌曲的聲紋信息是一個附屬有時間屬性的數(shù)字集合,該聲紋與人的指紋一樣,都是獨(dú)一無二的[7]。本系統(tǒng)采用基于樂曲聲紋的音樂檢索方式,通過實(shí)時錄制一段短時間的樂曲,提取聲紋信息,然后與數(shù)據(jù)庫中的聲紋進(jìn)行對比,返回最匹配的歌曲結(jié)果[8]。其本質(zhì)是一種音樂檢索,將原始歌曲的波形信號進(jìn)行時頻變換,得到時頻信號,再從時頻信號中提取出特定的聲紋信息,最后利用該聲紋信息進(jìn)行樂曲匹配。算法流程如圖3所示。
圖3 基于聲紋檢索的算法流程圖
(1) 將原始音樂波形由時域變換到頻域,為在頻譜圖中獲得時間和能量的關(guān)系,采用短時傅里葉變換(STFT):
(1)
式中:w[m]為窗函數(shù);n為時間序號。
考慮到實(shí)際工程的運(yùn)用,令窗口長度為R,STFT在N個等間隔頻率ωk=2πk/N對X(ejω,n)進(jìn)行抽樣,
k=0,1,…,N-1
(2)
式中,N≥R。變換之后得到圖4所示的頻譜圖。圖中,小黑點(diǎn)代表能量極大值點(diǎn)。
圖4 STFT變換頻譜圖
(2) 從頻譜圖中提取一系列的landmark,即頻譜圖中的能量峰值。根據(jù)STFT變換后的數(shù)據(jù)進(jìn)行能量計(jì)算:
E=|X(k,n)|
(3)
能量差分為:
E′(i,n)=E(i,n)-E(i-1,n),
i=1,2,…,N-1
(4)
式中:當(dāng)i=0時,E′(i,n)=0。
為找到頻譜圖中的能量極大值點(diǎn),首先找出參數(shù)大小為scope的能量最大元素位置,scope為每1幀的位移量,一般選擇10~40 ms之間。即找出點(diǎn)E(x,y)在范圍(i (3) 利用選定的landmark并使用Shazam算法構(gòu)造一系列指紋。targetzone是一個landmark構(gòu)造指紋的范圍,將選定的landmark和其target zone中所有l(wèi)andmark兩兩組合,構(gòu)成一個指紋。指紋由3部分構(gòu)成:2個landmark的頻率差、時間差和選定的landmark的時間。landmark的時間表示這個指紋出現(xiàn)的時刻。構(gòu)造指紋庫時,將提取的指紋放入指紋庫,指紋庫可以用散列表實(shí)現(xiàn),每個表項(xiàng)表示相同指紋對應(yīng)的音樂ID和time[9]。構(gòu)造指紋原理如圖5所示。 (a) 選定的landmark和其target zone (b) landmark兩兩組合構(gòu)造指紋 圖5 構(gòu)造指紋原理圖 圖5(b)為選定的landmark(t1,f1)和其targetzone中某個landmark(t2,f2)的組合,構(gòu)成指紋(t1,Δt,Δf),其中,Δt=t2-t1,Δf=f2-f1。 (4) 音樂檢索。從錄制的音樂提取特征指紋,與指紋庫中的指紋進(jìn)行比對,返回每一首歌曲的最大匹配程度,當(dāng)最高匹配度達(dá)到設(shè)定的閾值時,顯示匹配程度最高的歌曲為匹配結(jié)果[10]。 2.2.2樂譜識別功能 通過核心平臺攝像頭獲取樂譜圖像,對圖像進(jìn)行預(yù)處理,利用大津法全局閾值、RADON傾斜校正和SSIM(Structural SIMilarity)[11]相似度匹配等算法實(shí)現(xiàn)曲譜的識別。樂譜識別流程如圖6所示。 圖6 樂譜識別流程圖 (1) 曲譜照片預(yù)處理。 第1步,二值化、膨脹處理和邊緣檢測。首先使用大津法全局閾值將輸入的掃描圖像轉(zhuǎn)化為二值圖像;然后進(jìn)行膨脹處理,即對二值圖像進(jìn)行由一個稱為結(jié)構(gòu)元素的集合控制的加長或變粗的操作。為使相鄰文本和字符盡可能地連結(jié)成一個整體,可適當(dāng)增加膨脹次數(shù)和填充孔洞;再用Canny算子進(jìn)行邊緣檢測[12]。 第2步,Radon變換。Radon變換是將沿一條特定直線求函數(shù)積分值投影到Radon變換平面上,積分值在Radon變換平面上的位置由直線與原平面原點(diǎn)的距離及傾斜角度所決定。Radon變換面的構(gòu)造需要將原始函數(shù)沿圖像平面內(nèi)所有可能的直線進(jìn)行積分,然后將沿直線積分所得到的積分值投影到變換平面上對應(yīng)的點(diǎn)[13]。 第3步,旋轉(zhuǎn)。通過對Radon變換求得的積分值進(jìn)行排序,選取不小于最大積分值的80%的積分值,獲得其對應(yīng)的傾斜角度,取其平均值作為最終傾斜角度[14]。 (2) 譜線處理。檢測譜線之前先對變形進(jìn)行自動校正,將譜線沿水平方向“拉直”,使譜線的直線特征得以恢復(fù)和加強(qiáng),然后采用水平投影法確定譜線的位置并將其刪除[15-16]。 (3) 樂符識別。樂符識別使用SSIM相似度匹配算法來實(shí)現(xiàn),對每個樂符建立一個庫,將它們保存在本地庫中,然后使用SSIM評價體系,對待識別的樂符分別和庫中各個樂符進(jìn)行匹配,從而選取SSIM評價最高的樂符作為識別樂符的結(jié)果。 2.2.3演奏功能(電子樂譜協(xié)議) 本研究為電子樂譜制定了相應(yīng)的規(guī)則,電子樂譜協(xié)議規(guī)定:每首歌曲的電子琴譜信息存放在1個曲譜向量中,向量中每個元素都是一個32位二進(jìn)制數(shù),向量的長度為曲譜的長度。其中,每首曲子中的每1個音符用一個32位數(shù)表示,將這個32位數(shù)據(jù)封裝為1幀,每1數(shù)據(jù)幀都包含了1個音符的指法、音律和節(jié)拍信息。表1、2給出了電子樂譜協(xié)議的數(shù)據(jù)幀格式。 表1 數(shù)據(jù)幀格式 表2 鍵音/節(jié)拍與鍵碼對應(yīng)關(guān)系 注:“*”在音調(diào)左側(cè)表示降調(diào),在音調(diào)右側(cè)表示升調(diào) 根據(jù)協(xié)議框架編寫標(biāo)準(zhǔn)琴譜,控制平臺控制滑軌的移動和機(jī)械手指按鍵,實(shí)現(xiàn)演奏功能。演奏開始時,發(fā)送初始化幀,將滑軌配置在原點(diǎn)處;演奏結(jié)束時,發(fā)送結(jié)束幀,同時初始化滑軌,使滑軌回到原始起點(diǎn),避免每次演奏中出現(xiàn)的抖動偏差對下一次演奏造成影響。 系統(tǒng)基于英特爾凌動處理器的MinnowBoard Turbot嵌入式平臺,輔以Intel Genuino 101平臺、STM32F103控制芯片和羅技高清攝像頭,預(yù)裝Windows 10操作系統(tǒng)、Microsoft Visual Studio 2010集成開發(fā)環(huán)境、Keil uVision5和Matlab Runtime Library。系統(tǒng)測試分為聽歌識曲功能測試、樂譜識別功能測試和演奏功能測試。聽歌識曲功能測試和樂譜識別功能測試主要檢驗(yàn)聽歌識曲功能和樂譜識別功能以及聽歌識曲的成功概率。演奏功能測試主要檢驗(yàn)音樂識別成功后,機(jī)械手能否根據(jù)主控芯片發(fā)出的歌曲信息進(jìn)行演奏。 為測試聽歌識曲功能,系統(tǒng)提前收錄20首經(jīng)典歌曲。系統(tǒng)開機(jī)后,選擇聽歌識曲功能,開始錄音后播放其中任意一首歌曲,測試結(jié)果如表3所示。 從表3可以看出,程序在核心平臺上是可執(zhí)行的,聽歌識曲功能的成功概率在87.5%以上。需要說明的是,系統(tǒng)歌曲庫易于擴(kuò)展,能根據(jù)實(shí)際需要任意錄入歌曲,實(shí)現(xiàn)更豐富的歌曲識別功能。 表3 部分歌曲測試結(jié)果 為了測試樂譜識別功能,系統(tǒng)提前收錄一部分樂譜。以樂譜“稻香”為例,系統(tǒng)開機(jī)后,選擇樂譜識別功能,對樂譜進(jìn)行拍攝,如圖7所示。 圖7 樂譜拍攝過程 讀譜成功后選擇識譜,過程如圖8所示。 (a) 原始樂譜 (b) 預(yù)處理后的每個樂符 (c) 譜線刪除后的樂符識別結(jié)果 圖8(c)中,識別出的不同數(shù)字代表不同的樂符,通過與樂譜庫進(jìn)行比對即可識別。 在完成聽歌識曲或樂譜識別功能后,執(zhí)行機(jī)構(gòu)收到主控芯片發(fā)出的歌曲信息,控制滑軸和舵機(jī),帶動機(jī)械手進(jìn)行曲目演奏,演奏過程如圖9所示。測試結(jié)果表明,聽歌識曲和樂譜識別均有較高的識別率,并且能夠通過主控核心平臺向控制芯片傳輸歌曲信息,從而實(shí)現(xiàn)機(jī)械手的演奏。 圖9 正在進(jìn)行演奏的機(jī)械手 本文設(shè)計(jì)了一套完整的知音識譜機(jī)械手,可以流暢地完成樂曲演奏,實(shí)現(xiàn)聽歌識曲和樂譜識別功能。制定了一套全新的電子樂譜協(xié)議,規(guī)定以4 Bytes為1幀,每幀代表一個音符。對樂曲進(jìn)行頻譜分析,提取出每首樂曲的聲紋信息,通過在聲紋庫中進(jìn)行搜索比對完成聽歌識曲功能。利用攝像頭獲取樂譜圖像,對圖像進(jìn)行二值化、Radon變換和SSIM相似度匹配等算法完成樂譜識別功能。系統(tǒng)可以被應(yīng)用于樂器輔助教學(xué)和相關(guān)場合的歌曲演奏,也可以為機(jī)器智能化應(yīng)用拓展新的方向。3 系統(tǒng)測試
3.1 聽歌識曲功能測試
3.2 樂譜識別功能測試
3.3 演奏功能測試
4 結(jié) 語