MIRtoolbox文檔摘要

時間:2019年2月
版本:1.7.2html


Introduction

miraudio不只支持傳入Floder,cell array,也支持傳入txt文件做爲參數。使用mirgetdata和get獲取結果。算法

Basic Operators

miraudio

載入音頻文件,重點是能夠把Matlab column vector經過指定採樣率轉化成音頻。
默認載入後轉化爲單聲道windows

mirframe

重要的是要指定幀間距和幀長。幀長能夠經過秒和採樣兩種方式。幀間距也能夠經過比例等多種形式。函數

mirfilterbank

提供多種Filter模型,還能夠指定本身的模型。
clipboard.png
clipboard.png學習

mirenvelope

能夠從音頻波形計算包絡,其顯示信號的全局外形。 它對於顯示信號的長期演變特別有用,而且特別適用於諸如音符之類的音樂事件的檢測。
有兩種策略,一種是基於Filter的,一種是Spectro的。還有不少相關的操做,諸如降採樣半波整流等。spa

mirspectrum

離散傅里葉變換。默認結果最小值0Hz,最大值爲採樣率的一半。
clipboard.png命令行

快速傅里葉變換要求長度爲power of 2,因此對audio waveform進行了zero-padding。也可使用'Mel'or'Bark'等參數對結果進行重構。code

mircepstrum

諧波序列也可用於檢測基頻自己。 一個想法是查看頻譜表示,並嘗試自動檢測這些週期序列。 一個簡單的想法在於執行傅里葉變換自己的傅立葉變換,從而產生所謂的倒譜(Bogert等,1963)。orm

mirautocor

評估信號週期性的另外一種方法(不管是音頻波形,頻譜,包絡等)包括查看樣本之間的局部相關性。htm

mirflux

計算連續Frame間的距離。

mirsum

彷佛只能對三維數據的最後一維進行求和。也可使用'Mean'直接求均值。

mirpeaks

標記頂點。

mirsegment

對audio waveform進行劃分。

mirplay/mirplayer/mirsave/mirlength

mirddw

Mirfdw使用濾波器相關窗口(FDW)計算頻譜子帶特徵。 與小波變換相似,FDW使用基於每一個子帶濾波器的中心頻率的單獨幀大小。結果默認是10個單獨的結果組成的cell。

Feature Extractors

Dynamics

mirrms

對信號x的全局能量可使用root mean square(RMS)來表示。RMS-Frame和envelope結果很類似。
clipboard.png

mirlowenergy

計算小於RMS均值的比例。基於RMS-Frame。默認幀長50ms,幀間距爲25ms。

Rhythm

處理音頻信號中對於節奏的估計

mirfluctuation

估計節奏的一種方法是基於變換的頻譜圖計算(FFT),經過聽覺建模,而後是每一個頻段的頻譜估計(Pampalk等,2002)。mirfluctuation就是Pampalk提出的模型。
默認參數爲23ms/frame,頻率80Hz。默認用的是Bark bands,可使用mirfluctuation(…, 'Mel')替換爲Mel波段。
(下圖均爲左圖是Mel bands,右圖)
s = mirspectrum(rag,'Frame',.023,'s',80,'Hz','Power','Terhardt','Mel','Mask','dB')s = mirspectrum(rag,'Frame',.023,'s',80,'Hz','Power','Terhardt','Bark','Mask','dB')得到未經FFT的結果:
clipboard.png

f = mirspectrum(s, 'AlongBands', 'Max', 10, 'MinRes', .01,'Window', 0, 'Resonance', 'Fluctuation', 'NormalLength')進行FFT(FFT的參數爲.01Hz,使用mirfluctuation(..., 'MinRes', mr) 修改)。橫座標頻率,縱座標波段。橫座標默認是10Hz( mirfluctuation(..., 'Max', m) 修改最大值),縱座標25-bands(Bark bands應該是20啊?爲啥是25),使用Mel bands後縱座標爲40-bands。
clipboard.png

