音頻特征提取方法和工具匯總

本文首發(fā)于:行者AI

絕大多數(shù)音頻特征起源于語音識別任務,它們可以精簡原始的波形采樣信號,從而加速機器對音頻中語義含義的理解。從20世紀90年代末開始,這些音頻特征也被應用于樂器識別等音樂信息檢索任務中,更多針對音頻音樂設計的特征也應運而生。

1. 音頻特征的類別

認識音頻特征不同類別不在于對某一個特征精準分類而是加深理解特征的物理意義,一般對于音頻特征我們可以從以下維度區(qū)分:

(1)特征是由模型從信號中直接提取還是基于模型的輸出得到的統(tǒng)計,如均值、方差等;

(2)特征表示的是瞬態(tài)還是全局上的值,瞬態(tài)一般以幀為單位而全局則覆蓋更長的時間維度;

(3)特征的抽象程度,底層特征抽象程度最低也是最易從原始音頻信號中提取,它可以進一步被處理為高一級的中間特征代表樂譜中常見的音樂元素,如音高、音符的起始時間等;高層特征最為抽象大多用于音樂的曲風和情緒任務;

(4)根據(jù)特征提取過程的差異可以分為:從原始信號中直接提取的特征(如過零率)、將信號轉換為頻率得到的特征(如譜心質(zhì))、需經(jīng)過特定的模型得到的特征(如旋律)、受人耳聽覺認知啟發(fā)改變量化特征尺度得到的特征(如MFCCs)。

我們以“特征提取過程的差異”為主要分類基準,列出各類下比較常見的特征:

同時我們也發(fā)現(xiàn)部分特征并非完全屬于其中一個類別例如MFCC,因為提取MFCC會將信號從時域轉換至頻域然后根據(jù)模仿人類聽覺響應的MEL尺度過濾器得到的,因此它屬于既屬于頻域特征又屬于感知特征。

2. 常用提取工具

下面羅列出一些常用提取音頻特征的工具和使用平臺。

名稱 地址 適配語言
Aubio https://aubio.org c/python
Essentia https://essentia.upf.edu c++/python
Librosa https://librosa.org python
Madmom http://madmom.readthedocs.org python
pyAudioAnalysis https://github.com/tyiannak/pyAudioAnalysis python
Vamp-plugins https://www.vamp-plugins.org c++/python
Yaafe http://yaafe.sourceforge.net python/matlab

3. 音頻信號處理

音頻數(shù)字信號是一系列數(shù)字代表時域中連續(xù)變化的樣本,也就是常常說的“波形圖”。要對數(shù)字信號進行分析操作需對信號進行采樣和量化。

采樣是指連續(xù)時間的離散化的過程,其中均勻采樣是指每隔相等時間間隔采樣一次,每秒需要采集的聲音樣本個數(shù)叫做采樣頻率,音頻文件中常常見到的44.1kHz、11kHz就是指的采樣(頻)率。

量化將連續(xù)波形轉變?yōu)殡x散化的數(shù)字,先將整個幅度劃分為有限個量化階距的集合,幅度的劃分可以是等間距或不等間距的把落入某個階距內(nèi)的樣本值賦予相同的量化值。音頻文件中的位深代表的就是量化值,16bit位深代表的就是將幅值量化為2^16。

奈奎斯特定律指出如果采樣頻率大于等于信號中最高頻率分量的2倍,一個信號可以從他的采樣值精確地重構,實際上采樣頻率明顯大于奈奎斯特頻率。

4. 常用變換

4.1 短時傅里葉變換

短時傅里葉變換(Short Time Fourier Transform, STFT)適用于分析緩慢時變信號的頻譜分析,在音頻和圖像分析處理中已經(jīng)得到廣泛應用。其方法是先將信號分幀,再將各幀進行傅里葉變換。每一幀語音信號可以被認為是從各個不同的平穩(wěn)信號波形中截取出來的,各幀語音的短時頻譜就是各個平穩(wěn)信號波形頻譜的近似。

