一、研究的啟發及其意義
讓計算機聽懂樂曲并自動生成譜表是我從小的愿望。前不久我仍看到父親邊聽錄音邊記譜,聽一段,記一句,有時一句需要聽上幾遍,才能記下來,這使得他老人家工作勞累,真想用所學的計算機專業知識去幫他解決如此繁雜的事情。另外,在我學習揚琴的過程中,也遇到類似的難題——在網上學習中國音樂學院揚琴教授項祖華和李玲玲的揚琴曲時,被他們諳熟動聽的名曲演奏陶醉,希望找到相應的曲譜來練習,但搜來搜去并無結果,于是便開始研究識譜軟件。
酷我MP3伴侶是一款音樂識別軟件。它應用音頻指紋技術,根據旋律可準確識別歌名、歌手、專輯名等信息。這主要是針對在網上搜索海量的音樂文件,不具備識譜功能。目前,有一款曲譜編輯軟件,但它只能識別電子琴這一種有MIDI音樂接口的音頻,對MIDI文件可以轉換簡譜或五線譜。但對于其他樂器(鋼琴或琵琶等民族樂器)產生的音頻文件,就無法轉換。比如從網上下載或錄制的樂曲則無法轉換并產生相應譜表。筆者將能提供這一功能的系統初步命名為基于樂器演奏的樂音識別系統,并開始了通過計算機程序設計與數據信號處理的學習和研究。
此項研究對所有音樂創作領域的作曲人士和眾多熱愛音樂的人有著重大意義,也將隨著這項研究的完成而節省大量的精力、時間、財力,從而提高工作效率。所以能夠通過使用計算機程序來自動識別演奏或演唱的樂曲并自動完成樂譜創作,將會使音樂人創作效率得到很大提高,并能極大地激發創作靈感,改變目前因為手稿寫樂譜的不便而導致創作效率低甚至影響靈感發揮的不良狀況。樂音識別這一技術在音樂創作中有很重要的實用價值。
二、國內外研究現狀
現有的樂音識別系統有很多,如《調音之王》弦樂器體系?穴包括提琴、吉它、古箏、三弦、琵琶、二胡等?雪,樂器聲音測試,頻譜,聲音標準,檢測,弦樂器學習的好幫手,是一個完整的自動化的樂音識別系統,但卻沒有樂譜自動生成功能;再有《樂音3.0》可通過外接MIDI音源、模擬MIDI鍵盤作曲,但對于除電子琴外的其他樂器演奏的音源,就無法產生相應的樂譜。
?。玻埃埃的暝凇稑芬糇R別方法及應用》①一文中提出能使計算機聽懂樂器(如鋼琴)的演奏并自動譜曲,即根據錄入的鋼琴演奏曲產生相應的五線譜表,如圖1所示。另外,在2009年《樂音音符基頻識別》②一文中,通過語音信號的短時能量和過零率來確定語音的端點以及分割音節,進而通過短時自相關函數法來提取基音周期。
在研究樂音識別技術及應用的基礎上,筆者提出目前該系統的不足之處:五線譜表中無小節線,也無終止符號,而且無法滿足只懂簡譜的廣大用戶的需求,更重要的是,此項研究沒有繼續完成,也沒有投入使用。就此對以上問題展開研究,并用另一種有效可行的方法及算法加以驗證,從而進一步改善原有的樂音識別系統。
目前以樂音音符識別為目的,并完成自動樂曲創作的研究不多,有關樂音處理方面的研究大多局限在樂音的數字采樣、濾波、音效處理、編輯等。在音符錄入方面,則一般使用MDII鍵盤簡單映射實現,并不涉及研究的樂音音符?穴音高?雪的識別。
三、樂音識別系統
基于樂器演奏的樂音識別的過程,是根據樂器演奏音頻輸入自動產生相應的音樂譜表?穴簡譜或五線譜?雪,即通過一系列的信號和數據處理過程將原始音頻信息轉換成為符號表示的樂譜信息,從而實現樂音識別的功能。
對樂器演奏信息的獲取和處理有多種方法,可以是一個在線錄制的樂曲,也可以自己錄制。處理的主要目的是從音頻文件中提取出表達音樂旋律的特征信號。對信號的處理過程使用時域方法、頻域方法或時域頻域相結合的處理方法進行音符分割、音高跟蹤,得到旋律特征數據序列,再以特定的組織方式將旋律特征序列作為匹配譜表的輸入,在提前錄制好的單音符數據庫中進行旋律特征匹配,從而產生相應的譜表。
本文的工作面向樂音識別中樂器演奏信號處理,即對樂器演奏音頻信號進行處理,獲取旋律特征信息,并將旋律信息表示為一種合理的中間格式,可以直接或變換后用于不同的樂音識別系統,進行譜表的構造。
樂器演奏音頻處理方法
對樂器演奏音頻信號的處理方法可以采用一般對語音信號分析處理的方法, 但又有所不同:語音信號處理針對目的的不同,處理的重點與具體采用的方法也不同。我對樂器演奏音頻處理的過程分為三個部分:
1.預處理
預處理部分包括錄音、降噪、整流、低通濾波、計算短時幀能量等操作。一般使用聲卡和麥克風進行錄音采樣來得到數字化的樂器演奏音頻數據。樂器發聲基頻范圍依據不同的樂器而不同,基音頻串范圍最寬的是鋼琴,由27.5Hz—4136Hz以內,綜合考慮系統所需的數據精度和計算復雜度,確定了預處理程序音頻采集格式為22025Hz/8bit/momo,數字化后去除信號直流分量。
目前,筆者對數字化的音頻信息只做簡單低通濾波,因為使用的是在線方式將優質的樂器演奏曲子錄制了其中5秒的一段作為實驗測試的音頻數據。
4e2a4f06fb0fa32ceb669ad68815774b第一步:錄音
可用Windows自帶的“錄音機”或專門的音頻處理軟件CoolEdit或Adobe Audition的錄制即可。
第二步:降噪
在實際應用環境中,作曲人士大多使用現場錄制樂器聲音或在線錄音作為輸入數據。一般面對的條件是配置聲卡的個人電腦和普通的麥克風,且無法避免環境噪聲的干擾。所以,如果是現聲錄音,必須對輸入信號做降噪處理。
降噪的主要目的是為了有利于后續的音符分割和音高跟蹤,可以用音頻處理軟件Cool Edit或Adobe Audition中的降噪功能簡單而有效地對音頻信號的噪聲進行降噪處理。如果是在線錄制的音頻,由于質量高,不降噪也可。
由于我們的關鍵目的是將樂器的樂音轉換為樂譜,而樂音與樂譜的一些特性,決定了對錄制的音頻文件不需太高的要求,只要沒有明顯的噪聲即可。
第三步:二次處理
音頻信號進一步處理步驟:①對音頻信號全波整流;②對整流信號進行低通濾;③計算短時幀能量。
選擇一個合適的幀長對音頻信號進行分幀,得到一個二維矩陣frame(每行對應一幀數據,矩陣行數等于幀數,列數等于幀長)。計算每一個短時能量的公式如下:
?。ビ嬎汩T限
?。牛剑螅酰?穴frame,2?雪/lf;
?。裕剑?觹?眼sum?穴E?雪/length?穴E?雪?演;
?。牵剑纾颍幔洌椋澹睿?穴E?雪;
?。ビ嬎隳芰刻荻?,選取上升快速的點,與高能條件結合,共同確定特征區域。
Gm=1.5?觹{sum[abs?穴G?雪]/length?穴G?雪};
2.利用音頻特征點的檢測實現音符的準確定位
如何準確、有效地進行音符的準確定位(即音符分割), 是樂音識別系統中最困難,也是最為關鍵的問題。對于樂器演奏的音符分割的處理相對簡化,可以采用語音識別端點檢測類似方法。常用的端點檢測方法有基于能量、基于能量與過零率、基于信息嫡、基于頻域特征等。
根據樂曲的旋律及對語譜圖(如圖2下半部分所示)的觀察和分析,筆者發現:語譜圖中表現出所有的音符的音調都表示出深色的縱向條紋。因此可以采用特征點檢測的音符分割方法,使用時域、頻域與最高能量相結合的方法,既簡化計算過程,又可以比較有效而準確地進行音符分割。
本系統中實驗所用音頻為普通揚琴演奏的一段練習曲(本文稱為示范曲)。語譜圖的橫坐標是時間,縱坐標是頻率,坐標點值為語音數據能量。由于是采用二維平面表達三維信息,所以能量值的大小是通過顏色來表示的,顏色深,表示該點的語音能量越強。
首先采用基于能量跟蹤的方法作為第一級,由于有效地進行了降噪處理,信號有較高的信噪比。這種情況下,通過計算信號的短時能量,就可以通過能量跟蹤找到每個音符語音段的開始及結束時間。有了音符分割的數據,音高跟蹤的工作也得以簡化并更加有效。第二級的音符分割基于音高跟蹤的結果得到,目的是把第一級沒有分割開的連奏音符根據音高顯著變化特征,即基音頻率不同而進一步分割開來,這樣,就由兩級音符分割得到了每個獨立音符的起始和結束時間?穴以幀序號表示?雪,由音高跟蹤得到了每個音符的基音頻率值。
①確定能量門限值
一段樂音音頻中高能的波峰有多個,高能幀通常是高能波峰的標志,也是音符的起點。選擇一個合適的門限可以篩選出若干高能幀,即可確定出若干音頻信號特征點(即音符的音高)。為使特征點選擇方法用于多種音頻,門限可取一個相對值:即取平均幀能量的若干倍作為能量門限,N是幀數;倍數β越大,得到的特征點就越少。
能量門限的取值相當關鍵,若取得過大,則會漏掉某些弱音,若取得過小,則多出許多同音,這樣的話,產生出來的樂譜
就不理想了。因此結合樂譜中的最小音長,就可以解決。
②梯度門限選擇
利用幀能量變化的梯度可以確定能量的變化速度。使用梯度門限與能量門限結合可以使選擇的重點更穩定。
?。常畼纷V表示
計算出兩個特征點之間的距離(時間長短),就可以確定前一音符的時值,即音長(如表1所示,本文以90拍為例),將其暫存,再取出特征點所在頻率,與音符頻率對照表(如表2所示,本文以G調為例)對照,將得到的音符序列的音名和音長按照一定的組織結構將這些數據表示成中間格式,進行
旋律表達,即可得到譜表。
示范曲調號、拍號及速度:
?。保剑?2/41=90
四、系統目標
通過采用基于Matlab的分析、處理、識別技術,并將分析處理識別結果封裝成DLL文件,通過VB6.0調用,功能簡單、界面直觀、可靠性高。最后在用VB設計的應用程序界面上:先打開一個錄制好的音頻文件,其格式為:22050Hz采樣率、16位單聲道的Wave波形文件(擴展名為.wav)(其他格式的音頻文件由于本系統目前還未擴展其功能,可先通過千千靜聽等一些音頻播放或∑音頻編輯軟件方便轉換),顯示播放的聲音波形(本文以G調的一段揚琴曲為例,預期結果如圖3所示),可以單擊“播放”按鈕聽樂音,單擊“轉換為樂譜”
可以轉換成相應的樂譜(五線譜與簡譜均可)。
下一步研究:本文提出了基于樂器演奏的樂音識別系統的研究方法及算法,并使用Matlab與VB語言結合設計出該系統的前半部分,接下來的工作是:續實現并完成其余功能,不斷改善該系統,使之成為一個適合多種調式的、多功能的,適合各種樂器,甚至是基于演唱的樂音都能識別得更完善、更
健全的自動樂譜生成系統。
參考文獻
?眼1?演王素立、高潔、孫新德《Matlab混合編程與工程應用》,北京:清華大學出版社2008年版。
?眼2?演繆天瑞《律學》,北京:人民音樂出版社1996年版。
?、傩靽鴳c、楊丹、王彬潔、文俊浩《樂音識別方法及應用》,《計算機應用》2005年第4期,第968—970頁。
②吳晶晶、孟玲玲《樂音音符基頻識別》,《電子測量技術》2009年第4期,第126—128頁。
萬景 玉溪師范學院信息技術工程學院講師(責任編輯 榮英濤)