mirfluctuation(..., 'Summary') 得到統計信息:

clipboard.png

也可使用 mirsum(f)生成,能夠應用到全部二維形式結果的統計。

修改默認參數:

>> mirfluctuation(rag, 'InnerFrame', 0.010, 30)

mirbeatspectrum

節奏頻譜,經過計算時滯函數的自類似性,類似矩陣,參考mirsimatrix。
clipboard.png

Q:爲何橫座標只到4s?

mirevents*

肯定節拍的另外一種方式是首先基於檢測曲線的計算,示出對應於連續脈衝的連續能量脈衝串。 在檢測曲線上自動執行峯值拾取,以顯示事件的估計位置,例如音符,和絃等。峯值是經過mirpeaks標註的。

基於envelope(default)。包括Spectro(default)和Filter兩種主要形式,默認參數均與mirenvelope相同。
形狀和envelope也很相同,Filter幾乎一致,而Spectro只是振幅比例發生了明顯變化。
clipboard.png

此外,還有分別基於mirflux、Emerge、mirpitch、mirnovelty的多種方法,結果分別以下:(不管哪一種探測曲線的計算方法,最後都會被轉化成envelope形式
clipboard.png

The 'Effort' method comes from Timbre Toolbox (Peeters et al., 2011). To get the same results as in Timbre Toolbox, use the following options: mirevents(r, 'Attack', 'Effort', 'Filter', 'CutOff', 5, 'Down', 0, 'Alpha', 3):
clipboard.png

可使用獲得的結果進行波形的劃分,不一樣的model獲得的數值都是不一樣的,對波形的劃分也不一樣。添加Frame參數獲得一個劃分好的結果,默認參數幀長3s,幀間距0.3s。
clipboard.png

兩個現成的模型,分別來自(Scheirer, 1998)和(Klapuri., 1999)。
clipboard.png

Q:這麼多模型,哪一個效果最好?

mireventdensity

統計每秒events的數量,依賴於選擇的events模型。

mirtempo

經過檢測事件檢測曲線的週期來估計節拍。

方法一:用於節奏估計的經典範例基於檢測一系列BPM中的週期性,而且分別選擇每一個幀的最大週期性得分。步驟:1.events,默認envelope;2.Frame,幀長3s,間距0.3s;3.週期性探測,分別爲Autocor模式、Spectrum模式、混合模式。

[t ac] = mirtempo(r, 'Frame')
clipboard.png

Q:橫縱座標含義?

方法二:經過構建分層的度量結構(使用mirmetre)來跟蹤速度。 這使得可以找到連貫的測量級別,從而產生連續的節奏曲線。

mirmetre

經過檢測事件檢測曲線的週期性並跟蹤大量的度量級別,提供層次度量結構的詳細描述。
步驟:1.mirevents,默認Emerge且沒有事件檢測('Detect' set to 0);2.mirautocor,默認幀長5s,間距0.25s,最小值24bpm;3.peak picking
clipboard.png

Q: 橫縱座標含義?上圖爲直接傳入miraudio參數。

使用get彷佛能獲得一些更有用的結果:
clipboard.png

Q:lag的含義?

mirmetroid

提供從使用mirmetre進行的度量分析得出的兩個描述,以及進一步選擇的主要度量級別。結果也是一個BPM的數。

mirpulseclarity

估計節奏清晰度,表示由mirtempo函數估計的節拍強度。能夠選擇多種清晰度的計算方式,全部的結果都是基於temop算出的autocorrelation curve。默認的是MaxAutocor。除此之外,還有一些基於簡單的檢測曲線自己的方法。
clipboard.png

還有兩種模式能夠選擇,模式1獲得的結果和默認結果不相同,模式2不知爲啥運行不出來。

Timbre 音色

mirattacktime

在mirattacktime中提出的描述attack phase的一種簡單方法在於估計其時間持續時間。來源於mirevents的Attacks參數。能夠修改mirevents的參數。
clipboard.png

The log attack time given by the Timbre Toolbox (Peeters et al., 2011) [a b] = mirattacktime(r, 'Filter', 'Attack', 'Effort', 'Log', 'Down', 0, 'CutOff',5)(圖三爲取消log圖)
clipboard.png

mirattackslope

平均斜率,依然來源於events。兩種形式,分別是Diff和Gauss。
clipboard.png

mirattackleap

幅度。
clipboard.png

mirdecaytime/mirdecayleap/mirdecayslope

描述decay phase,和attack phase類似。
clipboard.png

mirduration

每一個連續事件的持續時間(以s爲單位)
clipboard.png

mirzerocross

描述噪聲特徵noisiness,看它改變了幾回符號(穿過幾回X軸)。默認值只計算了從負到正的次數。
clipboard.png

mirrolloff

This ratio is fixed by default to .85 (following Tzanetakis and Cook, 2002), other have proposed .95 (Pohle, Pampalk and Widmer, 2005).
clipboard.png

mirbrightness

參數設置:MinRMS .005;'CutOff' specifies the frequency cut-off, in Hz. Default value: 1500 Hz. The value 1000 Hz has been proposed in (Laukka, Juslin and Bresin, 2005), and the value of 3000 Hz has been proposed in (Juslin, 2000).
clipboard.png

mircentroid, mirspread, mirskewness, mirkurtosis, mirflatness, mirentropy

The spectral distribution can be described by statistical moments: centroid, spread, skewness, kurtosis, flatness as well as by entropy.

mirmfcc*

MFCC描述了聲音的頻譜形狀。
在這裏,頻帶以對數方式定位(在Mel標度上),其比線性間隔的頻帶更接近地近似於人類聽覺系統的響應。 而且傅立葉變換被離散餘弦變換取代。 離散餘弦變換(DCT)是相似於離散傅里葉變換(DFT)的傅立葉相關變換,但僅使用實數。 它具備強大的「能量壓縮」特性:大多數信號信息每每集中在DCT的一些低頻份量中。 這就是爲何默認狀況下只返回前13個組件。
clipboard.png

clipboard.png

學習: https://www.cnblogs.com/BaroC...

mirroughness

Plomp和Levelt(1965)提出了一種估計每當正弦波在頻率上閉合時與搏動現象相關的感受不協調或粗糙度。經過計算光譜的峯值,並採用全部可能的峯值對之間的全部不一致的平均值,能夠得出總粗糙度的估計值(Sethares,1998)。
clipboard.png
上圖爲'Sethares'(Sethares, 1998)。對於每對峯值,經過將兩個峯值幅度相乘,並經過將結果與在不和諧曲線上給出的相應因子相加來得到相應的基本粗糙度。下圖來自'Vassilakis',採用了更復雜的權重(Vassilakis, 2001, Eq. 6.23)。
clipboard.png

mirregularity

頻譜的不規則性是頻譜的連續峯值的變化程度。默認Jensen。
clipboard.png

Pitch 音高

mirpitch

提取音高,以連續音高曲線或離散音符事件的形式返回。默認返回的元素數量不肯定。分別對應着Autocor,AutocorSpectrum,Spectrum三種模式。(默認雙聲道)
clipboard.png

預設模型:mirpitch(..., 'Tolonen')

mirmidi/mirinharmonicity

沒跑出來

Tonality 音調

mirchromagram

clipboard.png

mirkeystrength

clipboard.png

mirkey

clipboard.png
加上Frame後:
clipboard.png

mirmode

對於modality的估計,結果(-1,+1),越大越重要,越小越次要。指定Frame後可能更有用。默認的best是major和minor的最大值的差值,Sum是全部最大最小值對的差值的和。
clipboard.png

mirkeysom

clipboard.png

mirtonalcentroid

從色度圖計算6維音調質心向量。 它對應於弦的投影沿着五個圓,三分之二和三分之一的圓(Harte和Sandler,2006)。
clipboard.png

mirhcdf

諧波變化檢測功能(HCDF)。可用於頻譜劃分。
clipboard.png

HIGH-LEVEL FEATURES

Structure and form

mirsimatrix

類似性矩陣顯示來自輸入數據的全部可能的幀對之間的類似性。傳入的數據必須是Frame後的才能夠。
clipboard.png

mirnovelty

一種特定的結構描述涉及時間連續的時刻,每一個時刻都以特定的音樂特性爲特徵。 novelty曲線表示由峯值指示的連續狀態之間存在轉變的機率,以及由峯值高度指示的它們的相對重要性。由aimatrix得來
clipboard.png

方法一:基於Gaussian checkerboard kernel的方法,此方法取決於內核的大小。
方法二:(Lartillot,Cereghetti,Eliard和Grandjean,2013)介紹了一種更簡單但更強大的通用方法,可自動檢測任何大小的同質段。默認使用此方法。

Statistics

mirmean/mirstd/mirmedian

以幀爲基礎返回統計特徵。不會用。

mirstat

結果彷佛也不是很可靠。

mirhisto

產生直方圖。X軸等間隔。彷佛有點用。要看好產生的數據到底是哪一個數據得出的。
clipboard.png

mircentroid

返回曲線的形心,默認計算得的是頻譜形心。不一樣音頻的頻譜質心差距仍是很大的。只接受兩種類型的輸入,若是是原始音頻文件則輸出頻譜質心;若是是Extract後的peaks文件,則分別計算頻譜質心。其餘類型的輸入還不知道怎麼用。

mirspread

返回標準差std。能夠傳入多種數據,彷佛比上邊的函數效果好。其他參考上函數。

mirskewness

偏斜係數,衡量數據是否對稱分佈的係數。

mirflatness

返回數據的平坦度。

mirentropy

相對香農熵

mirfeatures

使用 mirfeatures(..., 'Stat')後結果還需驗證。

Predictions

miremotion只有1.3版本能用。
mirclassify能夠傳入Floder。
mircluster聚類算法

Similarity and Retrieval

mirdist用於計算兩段音頻的距離。同一音頻不一樣質量的dist仍是很小的。
mirquery查詢

Exportation

mirgetdata 返回到的是多是沒有X軸的數據
mirexport 導出到文件

ADVANCED USE OF MIRTOOLBOX

mirtemporary默認關閉,能夠把floder的結果導入到一個臨時文件。
mirwaitbar(0) toggles off the display by MIRtoolbox of waitbar windows.
mirverbose(0) 關閉控制檯輸出~~

get

  • 'Data': 所有的數據,如mirpeaks(env)的結果,返回的是env的數據,而不是peaks數據。
  • 'Pos': 位置信息,和Data中的數據一一對應。
  • 'Unit': 未知
  • 'Sampling': 採樣率。通過envelope等操做後採樣率會發生變化。
  • 'Length': 和原始信號的長度均相等。
  • 'Nbits': 原始信號的bit數
  • 'Name': 原始文件名
  • 'Title': 數據類型
  • 'Channels': 原始信號的聲道數。

Memory management

使用miraudio('Floder')時會把全部的waveform都存到內存中,會有內存溢出的危險。而直接使用mirkey('Floder')這種操做,會把逐一進行操做,只存出結果。
大文件也會被切分進行計算,最後合併結果。也沒有必要使用miraudio進行存儲waveform。
因此,不須要連續操做時,使用直接的命令行更有效。

mireval能夠用來FLOWCHART DESIGN的操做,運行封裝好的結果。

而對於COMPLEX FLOWCHART DESIGN,則須要使用mirstruct進行建立一個結構。結構中的tmp中的變量中的變量不會生成最後的運算結果,其餘變量會產生最後的運算結果,使用'Design'來代替文件名。最後使用mireval生成結果。

相關文章
相關標籤/搜索