由于語音信號是短時平穩(wěn)的,因此可以對信號進行分幀處理,計算某一幀的傅里葉變換,這樣得到的就是短時傅里葉變換。

傅里葉變換(FFT)可以將信號從時域轉變?yōu)轭l域,而逆傅里葉變換(IFFT)則可以將頻域轉換為時域信號;傅里葉變換將信號從時域轉變?yōu)轭l域是音頻信號處理最常用的方式。STFT得到的頻譜圖在音頻信號中又叫做聲譜圖或語譜圖。

4.2 離散余弦變換

離散余弦變換(DCT for Discrete Cosine Transform)是與傅里葉變換相關的一種變換,它類似于離散傅里葉變換(DFT for Discrete Fourier Transform),但是只使用實數(shù)。離散余弦變換相當于一個長度大概是它兩倍的離散傅里葉變換,這個離散傅里葉變換是對一個實偶函數(shù)進行的(因為一個實偶函數(shù)的傅里葉變換仍然是一個實偶函數(shù)),在有些變形里面需要將輸入或者輸出的位置移動半個單位。

4.3 離散小波變換

離散小波變換(Discrete Wavelet Transform)在數(shù)值分析和時頻分析中很有用,離散小波變換是對基本小波的尺度和平移進行離散化。

4.4 梅爾頻譜和梅爾倒譜

聲譜圖往往是很大的一張圖,為了得到合適大小的聲音特征,往往把它通過梅爾標度濾波器組(mel-scale filter banks),變換為梅爾頻譜。

人耳的音高感覺大致與聲音的基頻對數(shù)呈線性關系。在梅爾標度下,如果兩段語音的梅爾頻率相差兩倍,則人耳可以感知到的音調(diào)大概也相差兩倍。 當頻率較小時,mel隨Hz變化較快;當頻率很大時,mel的上升很緩慢,曲線的斜率很小。這說明了人耳對低頻音調(diào)的感知較靈敏,在高頻時人耳是很遲鈍的,梅爾標度濾波器組啟發(fā)于此。

梅爾標度濾波器由多個三角濾波器組成濾波器組,低頻處濾波器密集,門限值大,高頻處濾波器稀疏,門限值低。恰好對應了頻率越高人耳越遲鈍這一客觀規(guī)律。上圖所示的濾波器形式叫做等面積梅爾濾波器(Mel-filter bank with same bank area),在人聲領域(語音識別,說話人辨認)等領域應用廣泛,但是如果用到非人聲領域,就會丟掉很多高頻信息。這時我們更喜歡的或許是等高梅爾濾波器(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平均律共同組成的,這十二平均律對應著鋼琴中一個八度上的十二個半音。這些半音臨近之間頻率比為21/12。顯然,同一音級的兩個八度音,高八度音是低八度音頻率的兩倍。因此在音樂當中,聲音都是以指數(shù)分布的,但我們的傅立葉變換得到的音頻譜都是線性分布的,兩者的頻率點是不能一一對應的,這會指使某些音階頻率的估計值產(chǎn)生誤差。所以現(xiàn)代對音樂聲音的分析,一般都采用一種具有相同指數(shù)分布規(guī)律的時頻變換算法:恒Q變換(Constant Q transform)。

CQT指中心頻率按指數(shù)規(guī)律分布,濾波帶寬不同、但中心頻率與帶寬比為常量Q的濾波器組。它與傅立葉變換不同的是,它頻譜的橫軸頻率不是線性的,而是基于log2為底的,并且可以根據(jù)譜線頻率的不同該改變?yōu)V波窗長度,以獲得更好的性能。由于CQT與音階頻率的分布相同,所以通過計算音樂信號的CQT譜,可以直接得到音樂信號在各音符頻率處的振幅值。

參考資料

《A Tutorial on Deep Learning for Music Information Retrieval》

《STFT和聲譜圖,梅爾頻譜(Mel Bank Features)與梅爾倒譜(MFCCs)》

《基于音樂識別的頻譜轉換算法——CQT》

《librosa document》

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容