国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于CQT的樂器獨奏單旋律的提取

2021-03-12 07:15巖,
關(guān)鍵詞:樂音基頻頻譜

張 巖, 劉 哲

(沈陽師范大學 計算機與數(shù)學基礎教學部, 沈陽 110034)

0 引 言

旋律通常指若干樂音經(jīng)過藝術(shù)構(gòu)思而形成的有組織、節(jié)奏的序列。國際音樂信息檢索測評(music information retrieval evaluation eXchage,MIREX)將旋律定義為對應顯著性人聲或樂器中感知音高的基頻值序列[1]。音樂學中,按照音樂作品旋律線的數(shù)量,將音樂分為單聲部音樂和多聲部音樂[2]。單聲部音樂指同一時刻只有一個音符發(fā)音,如獨唱、管樂器的獨奏、演奏單旋律的弦樂器獨奏等。單旋律提取是以單聲部音樂為對象,對旋律的音高和時值等主要特征進行提取。單旋律提取可以應用于作曲創(chuàng)作、音準分析和校正、音樂檢索和音樂情感分析等,因此具有重要的研究和應用價值。

1 樂音信號的旋律特征

1.1 樂音信號的頻率

當發(fā)音體由于震蕩而發(fā)出音時,每個音不僅僅包括基頻正弦波的基音,還同時包括許多頻率較高的正弦波的泛音[3]。復合波也是一種周期性的振動波[4],其振幅由基音的振幅和各組泛音的振幅重疊而成。根據(jù)十二平均律,計量上將一個八度音程即2倍頻率之間分成12個音級,每2個相鄰音級相差100音分(cent)。2個相鄰音級的頻率比是2(1/12)(約1.059 463)。2個相鄰音分的頻率比是2(1/1 200)(約1.000 577 79)。音列中樂音i的標準頻率公式為F(i)=fa1·2(n/12),其中fa1=440為第一國際高度,n為樂音i到a1間隔的半音數(shù)目,當樂音i比音a1低時,n取負數(shù)[5]。

1.2 樂音信號的旋律特征分析

時頻域分析是將時域與頻域的處理方式結(jié)合起來,將信號分割成為時間幀,將時間幀內(nèi)的信號進行時頻變換,分析信號在時間域內(nèi)的頻譜特征[6]。短時傅里葉變換(short time Fourier transform, STFT)把整個時域過程分解成無數(shù)個等長的小片段,每個小片段近似平穩(wěn),再對時間窗的信號進行傅里葉變換(Fourier transform,FT)以獲得具體在哪個時間點上出現(xiàn)了什么頻率[7]。STFT的頻率分辨率和時間分辨率是由加窗的窗口長度決定的,頻率分辨率隨窗長的加長而提高,時間分辨率隨窗長的縮短而提高。頻率分辨率就是在頻率上將各次諧波分開的能力指標,時間分辨率就是在時間上將樂音分開的能力指標。顯然,STFT窗口長度固定不變的變換方式造成了時間分辨率和頻率分辨率的矛盾。為了解決這個矛盾,對音樂信號加窗后,采用常Q變換(constant Q transform, CQT)代替FT。

2 CQT算法

設有限長離散信號X(n),n=0,1,…,N-1,離散傅里葉變換(discrete Fourier transform, DFT)得到的X(k)的公式為

(1)

從離散傅里葉變換公式能夠直觀看出,X(k)是X(n)的一種近似表示,是單位頻帶的頻譜值;任何周期信號都可以分解為直流分量、基頻分量(k=0)和k次諧波分量。當然,實際中通常采用快速傅里葉變換(fast Fourier transform, FFT)來提高運行效率。

與傅里葉變換不同的是,CQT的中心頻率是按指數(shù)規(guī)律分布的,并且中心頻率與帶寬比為常量Q。CQT頻譜的橫軸頻率不是等間距的線性分布,而是計算log2的對數(shù)頻率的不等間距分布。

若定義常量Q為中心頻率與帶寬的比值,則常量Q的計算公式為[8]

(2)

其中:fk是音樂信號在變換頻譜內(nèi)的第k個頻率分量,稱為中心頻率;δfk是相鄰半音的頻率間隔,稱為帶寬,在信號處理時決定著頻率分辨率(或頻率解析度)。

(3)

其中:f0是所處理的音頻信號的最低頻率;b是一個八度的頻率范圍內(nèi)所包含的頻譜線數(shù)[9]。一般情況下,b可以取值為12,24或36。若b=36,表示一個八度內(nèi)有36條頻譜線,即36個頻率分量,每個半音有3條頻率分量。

