湖南省長(zhǎng)沙師范學(xué)院初等教育系 陳 麗 羅湘娟 劉 蘇
基于傅里葉變換的兒歌音樂合成研究
湖南省長(zhǎng)沙師范學(xué)院初等教育系 陳 麗 羅湘娟 劉 蘇
本文探討了傅里葉變換在音樂合成中的應(yīng)用,揭示了音樂信號(hào)是由一系列振幅和頻率不一的正弦波疊加且?guī)в胁煌j(luò)修飾形成的,進(jìn)而采用曲線擬合來定音樂的包絡(luò)。以傅里葉變換來研究?jī)焊璧囊魳泛铣?,從?shù)學(xué)的角度生動(dòng)直觀地展示了數(shù)學(xué)與兒童音樂結(jié)合的無窮魅力。
傅里葉變換;音樂合成;包絡(luò)
通過廣泛地研究近年來說話人識(shí)別中常用的特征參數(shù)和建模方法,在處理語音數(shù)據(jù)時(shí),主要提取基于 Mel 頻率的倒譜系數(shù)(MFCC)作為語音的特征參數(shù),高斯混合模型(GMM)作為語音描述的模型。在研究說話人識(shí)別和高斯混合模型(GMM)在流行音樂中運(yùn)用的基礎(chǔ)上,提出用曲線擬合的方法獲得兒童音樂的包絡(luò),然后將得到的音樂信號(hào)進(jìn)行快速傅里葉變換(FFT)計(jì)算其頻譜,從而獲得音樂發(fā)音的諧波,在MATLAB軟件中用wavplay語句實(shí)現(xiàn)傅里葉級(jí)數(shù)合成音樂的數(shù)字信號(hào)。
通過觀察發(fā)現(xiàn)音樂中伴奏部分和歌唱部分?jǐn)?shù)據(jù)的譜分布明顯不同,由于人聲帶的快速振動(dòng),歌唱聲音的譜幾乎總是諧波,并且在頻譜的低頻和中頻部分,基頻的整數(shù)倍頻率處能量通常較大.與歌唱聲音相比較,伴奏聲音突出的諧波較少,其能量分布范圍也更廣。聲音是氣壓隨著時(shí)間t的波動(dòng)行為,是一種隨著時(shí)間t變化的連續(xù)信號(hào),音樂是靠聲音發(fā)出的,是一系列振幅和頻率不一的正弦波疊加形成的。為了得到波形音頻文件,可以使用音頻轉(zhuǎn)化軟件將其他格式的音頻轉(zhuǎn)化成波形音頻,在數(shù)學(xué)建模領(lǐng)域中,用MATLAB語言wavread讀出音樂,用曲線擬合的方法獲得音樂的包絡(luò),通過傅里葉變換獲得音樂的頻譜圖,分析頻譜圖獲得音樂的諧波,最后實(shí)現(xiàn)音樂的合成。
根據(jù)《兩只老虎》第一小節(jié)的簡(jiǎn)譜和十二平均律計(jì)算出該小節(jié)每個(gè)樂音的頻率,在MATLAB中生成幅度為1,抽樣頻率為8kHz的正弦信號(hào)表示這些樂音,用sound播放合成的音樂。曲調(diào)為C的兩只老虎的簡(jiǎn)譜為 |1231|1231|345-|345-|,因此可以得到每個(gè)樂音對(duì)應(yīng)的頻率分別1=262.63Hz,2=263.66Hz,3=329.63Hz,4=349.23hZ,5=292Hz。每小節(jié)有四拍,一拍的時(shí)間是0.5s,因此各樂音的持續(xù)時(shí)間為1→0.5,2→0.5,3→0.5,1→0.5,1→0.5,2→0.5,3→0.5,1→0.5,3→0.5,4→0.5,5→1,3→0.5,4→0.5,5→1。在MATLAB中編寫以下程序,就可以完成兩只老虎的音樂合成:
clear;clc; fs=8000; f=[262.63 293.66 329.63 262.63 262.63 293.66 329.63 262.63 329.63 349.23 392];time=fs*[1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1,1/2,1/2,1]; N=length(time);east=zeros(1,N);n=1;for num=1∶N t=1/fs∶1/fs∶time(num)/fs;
G=zeros(1,time(num));G(1∶time(num))=exp(1∶(-1/time(num))∶1/8000);east(n∶n+time(num)-1)=sin(2*pi*f(num)*t).*G(1∶time(num)); n=n+time(num);end sound(east,8000);plot(east);
為了分析wave2proc的基波和諧波,可以對(duì)wave2proc進(jìn)行傅里葉變換,利用MATLAB中快速傅里葉變換函數(shù)fft可以看出包絡(luò),但是非常不明顯,因此將抽樣頻率由NFFT=2^nextpow2(length(wave2proc))改為NFFT=8^nextpow2(length(wave2proc)),雖然頻域的抽樣頻率提高了很多,但是得到的包絡(luò)依然不精確,這是因?yàn)閣ave2proc是周期函數(shù),要想顯示出離散化程度高的幅值譜,就要增加wave2proc的周期性,即讓wave2proc在時(shí)域重復(fù)多次后再進(jìn)行傅里葉變換。利用repmat函數(shù)可以將wave2proc在時(shí)域重復(fù),再經(jīng)過傅里葉變換可以看出幅值譜的離散化程度已經(jīng)非常高了。wave2proc的基頻為329.1Hz,幅值為0.05401,高次諧波幅值分別為:諧波2是0.07676,諧波3是0.04841,諧波4是0.0519,諧波5是0,諧波6是0.005709,諧波7是0.01923,諧波8是0.006741,諧波9是0.007326。 將音頻信號(hào)導(dǎo)入后得到的是一個(gè)向量,它包含了這段音樂的所有信息,要自動(dòng)分析這段音樂的音調(diào),就需要將每個(gè)音調(diào)對(duì)應(yīng)的點(diǎn)進(jìn)行傅里葉變換得到其幅值譜,在幅值譜上找到第一個(gè)幅值較大的極大值點(diǎn),該點(diǎn)對(duì)應(yīng)的就是該音調(diào)的基頻,得到基頻后就可以得到高次諧波的幅值。為了使對(duì)每個(gè)音調(diào)進(jìn)行傅里葉變換后得到的幅值譜離散程度高,應(yīng)該將每個(gè)音調(diào)的數(shù)據(jù)在時(shí)域上重復(fù)多次,由于這些點(diǎn)都是直接采集的,沒做處理,因此其重復(fù)次數(shù)應(yīng)該足夠大才能體現(xiàn)出較強(qiáng)周期性,本實(shí)驗(yàn)采用重復(fù)1000次,若所有點(diǎn)的幅值都小于0.02,那么用0.015作為幅值的限定條件,這樣就將音調(diào)基頻確定出來了。為了去頂節(jié)拍,可以將確定出的基頻的誤差設(shè)為 1Hz,程序確定的基頻為200Hz,那么k次諧波對(duì)應(yīng)的頻率范圍是k*(200-1)到k*(200+1),在這個(gè)區(qū)間中繼續(xù)找幅值的極大值點(diǎn)就是k次諧波對(duì)應(yīng)點(diǎn)。
利用傅里葉變換分析提取了這些音頻信號(hào)對(duì)應(yīng)的基頻和各次諧波相對(duì)應(yīng)的幅值,再用wavplay語句對(duì)合成音樂進(jìn)行了播放,合成了完整的一首兒歌。
[1]基于數(shù)學(xué)建模的數(shù)學(xué)實(shí)驗(yàn)[M].北京: 中國(guó)鐵道出版社,2014.
[2]李麗娟.基于高斯混合模型流行音樂中歌唱部分的智能檢測(cè).小型微型計(jì)算機(jī)系統(tǒng),2009.
陳麗(1984-1),女,漢族,湖南長(zhǎng)沙人,碩士,助教,主要研究方向:概率論與數(shù)理統(tǒng)計(jì)】