絕大多數(shù)音頻特征起源于語音識別任務(wù),它們可以精簡原始的波形采樣信號,從而加速機(jī)器對音頻中語義含義的理解。從20世紀(jì)90年代末開始,這些音頻特征也被應(yīng)用于樂器識別等音樂信息檢索任務(wù)中,更多針對音頻音樂設(shè)計的特征也應(yīng)運(yùn)而生。 1. 音頻特征的類別認(rèn)識音頻特征不同類別不在于對某一個特征精準(zhǔn)分類而是加深理解特征的物理意義,一般對于音頻特征我們可以從以下維度區(qū)分: (1)特征是由模型從信號中直接提取還是基于模型的輸出得到的統(tǒng)計,如均值、方差等; (2)特征表示的是瞬態(tài)還是全局上的值,瞬態(tài)一般以幀為單位而全局則覆蓋更長的時間維度; (3)特征的抽象程度,底層特征抽象程度最低也是最易從原始音頻信號中提取,它可以進(jìn)一步被處理為高一級的中間特征代表樂譜中常見的音樂元素,如音高、音符的起始時間等;高層特征最為抽象大多用于音樂的曲風(fēng)和情緒任務(wù); (4)根據(jù)特征提取過程的差異可以分為:從原始信號中直接提取的特征(如過零率)、將信號轉(zhuǎn)換為頻率得到的特征(如譜心質(zhì))、需經(jīng)過特定的模型得到的特征(如旋律)、受人耳聽覺認(rèn)知啟發(fā)改變量化特征尺度得到的特征(如MFCCs)。 我們以“特征提取過程的差異”為主要分類基準(zhǔn),列出各類下比較常見的特征: 同時我們也發(fā)現(xiàn)部分特征并非完全屬于其中一個類別例如MFCC,因為提取MFCC會將信號從時域轉(zhuǎn)換至頻域然后根據(jù)模仿人類聽覺響應(yīng)的MEL尺度過濾器得到的,因此它屬于既屬于頻域特征又屬于感知特征。 2. 常用提取工具下面羅列出一些常用提取音頻特征的工具和使用平臺。
3. 音頻信號處理音頻數(shù)字信號是一系列數(shù)字代表時域中連續(xù)變化的樣本,也就是常常說的“波形圖”。要對數(shù)字信號進(jìn)行分析操作需對信號進(jìn)行采樣和量化。 采樣是指連續(xù)時間的離散化的過程,其中均勻采樣是指每隔相等時間間隔采樣一次,每秒需要采集的聲音樣本個數(shù)叫做采樣頻率,音頻文件中常常見到的44.1kHz、11kHz就是指的采樣(頻)率。 量化將連續(xù)波形轉(zhuǎn)變?yōu)殡x散化的數(shù)字,先將整個幅度劃分為有限個量化階距的集合,幅度的劃分可以是等間距或不等間距的把落入某個階距內(nèi)的樣本值賦予相同的量化值。音頻文件中地位深代表的就是量化值,16bit位深代表的就是將幅值量化為2^16。 奈奎斯特定律指出如果采樣頻率大于等于信號中最高頻率分量的2倍,一個信號可以從他的采樣值精確地重構(gòu),實際上采樣頻率明顯大于奈奎斯特頻率。 4. 常用變換4.1 短時傅里葉變換 短時傅里葉變換(Short Time Fourier Transform, STFT)適用于分析緩慢時變信號的頻譜分析,在音頻和圖像分析處理中已經(jīng)得到廣泛應(yīng)用。其方法是先將信號分幀,再將各幀進(jìn)行傅里葉變換。每一幀語音信號可以被認(rèn)為是從各個不同的平穩(wěn)信號波形中截取出來的,各幀語音的短時頻譜就是各個平穩(wěn)信號波形頻譜的近似。 由于語音信號是短時平穩(wěn)的,因此可以對信號進(jìn)行分幀處理,計算某一幀的傅里葉變換,這樣得到的就是短時傅里葉變換。 傅里葉變換(FFT)可以將信號從時域轉(zhuǎn)變?yōu)轭l域,而逆傅里葉變換(IFFT)則可以將頻域轉(zhuǎn)換為時域信號;傅里葉變換將信號從時域轉(zhuǎn)變?yōu)轭l域是音頻信號處理最常用的方式。STFT得到的頻譜圖在音頻信號中又叫做聲譜圖或語譜圖。 4.2 離散余弦變換 離散余弦變換(DCT for Discrete Cosine Transform)是與傅里葉變換相關(guān)的一種變換,它類似于離散傅里葉變換(DFT for Discrete Fourier Transform),但是只使用實數(shù)。離散余弦變換相當(dāng)于一個長度大概是它兩倍的離散傅里葉變換,這個離散傅里葉變換是對一個實偶函數(shù)進(jìn)行的(因為一個實偶函數(shù)的傅里葉變換仍然是一個實偶函數(shù)),在有些變形里面需要將輸入或者輸出的位置移動半個單位。 4.3 離散小波變換 離散小波變換(Discrete Wavelet Transform)在數(shù)值分析和時頻分析中很有用,離散小波變換是對基本小波的尺度和平移進(jìn)行離散化。 4.4 梅爾頻譜和梅爾倒譜 聲譜圖往往是很大的一張圖,為了得到合適大小的聲音特征,往往把它通過梅爾標(biāo)度濾波器組(mel-scale filter banks),變換為梅爾頻譜。 人耳的音高感覺大致與聲音的基頻對數(shù)呈線性關(guān)系。在梅爾標(biāo)度下,如果兩段語音的梅爾頻率相差兩倍,則人耳可以感知到的音調(diào)大概也相差兩倍。 當(dāng)頻率較小時,mel隨Hz變化較快;當(dāng)頻率很大時,mel的上升很緩慢,曲線的斜率很小。這說明了人耳對低頻音調(diào)的感知較靈敏,在高頻時人耳是很遲鈍的,梅爾標(biāo)度濾波器組啟發(fā)于此。 梅爾標(biāo)度濾波器由多個三角濾波器組成濾波器組,低頻處濾波器密集,門限值大,高頻處濾波器稀疏,門限值低。恰好對應(yīng)了頻率越高人耳越遲鈍這一客觀規(guī)律。上圖所示的濾波器形式叫做等面積梅爾濾波器(Mel-filter bank with same bank area),在人聲領(lǐng)域(語音識別,說話人辨認(rèn))等領(lǐng)域應(yīng)用廣泛,但是如果用到非人聲領(lǐng)域,就會丟掉很多高頻信息。這時我們更喜歡的或許是等高梅爾濾波器(Mel-filter bank with same bank height)。 librosa中MEL頻譜實現(xiàn): import numpy as np def melspectrogram(y=None, sr=22050, S=None, n_fft=2048, hop_length=512, power=2.0, **kwargs): S, n_fft = _spectrogram(y=y, S=S, n_fft=n_fft, hop_length=hop_length, power=power) # Build a Mel filter mel_basis = filters.mel(sr, n_fft, **kwargs) return np.dot(mel_basis, S) 而梅爾倒譜在梅爾頻譜上做倒譜分析(取對數(shù),做DCT變換)就得到了梅爾倒譜。 # -- Mel spectrogram and MFCCs -- # def mfcc(y=None, sr=22050, S=None, n_mfcc=20, **kwargs): if S is None: S = power_to_db(melspectrogram(y=y, sr=sr, **kwargs)) return scipy.fftpack.dct(S, axis=0, type=dct_type, norm=norm)[:n_mfcc] 4.5 恒Q變換 在音樂中,所有的音都是由若干八度的12平均律共同組成的,這十二平均律對應(yīng)著鋼琴中一個八度上的十二個半音。這些半音臨近之間頻率比為21/12。顯然,同一音級的兩個八度音,高八度音是低八度音頻率的兩倍。因此在音樂當(dāng)中,聲音都是以指數(shù)分布的,但我們的傅立葉變換得到的音頻譜都是線性分布的,兩者的頻率點是不能一一對應(yīng)的,這會指使某些音階頻率的估計值產(chǎn)生誤差。所以現(xiàn)代對音樂聲音的分析,一般都采用一種具有相同指數(shù)分布規(guī)律的時頻變換算法:恒Q變換(Constant Q transform)。 CQT指中心頻率按指數(shù)規(guī)律分布,濾波帶寬不同、但中心頻率與帶寬比為常量Q的濾波器組。它與傅立葉變換不同的是,它頻譜的橫軸頻率不是線性的,而是基于log2為底的,并且可以根據(jù)譜線頻率的不同該改變?yōu)V波窗長度,以獲得更好的性能。由于CQT與音階頻率的分布相同,所以通過計算音樂信號的CQT譜,可以直接得到音樂信號在各音符頻率處的振幅值。 參考資料
|
|