周琪芝 劉思言
摘 要:針對鋼琴音域?qū)拸V、音色豐富的頻域,本文提出了一種基于頻域分區(qū)的諧波峰值法。在原本諧波峰值法的基礎(chǔ)上,對鋼琴音高信號基于頻域分區(qū)進行預(yù)處理。在幅度濾波和諧波濾波后,用FFT定位基頻音高。經(jīng)實驗和仿真,證明該方法針對鋼琴音高信號具有較低的誤差率。
關(guān)鍵詞:頻域分區(qū);諧波峰值法;鋼琴音高識別
中圖分類號:J624文獻標(biāo)識碼:A文章編號:2096-0905(2023)10-00-03
一、背景
鋼琴因其音域?qū)拸V、音色豐富、音質(zhì)清亮、表現(xiàn)力強等特點,素有“樂器之王”的美稱,常作為音樂創(chuàng)作和表演的樂器進行使用。鋼琴的音高識別可以幫助音樂演奏者對鋼琴進行校音和調(diào)音。不同于以往人耳識別音高,利用音頻處理技術(shù)的音高識別能夠做到識別更加精確。隨著與人工智能的結(jié)合,音高識別也成為眾多領(lǐng)域的研究熱點[1-2]。
對鋼琴的音高識別研究可以追溯到語音識別技術(shù),主要分為時域處理和頻域處理。時域處理法通過分析時域上信號波形的周期峰值,來識別該段信號的音高。這類方法包括短時自相關(guān)法[3-4]、短時平均幅度差(Average Magnitude difference function,AMDF)法[5-6]。但時域處理法更容易受到噪聲的影響,且經(jīng)常出現(xiàn)半頻或倍頻的錯誤。頻域檢測法將信號轉(zhuǎn)換到頻域上,再對波形特征進行提取檢測。目前使用廣泛的有諧波峰值法[7]、置信度法[8]。小波變換法屬于時頻域檢測法,它通過對高頻處時間細(xì)分,低頻處頻率細(xì)分,整合信號細(xì)節(jié),實現(xiàn)音高識別[9]。
本文針對鋼琴音高的頻域,采取一種優(yōu)化后的諧波峰值法實現(xiàn)了對鋼琴的音高識別。
二、音高識別的基本原理和常用方法
(一)音高和十二平均律
樂音體系中各音的絕對準(zhǔn)確高度及其相互關(guān)系,被稱為音律。目前國際上廣泛采用的是十二平均律。其將一個音階按照1/12倍頻程劃分,每八度音為一個倍頻程,一個八度音階被劃分為12個半度音階。
鋼琴是一種通過十二平均律進行定音的鍵盤樂器,包括52個白鍵和36個黑鍵,一共88個音鍵組成。鋼琴涉及的音域低至27.5Hz,高至4186Hz,音域廣泛,幾乎囊括了樂音體系中的全部音高。通過上述十二平均律的半音規(guī)則,可以計算鋼琴各個鍵名對應(yīng)的半音頻率。
(二)基波和諧波
根據(jù)振動形式的不同將音分為兩種不同的形式:純音和復(fù)音。復(fù)音可以分解為多個不同頻率和振幅的單音的疊加,其中頻率最低的音稱為基音,其頻率叫作基頻,其物理意義為本征頻率,是物體振動形成的聲波中的最低頻率。其他的音稱為泛音,其頻率叫作泛頻,其物理意義為諧振頻率,是基音頻率的整數(shù)倍。
鋼琴作為弦樂器,其音是弦周期性振動產(chǎn)生的復(fù)合音,產(chǎn)生的波是幾種正弦波的集合。其中振動周期最長的波被稱為基波,基波的頻率稱為基頻。弦在振動產(chǎn)生基波后,振動并不會立即停止。由于弦兩端固定,振動產(chǎn)生的波在傳輸過程中不斷地碰撞反射,從而產(chǎn)生的頻率是基波頻率整數(shù)倍的諧波。諧波使得音樂信號有了不同的音色,諧波成分不同,所聽到的音色也就不同,越是豐富的諧波能使得音樂更加飽滿,更加華麗。
基波和諧波共同組成了鋼琴的音樂信號。而在時域上,基波和多次的諧波疊加,形成更加復(fù)雜的波形。波形的復(fù)雜會使得分辨音高更為困難。而在頻域上,基波和諧波的頻率呈現(xiàn)倍率關(guān)系,更利于系統(tǒng)識別出音高。
綜上可知,鋼琴弦振動產(chǎn)生的基波發(fā)出基音。在我們的研究中,我們過濾掉諧波,只識別基波頻率,達到音高識別的目的。
(三)音頻處理技術(shù)
1.信號數(shù)字化處理
日常生活中我們所感知到的音樂信號都是模擬信號,而利用計算機等對音樂信號進行處理,需要將連續(xù)的模擬信號轉(zhuǎn)化為離散的數(shù)字信號。采樣頻率越高,模擬信號的失真也越小。對于音樂信號,采樣頻率通常是8-10kHz。本文對鋼琴信號采樣頻率選取的為44.1kHz。
對鋼琴信號進行實時檢測時,模擬信號是一個線性時變信號,但這個變化對于頻率來說是緩慢的。故我們假設(shè)在一個很短的時間內(nèi),信號是平穩(wěn)的。通常這個時間段取值為10-30ms。
在進行數(shù)字化處理時,便是針對模擬信號進行分幀加窗操作。分幀加窗操作是指,使用一個窗函數(shù)在采樣后的信號上滑動,將其分成若干個短時信號,這些信號可視為平穩(wěn)信號,每個短時信號為一幀,其長度為幀長,每一幀的長度為10-30ms。常用的窗函數(shù)有矩形窗、漢寧窗和漢明窗等。
矩形窗屬于時間變量的零次冪窗,具有主瓣集中,旁瓣較高,并且伴有負(fù)旁瓣的特點,容易帶入高頻干擾和泄露。
漢寧窗又被稱為升余弦窗。相較于矩形窗,漢寧窗加寬并降低了主瓣,減小了旁瓣,有效減少了泄露和波動現(xiàn)象。由于其主瓣加寬,導(dǎo)致頻率分辨率下降。
漢明窗和漢寧窗一樣都是余弦窗,又被稱為改進升余弦窗。漢明窗相較于漢寧窗,旁瓣更小,旁瓣衰減速度更慢。
2.時域分析
音樂信號的時域特征包括短時能量、短時過零率、短時自相關(guān)函數(shù)、短時幅度差函數(shù)等。
短時能量:描繪了信號在時間上的變化。通過短時能量能夠分辨噪聲段、環(huán)境背景音和樂音。
短時過零率:反映了每一幀內(nèi)信號過零的次數(shù)。因為鋼琴信號具有固定的基頻,其過零率通常分布在一個固定的范圍內(nèi),而噪聲則不滿足,所以過零率也可以用于區(qū)分噪聲和音樂。
短時自相關(guān)函數(shù):相關(guān)函數(shù)描述了兩個信號之間的相似程度,有互相關(guān)函數(shù)和自相關(guān)函數(shù)。離散信號的短時自相關(guān)函數(shù)具有與其相同的周期,其與自身的相關(guān)性最大。故而對于一個周期信號而言,它的短時自相關(guān)函數(shù)必定在周期的整數(shù)倍出現(xiàn)最大值,這為利用其提取信號的基頻提供了基礎(chǔ)。
短時幅度差函數(shù):它在提供與短時自相關(guān)函數(shù)相似的作用的參量的同時,減小了短時自相關(guān)函數(shù)由于乘法運算而帶來的計算量。與短時自相關(guān)函數(shù)一樣,短時幅度差函數(shù)也具有周期性,但不同的是,短時幅度差函數(shù)在信號周期的整數(shù)倍處出現(xiàn)的是谷值,而短時自相關(guān)函數(shù)在信號周期的整數(shù)倍處出現(xiàn)的是峰值。
3.頻域分析
除了在時域上,在頻域上音樂信號也有眾多特征,可以用于基音檢測。常用的方法有短時傅里葉變換。與傅里葉變換(Fourier Transform,F(xiàn)T)一樣,它們都是通過將感興趣的信號從時域轉(zhuǎn)換到頻域進行研究的方法。短時傅里葉變換的優(yōu)點是,可以處理近似平穩(wěn)的信號,應(yīng)用更廣。
三、優(yōu)化的諧波峰值法
(一)諧波峰值法
鋼琴發(fā)音為復(fù)合音,通過檢測基音頻率,就可以得到當(dāng)前演奏的音高。諧波峰值法正是通過將預(yù)處理后的信號進行快速傅里葉變換(Fast Fourier Transform,F(xiàn)FT),轉(zhuǎn)換到頻域。通過檢測頻域上最大峰值,峰值所在位置的最大公因子即為當(dāng)前的基音。這是由于通常音樂信號除了基音外,還有豐富的諧波。因此,不能簡單地將頻譜中的最大峰值作為基頻,而要提取峰值序列中的最大公因子?!昂钊』簟蓖ㄟ^計算其自身的置信度,從而得到真實的音高。
(二)基于頻域分區(qū)的諧波峰值法
在實際情況中,鋼琴演奏的音中,幅度最大的音并不一定是基音。在鋼琴的低音區(qū),諧波頻率的幅度往往大于基音頻率的幅度;中音區(qū)諧波頻率的幅度與基音頻率的幅度相當(dāng);高音區(qū)基音頻率的幅度大于諧波頻率的幅度。因此,我們采取了一種基于頻域分區(qū)的諧波峰值法。
1.頻域分區(qū)
鋼琴演奏的基音集中在25Hz到4300Hz之間。通過濾波器將超過范圍的諧波過濾,可以增加檢測到基音的準(zhǔn)確性。按照88個基音的頻率,我們將25-4300Hz的頻段分割成88個分區(qū),每個分區(qū)對應(yīng)一個基音?;谑骄?,我們可知,基音之間呈指數(shù)上漲的規(guī)律。于是我們將區(qū)域的上屆定為fup=f×1.029,下屆定為fdown=f/1.029。其中,為基音頻率。
2.設(shè)定閾值
在音高的實時檢測中,信號除基音和諧波外,還有很多我們不感興趣的信號頻率。在頻域圖中,除了基波頻率、諧波頻率之外,還有許多頻率點對應(yīng)的幅度不為零。為了不被冗余信號影響,減少由于噪聲等因素導(dǎo)致的其他頻率分量,在頻域分區(qū)的基礎(chǔ)上,設(shè)定一個閾值,將頻域幅度在閾值以下的頻率分量幅度都置為零。通過將頻域上每個頻率點對應(yīng)的幅度值都取四次方,閾值即等于四次方后最大值的三分之一。
3.濾除諧波
過濾后信號中的諧波分量依然會影響基音的檢測。通過提取諧波頻率中最大公因子的方法,可以實現(xiàn)過濾諧波。先提取出信號中幅度最高的音頻,然后計算與其成1/2、1/3、1/4等倍數(shù)關(guān)系的頻率,若這些頻率的幅度均為零,則此最高的音頻為基頻,并刪除其相應(yīng)的諧波分量;若這些頻率中有一個幅度不為零,則幅度不為零的頻率中,頻率最小的為基頻,原最高音頻為諧波分量。綜上即可檢測出基頻信號。
四、實驗與仿真
本文以44.1kHz的采樣率對鋼琴音進行實時采集。采用漢明窗對信號進行分幀,并經(jīng)過基于頻域分區(qū)濾波的預(yù)處理。在幅度濾波和諧波濾波后,通過檢測最大幅度值所對應(yīng)頻率,識別音高。
(一)信號預(yù)處理
通過將音樂信號進行分幀加窗,將原本的時變信號以一定的幀長,劃分為不同幀。在短時間范圍內(nèi),每一幀的信號的特性基本保持不變及相對穩(wěn)定,可以看作是一個準(zhǔn)穩(wěn)態(tài)過程,即信號具有短時平穩(wěn)性。此后,再對每一幀信號進行濾波和基音識別。
(二)信號濾波
鋼琴樂音信號集中在25Hz到4300Hz之間,超出這個范圍的信號,不在我們的識別范圍內(nèi)。所以在進行音名識別之前,我們調(diào)用頻域分區(qū)濾波器,對信號進行濾波。經(jīng)過頻域分區(qū)濾波后噪聲信號明顯減少,得到質(zhì)量改善后的音樂信號。
最后對處理過的信號進行閾值濾波。在實驗中,設(shè)定的閾值為每個頻率點對應(yīng)的幅度值四次方后最大值的三分之一。
(三)音名識別
圖1所示是對A4鍵名所對應(yīng)音名經(jīng)頻域分區(qū)濾波和閾值濾波后的時域波形和頻域圖。
在88個鍵名中,我們隨機選取了其中20個進行測試。測試得到的頻率檢測結(jié)果如表1所示。
由表1可知,基于頻域分區(qū)的諧波峰值法識別音高誤差率低,且音高頻率越高,識別誤差率越低。這是由于低頻信號段鍵名的頻率較為集中,諧波分量不易過濾完全;高頻信號段鍵名的頻率分布更稀疏,諧波分量更易過濾。
五、結(jié)束語
本文針對鋼琴的音頻頻域,提出了一種優(yōu)化的諧波峰值法。在原本的諧波峰值法的基礎(chǔ)上,采用了頻域分區(qū)對采集的音高信號進行濾波。在濾波基礎(chǔ)上,運用諧波峰值法對鋼琴音高進行識別。實驗與仿真結(jié)果顯示,該方法對音高識別誤差率低。
參考文獻:
[1]欒極,馬太,王飛,等.插值采樣增強鋼琴音高識別能力的方法[J].數(shù)字技術(shù)與應(yīng)用,2014(06):3.
[2]翟景瞳,王玲,杜秀偉.改進的音高識別算法[J].計算機工程與應(yīng)用,2009,45(20):4.
[3]沈瑜,黨建武,王陽萍,等.加權(quán)短時自相關(guān)函數(shù)的基音周期估計算法[J].計算機工程與應(yīng)用,2012,48(35):1-6.
[4]郭淑婷,趙明輝.基于ACF的基音檢測算法[J].鄭州輕工業(yè)學(xué)院學(xué)報:自然科學(xué)版,2011,26(05):4.
[5]熊琦,杜旭,朱曉亮.一種基于短時平均幅度差的語音檢測算法[J].電聲技術(shù),2006(09):4.
[6]武良丹.基于小波變換與平均幅度差函數(shù)倒數(shù)的基音周期檢測算法[J].科學(xué)技術(shù)創(chuàng)新,2017(31):2.
[7]王杰,耿麗紅.基于諧波自相關(guān)的基音檢測[J].系統(tǒng)工程與電子技術(shù),2013,35(01):218-222.
[8]溫源.基音在語音識別中的應(yīng)用及提高識別系統(tǒng)速度的研究[D].中國科學(xué)院聲學(xué)研究所,2002.
[9]林琴,郭玉堂,劉亞楠.基于自相關(guān)平方函數(shù)與小波變換的基音檢測[J].計算機應(yīng)用,2009,29(05):1433-1436.
作者簡介:周琪芝(1981-),女,四川達州人,副教授,鋼琴演奏與教學(xué)專業(yè)。