(4)

根據(jù)頻率解析度的定義,可以得出窗長Nk,Nk的計算公式為

(5)

其中:fs是采樣頻率;fk是音樂信號在變換頻譜內(nèi)的第k個頻率分量(中心頻率)。

由于樂音信號的頻率是按照指數(shù)規(guī)律分布的,所以CQT的頻率分辨率能夠與樂音的十二平均律相匹配,通過計算音樂信號的CQT譜,可以直接得到音樂信號在各個半音頻率分量處的頻譜值。根據(jù)以上計算過程,可以得出第k個頻率分量的頻譜值為

(6)

其中:x(n)是時域信號;wNk(n)是長度為Nk的窗函數(shù),可以是矩形窗或漢明窗等;k是CQT譜的頻率序號;Q是CQT的常數(shù)[11]。

由上面分析可知,CQT對于低頻率的樂音信號可以獲得良好的頻率分辨率,而對于高頻率的樂音信號可以獲得良好的時間分辨率。對于低頻分量,窗長較長;對于高頻分量,窗長則較短。

3 基于CQT的單旋律提取算法

3.1 采用CQT算法提取單幀樂音信號的基頻

在MATLAB中,可以使用fft函數(shù)實現(xiàn)快速傅里葉變換,從而求得該單個樂音的基頻。這里以采樣頻率為44 100 Hz的單旋律小提琴曲為樣本進行分析。通常情況下,小提琴A弦頻率標準是440 Hz(對應鋼琴的a1),G弦頻率標準是196 Hz(對應鋼琴的g),D弦頻率標準是293.66 Hz(對應鋼琴的d1),E弦頻率標準是659.25 Hz(對應鋼琴的e2)[12]。因為小提琴的頻率范圍為196~987.76 Hz,所以對低于175 Hz(約低于最低音2個半音)或者高于1 100 Hz(約高于最高音2個半音)范圍內(nèi)的噪聲頻率分量直接置零,以免造成窗長過長或過短的問題。

根據(jù)采樣定理,FFT能分辨的最高頻率為采樣頻率的一半(即Nyquist頻率),函數(shù)fft返回值是以Nyqusit頻率為軸對稱的[13]。通過對fft函數(shù)求得的第一幀頻譜的分析,前25個采樣點就可以獲得樂音的基頻和主要諧波頻率。依據(jù)前25個采樣點,繪制如圖1所示的莖狀圖。其中序號13的點是振幅最大值點,根據(jù)采樣點頻率的計算公式(n-1)·44 100/N(其中n表示采樣點序號,n=1,…,N),計算基頻的頻率為(13-1)×44 100/1 024=516.8 Hz。

下面采用CQT算法分析樂音的基頻。取b=12,Q=16.82,則第一幀的窗長Nk=Q·fs/fk=16.82×44 100/516.8=1 435.3,所以窗長可以取1 436個點。在MATLAB中,使用spectrogram函數(shù)對單樂音信號進行STFT分析。在spectrogram函數(shù)的參數(shù)中:window代表加窗函數(shù),由主程序傳遞給spectrogram函數(shù),這里采用Haming窗; nfft代表窗長的點數(shù),也就是FFT的點數(shù),一般為幀移的2倍,這里采用1 436;noverlap代表幀移,即重復點數(shù),這里采用718;X代表音樂信號;fs代表樂音信號生成離散信號時的采用頻率,這里從音樂數(shù)字文件的基本信息直接獲取的是44 100 Hz。繪制的CQT時頻圖(也稱語譜圖)經(jīng)過放大和中心移位后的效果如圖2所示。

圖2 CQT獲得的樂曲第一幀信號的時頻圖Fig.2 Spectrum of first frame of music signal obtained by CQT

圖2中能量最大的頻率區(qū)域?qū)木褪腔l所在區(qū)域,該樂音的基頻范圍是510~540 Hz;從spectrogram函數(shù)獲得的S能量最大的F頻率分量是522.08。因為440×1.059 4633=523.25,考慮到存在誤差等情況,推斷基音頻率是523.25 Hz。從spectrogram函數(shù)也可以獲得S能量最大的F頻率分量所對應的時間點。因此,CQT算法能夠獲得更加準確的基頻和時間點等特征,有利于樂曲的旋律特征的提取。

