郭之亨,周 華,李良榮
(1.貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽(yáng) 550025;2.貴州電子信息職業(yè)技術(shù)學(xué)院 通信工程系,貴州 凱里 556000)
隨著我國(guó)經(jīng)濟(jì)的持續(xù)快速發(fā)展,百姓的生活水平不斷提高,人們已不僅滿(mǎn)足于物質(zhì)生活方面的需求,而是更多的轉(zhuǎn)向精神文化生活層面。作為精神生活重要組成部分的,各種形式的音樂(lè)在民眾中扮演著越來(lái)越重要的角色。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,很多音樂(lè)的處理是通過(guò)計(jì)算機(jī)完成的[1],之前已有大量的文章是運(yùn)用Matlab來(lái)研究音樂(lè)的,但都不是研究音符實(shí)時(shí)顯示的。本文借助Matlab軟件,通過(guò)簡(jiǎn)易諧波峰值法算法[2]及時(shí)將樂(lè)器發(fā)出的樂(lè)音轉(zhuǎn)變?yōu)楹?jiǎn)譜音符并實(shí)時(shí)顯示出來(lái),這將有助于人們進(jìn)一步了解和學(xué)習(xí)音樂(lè),降低音樂(lè)學(xué)習(xí)門(mén)檻,有很強(qiáng)的現(xiàn)實(shí)意義。
簡(jiǎn)譜分字母簡(jiǎn)譜和數(shù)字簡(jiǎn)譜[3],本文所說(shuō)的簡(jiǎn)譜皆指數(shù)字簡(jiǎn)譜,而本文中提到的各頻率對(duì)應(yīng)的音符皆為C調(diào)下的音符。
一般來(lái)說(shuō),構(gòu)成簡(jiǎn)譜的基本要素中最重要的是“音的高低”和“音的長(zhǎng)短”。表示音的高低的基本符號(hào),用7個(gè)阿拉拍數(shù)字標(biāo)記。它們的寫(xiě)法和讀法如表1所示[4]。音的長(zhǎng)短是在基本音符的基礎(chǔ)上加短橫線(xiàn)、延音線(xiàn)等符號(hào)來(lái)表示的。
表1 簡(jiǎn)譜音符及讀音
每個(gè)不同的音調(diào)對(duì)應(yīng)著不同的音符。而音調(diào)由基音頻率決定[5],比如音符“3”對(duì)應(yīng) 659 Hz,音符“4”對(duì)應(yīng) 698 Hz,所以音符的顯示,首先是要準(zhǔn)確提取出每個(gè)樂(lè)音的基波頻率[6],進(jìn)而通過(guò)一定的數(shù)學(xué)關(guān)系轉(zhuǎn)化成數(shù)字音符表示。本設(shè)計(jì)采取諧波峰值法提取基波頻率,該算法依據(jù)的原理是每個(gè)樂(lè)音經(jīng)傅里葉變換后其基波頻率對(duì)應(yīng)的幅值最大[7]。給數(shù)字音符添上相應(yīng)短橫線(xiàn),附點(diǎn)等就可完成音長(zhǎng)短的表示。表2所示給出C調(diào)各音符對(duì)應(yīng)頻率值[8]。
音調(diào)顯示:本次實(shí)驗(yàn),首先將待處理的音樂(lè)片段錄入到電腦里,實(shí)驗(yàn)過(guò)程中采樣頻率為16 000 Hz,采樣時(shí)間為8 s。將存入電腦的音頻輸入Matlab軟件中,對(duì)其分段(每段時(shí)長(zhǎng)125 ms)進(jìn)行快速傅里葉變換,從頻譜中找到幅度最大的譜線(xiàn),對(duì)應(yīng)頻點(diǎn)與頻率分辨率乘積即為所求基波頻率。一個(gè)時(shí)長(zhǎng) (125 ms)的音頻經(jīng)快速傅里葉變換之后的頻譜圖如圖1所示。
表2 C調(diào)各音符頻率值對(duì)照表Tab.2 The frequency of each C tone note comparison table
圖1時(shí)長(zhǎng)125 ms的音頻快速傅里葉變換頻譜圖Fig.1 The frequency spectrogram of 125 ms audio FFT
對(duì)應(yīng)Matlab程序如下:
fs=16000; %取樣頻率16 000 Hz
duration=8; %錄音時(shí)間8 s
pause;
x=wavrecord(duration*fs,fs); %進(jìn)行錄音,x 為音頻信號(hào)
y=[]; %建立一個(gè)名為y的空數(shù)組,用于存放基波頻率值
for i=1:2000:(length(x)-1999) %對(duì)信號(hào)進(jìn)行分段
y=[y,2*min(find(abs(fft(x(i:i+1999,:)))==max(abs(fft(x(i:i+1999,:))))))];
end %使用 abs(fft())對(duì)信號(hào)分段進(jìn)行 fft變換并取幅值,用max()和find()函數(shù)找出每段最大譜線(xiàn)及其對(duì)應(yīng)的頻點(diǎn),對(duì)應(yīng)頻點(diǎn)乘以2即為每段基波頻率,將結(jié)果存于y中
取兩個(gè)相鄰音符頻率的平均值為分界,若頻率低于平均值則顯示為相鄰兩個(gè)音符中,音調(diào)較低的音符,反之則顯示為二者中較高的音符。如音符“3”、“4”對(duì)應(yīng)頻率分別為329 Hz和349 Hz,平均值為339 Hz,則頻率在329~339 Hz之間的皆顯示為“3”,在339~349Hz之間的皆顯示為“4”。本次實(shí)驗(yàn)研究的頻率段為250~1990 Hz,超出該頻段對(duì)應(yīng)的音符皆為休止符“0”。
音的長(zhǎng)短顯示:待處理音頻,每125 ms進(jìn)行一次快速傅里葉變換。一般四分音符持續(xù)時(shí)間為400~500 ms,這里設(shè)定為500 ms[5]。八分音符持續(xù)時(shí)間為四分音符的一半,而十六分音符持續(xù)時(shí)間又為八分音符的一半。所以每次快速傅里葉變換之后提取的音符應(yīng)為十六分音符。本次設(shè)計(jì)以四分音符為一拍,每小節(jié)四拍,每小節(jié)之間用小節(jié)線(xiàn)“|”隔開(kāi)。若兩相鄰音符相同,則合并為一個(gè)持續(xù)時(shí)間是其二倍的上一節(jié)音符。如“11”合并為“1”。如表3所示為音符“1”的各時(shí)長(zhǎng):
表3 音符“1”的各時(shí)長(zhǎng)表示形式Tab.3 Each length of time displaying of note “1”
由于Matlab命令窗口中無(wú)法顯示某些音符格式,對(duì)此本次設(shè)計(jì)做了一些調(diào)整,以音符“1”為例,如表4所示。
表4 格式對(duì)照表Tab.4 Format table
圖2和圖3所示為對(duì)一段8 s音頻檢測(cè)之后所得到的各分段基音頻率及最終的音符顯示。
圖2一段8 s音頻經(jīng)Matlab處理之后所得各分段基因頻率(截圖)Fig.2 The fundamental frequency of each segment after a 8 s audio processed by the Matlab (screenshot)
上述結(jié)果很好地區(qū)分顯示了各音符的音調(diào)高低和時(shí)長(zhǎng),按每四拍一個(gè)小節(jié)準(zhǔn)確劃分成4個(gè)小節(jié),取得了預(yù)期效果。
我們正在研究翻譯工具,將圖3所示數(shù)據(jù)翻譯成圖4所示的音樂(lè)簡(jiǎn)譜:
圖4 Matlab數(shù)據(jù)翻譯的音樂(lè)簡(jiǎn)譜Fig.4 Numbered musical notation translated by the Matlab
本次設(shè)計(jì)比較準(zhǔn)確的提取出了被測(cè)音頻的基音頻率,并將其轉(zhuǎn)化為對(duì)應(yīng)音符顯示,其重點(diǎn)在于基音頻率的提取。本次設(shè)計(jì)只能提取單獨(dú)一種樂(lè)器發(fā)音時(shí)的基波頻率,對(duì)多種樂(lè)器同時(shí)發(fā)出的混合音則失效,這是將來(lái)努力研究、改進(jìn)的方向。本次設(shè)計(jì)在一些地方進(jìn)行了簡(jiǎn)化處理,比如規(guī)定采樣時(shí)間為一固定時(shí)間,文中音符全為C調(diào)下的音符,每四拍為一小節(jié)。這樣做使得程序更加簡(jiǎn)潔,軟件運(yùn)行起來(lái)也更加流暢。Matlab中顯示的數(shù)據(jù)只有專(zhuān)業(yè)人事可以閱讀,對(duì)于音樂(lè)愛(ài)好者有難度,還需要研制一個(gè)簡(jiǎn)譜翻譯工具,這是我們下一步的又一個(gè)研究目標(biāo)。
[1]楊行峻,遲惠生.語(yǔ)音信號(hào)數(shù)字處理[M].北京:電子工業(yè)出版社,1995.
[2]張紅,宋俊壽,黃泰翼.一種新的峰值提取方法及其在語(yǔ)音基頻提取中的應(yīng)用[J].鐵道學(xué)報(bào),1998(6):68-73.ZHANG Hong,SONG Jun-shou,HUANG Tai-yi.A novel peak picking algorithm and its application in extraction of fundamental frequency of speech signal[J].Journal of the China Railway Society,1998(6):68-73.
[3]白云.首調(diào)唱名法與簡(jiǎn)譜的傳入及其在我國(guó)視唱練耳學(xué)科發(fā)展中的意義[J].黃河之聲,2010(21):74-75.BAI Yun.The introduction of tonic sol fa and numbered musical notation and its significance in the development of the solfeggio subject in China[J].Yellow River of the Song,2010(21):74-75.
[4]李重光.基本樂(lè)理通用教材[M].高等教育出版社,2004.
[5]張盼盼.Matlab的音樂(lè)合成器應(yīng)用[J].企業(yè)導(dǎo)報(bào),2011(11):297-298.ZHANG Pan-pan.Application of matlab music synthesizer[J].Cuide to Business,2011(11):297-298.
[6]劉丹,朱漢城.音樂(lè)特征識(shí)別的研究綜述[J].計(jì)算機(jī)工程與應(yīng)用,2002(24):74-77.LIU Dan,ZHU Han-cheng.A review on the research of music features recognition[J].Computer Engineering and Applications,2002(24):74-77.
[7]于拾全,景新幸,劉志國(guó).樂(lè)器音高檢測(cè)方法的比較和精度分析[J].電聲技術(shù),2006(7):4-7.YU Shi-quan,JING Xin-xing,LIU Zhi-guo.The study and realization of electronic tuning device[J].Audio Engineering,2006(7):4-7.
[8]許錦生.電子樂(lè)譜的設(shè)計(jì)與若干關(guān)鍵技術(shù)的實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科技大學(xué),2012.
[9]葉霖,李雄飛,劉麗娟,等.一種有效識(shí)別 MIDI文件中主旋律音軌的方法[J].計(jì)算機(jī)應(yīng)用與軟件,2010(1):48-50.YE YE Lin,LI Xiong-fei,LIU Li-juan,et al.An effective method for identifying the mesound track in midifiles[J].Computer Applications and Software,2010(1):48-50.