MIRtoolbox文档摘要

时间:2019年2月
版本:1.7.2


Introduction

miraudio不仅支持传入Floder,cell array,也支持传入txt文件作为参数。使用mirgetdata和get获取结果。

Basic Operators

miraudio

载入音频文件,重点是可以把Matlab column vector通过指定采样率转化成音频。
默认载入后转化为单声道

mirframe

重要的是要指定帧间距和帧长。帧长可以通过秒和采样两种方式。帧间距也可以通过比例等多种形式。

mirfilterbank

提供多种Filter模型,还可以指定自己的模型。
clipboard.png
clipboard.png

mirenvelope

可以从音频波形计算包络,其显示信号的全局外形。 它对于显示信号的长期演变特别有用,并且特别适用于诸如音符之类的音乐事件的检测。
有两种策略,一种是基于Filter的,一种是Spectro的。还有很多相关的操作,诸如降采样半波整流等。

mirspectrum

离散傅里叶变换。默认结果最小值0Hz,最大值为采样率的一半。
clipboard.png

快速傅里叶变换要求长度为power of 2,所以对audio waveform进行了zero-padding。也可以使用'Mel'or'Bark'等参数对结果进行重构。

mircepstrum

谐波序列也可用于检测基频本身。 一个想法是查看频谱表示,并尝试自动检测这些周期序列。 一个简单的想法在于执行傅里叶变换本身的傅立叶变换,从而产生所谓的倒谱(Bogert等,1963)。

mirautocor

评估信号周期性的另一种方法(无论是音频波形,频谱,包络等)包括查看样本之间的局部相关性。

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生成结果。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值