陳小橋, 孫經緯, 王子橋, 蔡靜宜
(武漢大學 電子信息學院, 武漢 430072)
機器智能化技術是科學技術發(fā)展的綜合性結果,與眾多學科發(fā)展密切相關,對社會經濟發(fā)展產生重大影響。機器人是先進制造技術和自動化裝備的典型代表,是人造機器的“終極”形式,是多種高新技術發(fā)展成果的綜合集成,當今社會越來越多的智能機器已經被應用在我們的生活中[1-2]。自1958年美國聯(lián)合控制公司研制出第一臺機械手以來,機械手在近幾十年發(fā)展迅速。同時,隨著網絡技術的快速發(fā)展,機械手與智能應用結合得更加緊密[3-4]。目前,機械手智能化在工業(yè)生產和科學研究方面應用很廣,但在日常生活中鮮為人見,即使已有基于數(shù)控技術的彈琴機械手研究[5],但其單一的功能制約了應用發(fā)展。因此,探索智能機械手的更多用途就愈顯重要。
本文研究了一款智能機械手,該機械手通過電動機驅動滑軌移動和手指按鍵,能夠進行電子琴演奏。結合網絡上流行的聽歌識曲和樂譜識別功能,能自行演奏相應歌曲,適用于公共場合表演、家庭娛樂和電子琴入門教學等方面,具有很大的應用前景和市場潛力。
本系統(tǒng)可實現(xiàn)聽歌識曲、樂譜識別和演奏功能,系統(tǒng)功能框圖如圖1所示。圖中,機械手可通過對外界音源進行錄音,處理音源后識別歌曲實現(xiàn)聽歌識曲功能。通過對樂譜進行拍照,處理圖像后識別樂符實現(xiàn)樂譜識別功能。成功識別歌曲后,依據(jù)電子樂譜協(xié)議,驅動機械手彈奏電子琴,實現(xiàn)演奏功能[6]。

圖1 系統(tǒng)功能框圖
為實現(xiàn)智能機械手的聽歌識曲、樂譜識別和演奏功能,本系統(tǒng)分為核心平臺、控制平臺和執(zhí)行機構3部分,系統(tǒng)結構框圖如圖2所示。圖中,核心平臺用于實現(xiàn)人機交互以及聽歌識曲、樂譜識別功能,其中,顯示屏用于顯示交互式界面,攝像頭和拾音器分別用于樂譜拍攝和歌曲錄音,串口用于和控制平臺進行通信。控制平臺用于控制執(zhí)行機構的一系列動作,對機械手演奏過程進行時序調配和資源調度,其中,PWM波控制電動機的轉速,控制信號控制電動機的方向,串口用于接收核心平臺指令,時鐘信號用于實現(xiàn)硬件時序的同步。執(zhí)行機構用于實現(xiàn)機械手的演奏過程,通過驅動伺服電動機和舵機,實現(xiàn)滑軌移動和機械手按鍵。

圖2 系統(tǒng)結構框圖
2.2.1聽歌識曲功能
一首歌曲的聲紋信息是一個附屬有時間屬性的數(shù)字集合,該聲紋與人的指紋一樣,都是獨一無二的[7]。本系統(tǒng)采用基于樂曲聲紋的音樂檢索方式,通過實時錄制一段短時間的樂曲,提取聲紋信息,然后與數(shù)據(jù)庫中的聲紋進行對比,返回最匹配的歌曲結果[8]。其本質是一種音樂檢索,將原始歌曲的波形信號進行時頻變換,得到時頻信號,再從時頻信號中提取出特定的聲紋信息,最后利用該聲紋信息進行樂曲匹配。算法流程如圖3所示。

圖3 基于聲紋檢索的算法流程圖
(1) 將原始音樂波形由時域變換到頻域,為在頻譜圖中獲得時間和能量的關系,采用短時傅里葉變換(STFT):
(1)
式中:w[m]為窗函數(shù);n為時間序號。
考慮到實際工程的運用,令窗口長度為R,STFT在N個等間隔頻率ωk=2πk/N對X(ejω,n)進行抽樣,

k=0,1,…,N-1
(2)
式中,N≥R。變換之后得到圖4所示的頻譜圖。圖中,小黑點代表能量極大值點。