3.2 采用CQT算法提取樂曲旋律的算法及實現(xiàn)

算法的基本思想是將源信號的時間片段分幀,以幀為單位,轉(zhuǎn)換成一個基于該時間幀的頻譜圖,然后依次將所有的分幀做相同的處理,就形成了時間軸上的時頻圖。時頻圖的橫軸坐標為時間,縱軸坐標為頻率,坐標值的明暗度為振幅值。具體算法流程如下:

1) 以1 024點為幀長,利用fft函數(shù)進行變換,獲得基音頻率fk。對超出正常樂音頻率范圍內(nèi)的噪聲,通過振幅置零的辦法去除。

2) 利用CQT方法,在b=12,Q=16.82和已經(jīng)獲得的基音頻率fk的條件下,計算第i幀加Hamming窗函數(shù)的窗長Nk(i)和重疊點數(shù)noverlap等。

3) 以計算得到的窗長和重疊點數(shù)為參數(shù)對信號重新動態(tài)分幀。

4) 利用spectrogram函數(shù)對每一幀進行STFT分析,獲得能量最大值對應的基頻和采樣點序號等信息。第一幀的采樣點序號為1,以后各幀的采樣點序號TZ(i)=TZ(i-1)+Nk(i-1)/2。

5) 計算每幀的起始時間點,即時間點t=采樣點起始序號/44 100[14]。

6) 根據(jù)基頻和采樣點起始序號或者基頻和每幀的起始時間點,繪制樂曲的旋律階梯圖[15]。

選取整首小提琴曲的前100幀進行基頻和采樣點起始序號的提取, 提取結(jié)果如表1所示。對于各個幀提取的基頻,可以根據(jù)情況和實際需要進行音準的修正。例如,第17,19和第26幀,頻率為689.06,而689.06不是誤差范圍之內(nèi)的樂音頻率,判斷存在噪聲,可以取鄰近值進行修正。

表1 單旋律小提琴曲前100幀的基頻和采樣點起始序號Table 1 f0 and starting sequence number of sampling point in the first 100 frames of single melody violin music

將基頻和采樣點起始序號換算為基頻和起始時間點,在頻率軸和時間軸上繪制的樂曲前100幀的旋律階梯圖如圖3所示。

圖3 樂曲前100幀的旋律階梯圖Fig.3 Melody ladder diagram of the first 100 frames of music signal

4 結(jié) 語

采用CQT算法,對于低頻分量,窗長較長,截取的信號也較長,CQT變換后所獲得頻譜的頻率分辨率較高;對于高頻分量,窗長較短,截取的信號也較短,CQT變換后所獲得頻譜的時間分辨率較高[16]。以單旋律小提琴樂曲為樣本,小提琴A弦頻率440 Hz為標準,與鋼琴相對應,小提琴的音域為小字組g~小字3組a3,在樂器本身的音準及采樣時的誤差范圍內(nèi),可以基本檢測出該樂曲的各幀基頻,如表2所示。

表2 單旋律小提琴的部分基頻檢測值與標準值、鋼琴琴鍵的對照Table 2 Comparison of partial f0 detection value of single melody violin with standard value and piano key

整首小提琴曲采樣點總數(shù)為501 700 7個,取前100幀進行旋律提取,共抽取125 118個采樣點(含重疊點)。與基于YIN算法的樂器單旋律提取結(jié)果相比較,從算法效率來看,增多了22 718個采樣點,說明CQT動態(tài)變化窗長的算法可以明顯地提高旋律提取的效率;從提取的基頻與準確值的對照來看,檢測值與準確值更加接近,說明CQT算法能更可靠地支持樂曲旋律的提取。當然,本方法提取的旋律存在需要改進的地方,主要是幀的采樣起始點和音符的起始點之間存在誤差的問題,對此需要進一步提取音符的起始點才可以實現(xiàn)對時間的準確定位。

猜你喜歡
樂音基頻頻譜
語音同一認定中音段長度對基頻分析的影響
基于時域的基頻感知語音分離方法?
如何區(qū)分樂音和噪聲
一種用于深空探測的Chirp變換頻譜分析儀設計與實現(xiàn)
橋面鋪裝層對中小跨徑橋梁基頻影響分析
那一刻
作文成功之路·作文交響樂——學生展現(xiàn)心靈樂音的舞臺
45000kHz基頻晶體濾波器
用心聆聽學會區(qū)分
遙感衛(wèi)星動力學頻譜規(guī)劃