圖4 STFT變換頻譜圖
(2) 從頻譜圖中提取一系列的landmark,即頻譜圖中的能量峰值。根據(jù)STFT變換后的數(shù)據(jù)進行能量計算:
E=|X(k,n)|
(3)
能量差分為:
E′(i,n)=E(i,n)-E(i-1,n),
i=1,2,…,N-1
(4)
式中:當i=0時,E′(i,n)=0。
為找到頻譜圖中的能量極大值點,首先找出參數(shù)大小為scope的能量最大元素位置,scope為每1幀的位移量,一般選擇10~40 ms之間。即找出點E(x,y)在范圍(i (3) 利用選定的landmark并使用Shazam算法構造一系列指紋。targetzone是一個landmark構造指紋的范圍,將選定的landmark和其target zone中所有l(wèi)andmark兩兩組合,構成一個指紋。指紋由3部分構成:2個landmark的頻率差、時間差和選定的landmark的時間。landmark的時間表示這個指紋出現(xiàn)的時刻。構造指紋庫時,將提取的指紋放入指紋庫,指紋庫可以用散列表實現(xiàn),每個表項表示相同指紋對應的音樂ID和time[9]。構造指紋原理如圖5所示。 (a) 選定的landmark和其target zone (b) landmark兩兩組合構造指紋 圖5 構造指紋原理圖 圖5(b)為選定的landmark(t1,f1)和其targetzone中某個landmark(t2,f2)的組合,構成指紋(t1,Δt,Δf),其中,Δt=t2-t1,Δf=f2-f1。 (4) 音樂檢索。從錄制的音樂提取特征指紋,與指紋庫中的指紋進行比對,返回每一首歌曲的最大匹配程度,當最高匹配度達到設定的閾值時,顯示匹配程度最高的歌曲為匹配結果[10]。 2.2.2樂譜識別功能 通過核心平臺攝像頭獲取樂譜圖像,對圖像進行預處理,利用大津法全局閾值、RADON傾斜校正和SSIM(Structural SIMilarity)[11]相似度匹配等算法實現(xiàn)曲譜的識別。樂譜識別流程如圖6所示。 圖6 樂譜識別流程圖 (1) 曲譜照片預處理。 第1步,二值化、膨脹處理和邊緣檢測。首先使用大津法全局閾值將輸入的掃描圖像轉化為二值圖像;然后進行膨脹處理,即對二值圖像進行由一個稱為結構元素的集合控制的加長或變粗的操作。為使相鄰文本和字符盡可能地連結成一個整體,可適當增加膨脹次數(shù)和填充孔洞;再用Canny算子進行邊緣檢測[12]。 第2步,Radon變換。Radon變換是將沿一條特定直線求函數(shù)積分值投影到Radon變換平面上,積分值在Radon變換平面上的位置由直線與原平面原點的距離及傾斜角度所決定。Radon變換面的構造需要將原始函數(shù)沿圖像平面內所有可能的直線進行積分,然后將沿直線積分所得到的積分值投影到變換平面上對應的點[13]。 第3步,旋轉。通過對Radon變換求得的積分值進行排序,選取不小于最大積分值的80%的積分值,獲得其對應的傾斜角度,取其平均值作為最終傾斜角度[14]。 (2) 譜線處理。檢測譜線之前先對變形進行自動校正,將譜線沿水平方向“拉直”,使譜線的直線特征得以恢復和加強,然后采用水平投影法確定譜線的位置并將其刪除[15-16]。 (3) 樂符識別。樂符識別使用SSIM相似度匹配算法來實現(xiàn),對每個樂符建立一個庫,將它們保存在本地庫中,然后使用SSIM評價體系,對待識別的樂符分別和庫中各個樂符進行匹配,從而選取SSIM評價最高的樂符作為識別樂符的結果。 2.2.3演奏功能(電子樂譜協(xié)議) 本研究為電子樂譜制定了相應的規(guī)則,電子樂譜協(xié)議規(guī)定:每首歌曲的電子琴譜信息存放在1個曲譜向量中,向量中每個元素都是一個32位二進制數(shù),向量的長度為曲譜的長度。其中,每首曲子中的每1個音符用一個32位數(shù)表示,將這個32位數(shù)據(jù)封裝為1幀,每1數(shù)據(jù)幀都包含了1個音符的指法、音律和節(jié)拍信息。表1、2給出了電子樂譜協(xié)議的數(shù)據(jù)幀格式。 表1 數(shù)據(jù)幀格式 表2 鍵音/節(jié)拍與鍵碼對應關系 注:“*”在音調左側表示降調,在音調右側表示升調 根據(jù)協(xié)議框架編寫標準琴譜,控制平臺控制滑軌的移動和機械手指按鍵,實現(xiàn)演奏功能。演奏開始時,發(fā)送初始化幀,將滑軌配置在原點處;演奏結束時,發(fā)送結束幀,同時初始化滑軌,使滑軌回到原始起點,避免每次演奏中出現(xiàn)的抖動偏差對下一次演奏造成影響。 系統(tǒng)基于英特爾凌動處理器的MinnowBoard Turbot嵌入式平臺,輔以Intel Genuino 101平臺、STM32F103控制芯片和羅技高清攝像頭,預裝Windows 10操作系統(tǒng)、Microsoft Visual Studio 2010集成開發(fā)環(huán)境、Keil uVision5和Matlab Runtime Library。系統(tǒng)測試分為聽歌識曲功能測試、樂譜識別功能測試和演奏功能測試。聽歌識曲功能測試和樂譜識別功能測試主要檢驗聽歌識曲功能和樂譜識別功能以及聽歌識曲的成功概率。演奏功能測試主要檢驗音樂識別成功后,機械手能否根據(jù)主控芯片發(fā)出的歌曲信息進行演奏。 為測試聽歌識曲功能,系統(tǒng)提前收錄20首經典歌曲。系統(tǒng)開機后,選擇聽歌識曲功能,開始錄音后播放其中任意一首歌曲,測試結果如表3所示。 從表3可以看出,程序在核心平臺上是可執(zhí)行的,聽歌識曲功能的成功概率在87.5%以上。需要說明的是,系統(tǒng)歌曲庫易于擴展,能根據(jù)實際需要任意錄入歌曲,實現(xiàn)更豐富的歌曲識別功能。 表3 部分歌曲測試結果 為了測試樂譜識別功能,系統(tǒng)提前收錄一部分樂譜。以樂譜“稻香”為例,系統(tǒng)開機后,選擇樂譜識別功能,對樂譜進行拍攝,如圖7所示。 圖7 樂譜拍攝過程 讀譜成功后選擇識譜,過程如圖8所示。 (a) 原始樂譜 (b) 預處理后的每個樂符 (c) 譜線刪除后的樂符識別結果 圖8(c)中,識別出的不同數(shù)字代表不同的樂符,通過與樂譜庫進行比對即可識別。 在完成聽歌識曲或樂譜識別功能后,執(zhí)行機構收到主控芯片發(fā)出的歌曲信息,控制滑軸和舵機,帶動機械手進行曲目演奏,演奏過程如圖9所示。測試結果表明,聽歌識曲和樂譜識別均有較高的識別率,并且能夠通過主控核心平臺向控制芯片傳輸歌曲信息,從而實現(xiàn)機械手的演奏。 圖9 正在進行演奏的機械手 本文設計了一套完整的知音識譜機械手,可以流暢地完成樂曲演奏,實現(xiàn)聽歌識曲和樂譜識別功能。制定了一套全新的電子樂譜協(xié)議,規(guī)定以4 Bytes為1幀,每幀代表一個音符。對樂曲進行頻譜分析,提取出每首樂曲的聲紋信息,通過在聲紋庫中進行搜索比對完成聽歌識曲功能。利用攝像頭獲取樂譜圖像,對圖像進行二值化、Radon變換和SSIM相似度匹配等算法完成樂譜識別功能。系統(tǒng)可以被應用于樂器輔助教學和相關場合的歌曲演奏,也可以為機器智能化應用拓展新的方向。




3 系統(tǒng)測試
3.1 聽歌識曲功能測試

3.2 樂譜識別功能測試




3.3 演奏功能測試

4 結 語