语音情感计算经常会用到openSMILE进行语音特征的提取,openSMILE作为一款已经被很多研究者使用的提取情感特征的工具箱,却没有一个完整的中文版手册,也是为了自己查阅方便吧,慢慢翻译一下,算是记录自己的工作,如能给有需要的同行觉得有点用处当然好,即便不能方便什么人,也算是自己的一点积累吧。水平有限,难免错漏,请不吝赐教。先放上来,边写边修正和排版吧
对于音乐信息检索和语音处理领域的常见任务,我们在config /目录中为以下常用功能集提供了一些示例配置文件。 这些还包含2009-2013年INTERSPEECH关于影响和副语言学挑战的基线声学特征集:
•用于键和和弦识别的色度特征
•用于语音识别的MFCC
•用于语音识别的PLP
•韵律(音高和响度)
•INTERSPEECH 2009情感挑战赛特征集
•INTERSPEECH 2010 Paralinguistic挑战赛特征集
•INTERSPEECH 2011扬声器状态挑战赛特征集
•INTERSPEECH 2012扬声器特征挑战赛特征集
•INTERSPECEC 2013 ComParE特征集
•MediaEval 2012 TUM暴力场景检测特征集。
•三种情绪识别特征参考集(更老的集,相对INTERSPEECH挑战赛集合已经过时)
•基于INTERSPEECH 2010 Paralinguistic挑战赛音视频特性集中的音频特性集。
这些配置文件可以直接使用,也可以作为你自己特征文件的一部分。
注:如果你发布的成果中利用openSMILE提取了特征,我们希望你可以把你的配置文件在科研论坛上进行共享,比如上传到您的个人网页并在文章中提供网页地址。同时请指明是openSMILE的哪个官方版本以使大家能够复现你的结果。
自2.2版以来,大多数标准的特征提取配置文件都把命令行中中指定输入文件和输出文件格式(WEKA Arff,HTK二进制,CSV文本)作为标准借口。通用配置文件包括也是处于此目的,这可以在文件夹config/shared中找到。
这些选项在配置文件本身中定义,详见第4.2节这个机制和语法。为了查看配置文件的可用选项,使用以下命令:
SMILExtract -C config/putconfigfilenamehere.conf -ccmdHelp
以下选项可用于所有标准配置文件的音频输入:
-inputfile,-I 输入音频文件的路径和名称。
-start in seconds>从哪里开始分析,相对到文件的开头(0)。
-end in seconds>在哪里结束分析,相对到文件的开头(0),默认(-1)是文件的结尾。
这些选项在config/shared/standard wave input.conf.inc中定义。
以下选项可用于控制缓冲区和分段行为:
-frameModeFunctionalsConf Include文件,它为所有组件函数配置帧模式。默认值:shared/FrameModeFunctionals.conf.inc
-bufferModeRbConf shared/BufferModeRb.conf.inc
-bufferModeRbLagConf shared/BufferModeRbLag.conf.inc
-bufferModeConf shared/BufferMode.conf.inc
frameModeFunctionalsConf是最重要的选项。它控制着函数组件运作的时间单位。下面的例子(include文件的内容)说明了四种最常见的用例。
A.使用完整汇总:
frameMode = full
frameSize = 0
frameStep = 0
frameCenterSpecial = left
B.在固定尺寸(滑动)窗口上的多个汇总(帧长5s,帧移2s):
frameMode = fixed
frameSize = 5
frameStep = 2
frameCenterSpecial = left
C.给定的分段列表汇总(4.2秒到5.6秒,7.0到9.0秒,10秒到文件结束):
frameMode = list
frameList = 4.2s-5.6s,7.0s-9s,10s-E
frameCenterSpecial = left
D.通过cTurnDetector组件实时检测变量段的摘要,并通过smile messages收到:
frameMode = var
frameCenterSpecial = left
使用messageRecp选项的cTurnDetector组件必须存在于配置中并指向配置中的所有函数组件。请参阅cTurnDetector的在线帮助或简单例子config/emobase_live4.conf获得有关详细信息。
bufferMode配置文件设置dataMemory级别输出缓冲区的大小,如一般逐帧处理的组件(bufferModeRbConf),操作滞后的数据(例如维特比平滑之后的F0)(bufferModeRbLagConf)的组件,或者用于对其他组件(例如,函数或使用上下文的分类器)进行汇总输出的组件bufferModeConf)。缓冲区大小配置,后者必须匹配frameModeFunctionalsConf中的frameMode设置,即缓冲区在bufferModeConf中指定的值必须至少是所请求的分段单元的大小(frameMode)。如果要汇总完整的输入(frameMode = full),则输出缓冲区必须配置为动态增长(growDyn = 1),而不是像ring/cyclical缓冲器(isRb = 0)一样响应,例如:
writer.levelconf.growDyn = 1
writer.levelconf.isRb = 0
writer.levelconf.nT = 100
nT的值是不相关的,它只是设置缓冲区的初始大小(以LLD帧数为单位)。这种配置不适用于实时模式,因为它将随着时间的推移占用大量内存,导致openSMILE进程在某个时间点崩溃。
因此,对于实时演示,缓冲区大小必须受到限制,并且要有最大的分段大小,汇总特征也必须受到限制。在variable模式(当收到消息来自cTurnDetector),这是通过cTurnDetector中的最大转向长度设置实现的。否则,frameSize设置例如应该小于缓冲区大小(nT)。一个例子实时模式的ring-buffer配置是:
writer.levelconf.growDyn = 0
writer.levelconf.isRb = 1
writer.levelconf.nT = 1000
这表示,如果LLD特征的帧率为10ms,则缓冲区大小为10s,这基本上是所有配置文件的默认设置。
下面的选项适用于控制输出数据格式的(配置通过统计函数统计的特征汇总,比如全部的INTERSPEECH和AVEC挑战集):
=============================
-instname 通常是输入文件的名称保存在CSV和ARFF输出的首列。默认是"unknow"
=============================
-lldcsvoutput, -D 启动LLD帧向输出到CSV格式文件
-appendcsvlld <0/1> 设为1代表添加到已有CSV文件文末,默认0覆盖
-timestampcsvlld <0/1> 设为0禁止把时间步输出到CSV第二列,默认为1
-headercsvlld <0/1> 设为0禁止把标题输入到CSV,默认为1
=============================
-lldhtkoutput 启动LLD帧向输出到HTK格式文件
=============================
-lldarffoutput, -D 启动LLD帧向输出到ARFF格式文件
-appendarfflld <0/1> 设为1代表添加到已有ARFF文件文末,默认0覆盖
-timestamparfflld <0/1> 设为0禁止把时间步输出到ARFF第二列,默认为1
-lldarfftargetsfile 指定配置包含定义目标域(类)的文,默认为: shared/arff_targets_conf.inc
=============================
-output, -O 默认输出选项. ARFF格式,存放特征汇总
-appendarff <0/1> 设为0代表不添加到已有ARFF文件文末,默认1添加
-timestamparff <0/1> 设为1把时间步输出到ARFF第二列,默认为0
-arfftargetsfile 指定配置包含定义目标域(类)的文,默认为: shared/arff_targets_conf.inc
=============================
-csvoutput 默认输出选项. CSV格式,存放特征汇总
-appendcsv <0/1> 设为0代表不添加到已有CSV文件文末,默认1
-timestampcsv <0/1> 设为0禁止把时间步输出到CSV第二列,默认为1
-headercsv <0/1> 设为0禁止把标题输入到CSV,默认为1
=============================
-htkoutput 输出特征汇总(函数)到HTK格式文件
这些选项都是已经被定义在config/shared/standard data output.conf.inc.
以下输出可以选项用于配置低级别描述LLDs特征(即没有使用各种时间统计方法的汇总特征):
=============================
-csvoutput 默认输出选项. CSV格式,存放帧向LLD
-appendcsv <0/1> 设为1代表添加到已有CSV文件文末,默认0
-timestampcsv <0/1> 设为0禁止把时间步输出到CSV第二列,默认为1
-headercsv <0/1> 设为0禁止把标题输入到CSV,默认为1
=============================
-output 输出特征汇总(函数)到HTK格式文件
=============================
-arffoutput 默认输出选项. ARFF格式,存放帧向LLD
-appendarff <0/1> 设为0代表不添加到已有ARFF文件文末,默认1添加
-timestamparff <0/1> 设为0禁止把时间步输出到ARFF第二列,默认为1
-arfftargetsfile 指定配置包含定义目标域(类)的文,默认为: shared/arff_targets_conf.inc
这些选项都是已经被定义在config/shared/standard data output lldonly.conf.inc
注:从2.2版本起,你可以指定一个“?”替代文件名。它会禁止相应的输出组件,即它不会产生输出文件。在标准输出借口界面,所有的文件名默认都是”?”,除了标准的输出选项(-O),它被设为output.htk或者output.arff。
所有支持标准数据输出格式的配置文件都可以在WINDOWS的批特征提取GUI(使用VS10 C#编写,位于progsrc/openSMILEbatchGUI/)。这个工具允许openSMILE自动的执行文件夹中的若干文件。它可以在图形界面中选择音频文件和指定输出类型。
配置文件config/chroma_fft.conf从一个短时FFT谱(窗口大小为50ms,速率为10ms,高斯窗口)计算音乐色度特征(12个半色调特征)。该频谱图使用三角滤波器缩放到半音频率轴。使用这个配置,键入:
SMILExtract -C config/chroma_fft.conf -I input.wav -O chroma.csv
生成的CSV文件包含以“;”分隔的ASCII浮点值的色度特征,一帧一行。此配置使用“cTonespec”组件来计算半音谱。我们还提供了一个使用实验性“cTonefilt”组件作为“cTonespec”替代品的配置文件config/chroma_filt.conf。
我们还提供了一个计算整个输入序列上的色度特征的平均值矢量的示例配置。这样的矢量可以用于识别歌曲的音乐键。配置提供在config/chroma fft.sum.conf中。它使用“cFunctionals”组件来计算色度等值线的均值。通过以下命令行使用它:
SMILExtract -C config/chroma_fft.sum.conf -I input.wav -O chroma.csv
chroma.csv将包含一行含12个用“;”分隔的值,表示色度均值。
2.5.3 MFCC特征
为了提取MFCC特征(兼容HTK),提供了以下四个文件(它们是以它们所代表的相应的HTK参数类型命名的):
MFCC12_0_D_A.conf 此配置从25毫秒的音频帧中提取梅尔频率倒谱系数(以10毫秒的速率采样)(汉明窗口)。 它由26个Mel频带计算13个MFCC(0-12)组,并应用了一个权重参数为22的倒谱提升滤波器。13个一阶和13个二阶系数被附加到MFCC后。
MFCC12_E_D_A.conf 此配置跟MFCC12_0_D_A.conf一样,除了附加到MFCC1-12的不是0-th个MFCC,而是对数能量。
MFCC12_0_D_A_Z.conf 这个配置跟MFCC12_0_D_A.conf配置一样,除了所有特征是参考整个输入序列进行了标准化(通常是转弯或者分转弯段,usually a turn or sub-turn segment)。
MFCC12_E_D_A_Z.conf 这个配置跟MFCC12_E_D_A.conf配置一样,除了所有特征是参考整个输入序列进行了标准化(通常是转弯或者分转弯段,usually a turn or sub-turn segment)。
帧长为25ms,帧移为10ms,使用的汉明窗,预增强参数为0.97。由26个通过FFT功率谱计算的mel-滤波器组计算MFCC 0/1-12。MEL频谱的频率范围为0-8kHz,同时这些配置文件提供了-I,-O选项。输出文件格式是HTK参数文件格式。如果需要输出其他文件格式,你必须在配置文件中更改‘cHtkSink’组件类型为你想要的类型。命令行示例如下:
SMILExtract -C config/MFCC12_E_D_A.conf -I input.wav -O output.mfcc.htk
用于提取PLP倒谱系数(PLP-CC)(与HTK兼容)以下四个文件(它们是以它们所代表的相应的HTK参数类型命名的):
PLP_0_D_A.conf 该配置从25 ms长音频(以10ms的速率采样)帧提取Mel频率倒谱系数(汉明窗口)。它从26个Mel频带,并使用预测阶数为5计算6个PLP(0-5),并应用了一个权重参数为22的倒谱提升滤波器。6个一阶和6个二阶系数被附加到PLP-CC后。
PLP_E_D_A.conf 该配置与PLP_0_D_A.conf相同,但是是对数能量被附加到PLP 1-5而不是第0个PLP。
PLP_0_D_A_Z.conf 此配置与PLP_0_D_A.conf相同,除了所有特征是参考整个输入序列进行了标准化(通常是转弯或者分转弯段,usually a turn or sub-turn segment)
PLP_E_D_Z.conf 此配置与PLP_E_D_A.conf相同,除了所有特征是参考整个输入序列进行了标准化(通常是转弯或者分转弯段,usually a turn or sub-turn segment)
帧长为25ms,帧移为10ms,使用的汉明窗,预增强参数为0.97。由26个通过FFT功率谱计算的听觉mel-滤波器组(压缩系数为0.33)计算PLP 0/1-5。线性预测器的预测阶数为5。MEL频谱的频率范围为0-8kHz,同时这些配置文件提供了-I,-O选项。输出文件格式是HTK参数文件格式。如果需要输出其他文件格式,你必须在配置文件中更改‘cHtkSink’组件类型为你想要的类型。命令行示例如下:
SMILExtract -C config/PLP_E_D_A.conf -I input.wav -O output.plp.htk
提供了用于提取韵律特征的示例配置文件config/prosodyAcf.conf和config/prosodyShs.conf。
这些文件提取基频(F0),发声概率和响度轮廓。文件prosodyAcf.conf使用“cPitchACF”组件来提取基频,基于自相关和倒谱的方法。文件prosodyShs.conf使用“cPitchShs”组件,基于次谐波采样算法(SHS)。 这两种配置都将CSV格式设置为输出格式。示例命令行如下:
SMILExtract -C config/prosodyShs.conf -I input.wav -O prosody.csv
自openSMILE在openEAR的项目EWS09情感识别中被使用,openSMILE提供了各种情感识别的标准特征集。
The INTERSPEECH 2009 Emotion Challenge feature set 本特征集(参见[SSB09])由配置文件config/emo IS09.conf提供。它包含对LLDs应用统计函数得到的384个特征。该特征被保存在Arff格式(针对WEKA),新的实例会被附加到一个已存在文件(这是用于批处理,其中openSMILE被反复调用从多个文件提取特征到单个特征文件)。 出现在Arff文件中16个低级描述符(LLDs)的名称,见下面的列表:
pcm_RMSenergy 均方根信号帧能量
mfcc 梅尔频率倒谱系数1-12
Pcm_zcr 时间信号的过零率(基于帧)
voiceProb 从ACF计算的发声概率。
F0 从倒频谱计算的基频。
附加到低级描述符名称的后缀_sma表示它们是通过窗口长度为3的移动平均滤波器进行平滑。附加到sma的后缀_de表示当前特征是低级描述符平滑后的一阶delta系数(微分)。出现在Arff文件中的12个函数的名字,均在以下列表中:
max 轮廓的最大值
min 轮廓的最小值
range =max- min
maxPos 最大值的绝对位置(以帧为单位)
minPos 最小值的绝对位置(以帧为单位)
amean 轮廓的算术平均值
linregc1 轮廓线性逼近的斜率(m)
linregc2 轮廓线性逼近的偏移量(t)
linregerrQ 计算的二次误差作为线性近似值和实际轮廓的差值
stddev 轮廓上的值的标准偏差
skewness 偏度(3阶矩)。
kurtosis 峰度(4阶矩)。
The INTERSPEECH 2010 Paralinguistic Challenge feature set 本集(见2010年INTERSPEECH会议论文集)由配置文件config/IS10_paraling.conf提供。该集包含的1 582个特征是由34个低级描述符(LLDs)和34个相应的delta作为68个LLDs轮廓值,在此基础上应用21个函数得到1 428个特征,另外,对4个基于音高的LLD及其4个delta系数应用了19个函数得到152个特征,最后附加音高(伪音节)的数量和总数输入的持续时间(2个特征)。
该特征被保存在Arff格式(针对WEKA),新的实例会被附加到一个已存在文件(这是用于批处理,其中openSMILE被反复调用从多个文件提取特征到单个特征文件)。 出现在Arff文件中34个低级描述符(LLDs)的名称,见下面的列表:
pcm_loudness 归一化强度提高到0.3的幂的响度
mfcc 美尔频率倒谱系数0-14
logMelFreqBand 梅尔频带的对数功率0-7(分布范围内从0到8 kHz)
lspFreq 从8个LPC系数计算出的8个线谱对频率。
F0finEnv 平滑的基频轮廓线。
voicingFinalUnclipped 最终基频候选的发声概率。Unclipped的意思是,当其低于浊音阈值时,它不被设置为零。
附加到低级描述符名称的后缀_sma表示它们是通过窗口长度为3的移动平均滤波器进行平滑。附加到sma的后缀_de表示当前特征是低级描述符平滑后的一阶delta系数(微分)。出现在Arff文件中的21个函数的名字,均在以下列表中:
maxPos 最大值的绝对位置(以帧为单位)
minPos 最小值的绝对位置(以帧为单位)
amean 轮廓的算术平均值
linregc1 轮廓线性逼近的斜率(m)
linregc2 轮廓线性逼近的偏移量(t)
linregerrA 把线性误差计算作为线性近似值和实际的轮廓的误差
linregerrQ 把二次误差计算作为线性近似值和实际的轮廓的误差
stddev 轮廓中的值的标准偏差
skewness 偏度(3阶矩)。
kurtosis 峰度(4阶矩)。
quartile1 第一四分位数(25%百分位数)
quartile2 第一四分位数(50%百分位数)
quartile3 第一四分位数(75%百分位数)
iqr1-2 四分位数间距:quartile2- quartile1
iqr2-3 四分位数间距:quartile3- quartile2
iqr1-3 四分位数间距:quartile3- quartile1
percentile1.0 轮廓的离群值鲁棒最小值,按1%百分位数表示。
percentile99.0 轮廓的离群值鲁棒最大值,按99%百分位数表示。
pctlrange0-1 由1%和99%的百分点的范围表示的离群值鲁棒信号范围“max-min”。
upleveltime75 信号超过(75%*范围+min)的时间百分比。
upleveltime90 信号超过(90%*范围+min)的时间百分比。
四个音高相关的LLD(及相应的delta系数)如下(清音区域均为0,因此功能仅适用于这些轮廓的浊音区域):
F0final 平滑的基频频率
jitterLocal 本地(帧到帧)抖动(音调周期长度偏差)
jitterDDP 差分帧间抖动(‘Jitter of the Jitter’)
shimmerLocal 本地(帧到帧)闪烁(音调周期幅度偏差)
对这4 + 4个LLD应用了19个函数,即上述21个函数的集合没有最小值(1%百分位数)和范围。
The INTERSPEECH 2011 Speaker State Challenge feature set 本集配置文件为config/IS11_speake_state.conf。
特征细节将会尽快添加到openSMILE手册,同时我们也会参考挑战论文:
Björn Schuller, Anton Batliner, Stefan Steidl, Florian Schiel, Jarek Krajewski: ”The INTERSPEECH 2011 Speaker State Challenge”, Proc. INTERSPEECH 2011,ISCA, Florence, Italy, pp. 3201-3204, 28.-31.08.2011.
The INTERSPEECH 2012 Speaker Trait Challenge feature set 本集配置文件为config/IS12_speaker trait.conf。
特征细节将会尽快添加到openSMILE手册,同时我们也会参考挑战论文:
Björn Schuller, Stefan Steidl, Anton Batliner, Elmar Nöth, Alessandro Vinciarelli, Felix Burkhardt, Rob van Son, Felix Weninger, Florian Eyben, Tobias Bocklet,Gelareh Mohammadi, Benjamin Weiss: ”The INTERSPEECH 2012 Speaker Trait Challenge”, Proc. INTERSPEECH 2012, ISCA, Portland, OR, USA, 09.-13.09.2012.
The INTERSPEECH 2013 ComParE Challenge feature set 本集配置文件为config/IS13_ComParE.conf。配置文件config/IS13_ComParE_lld.conf用于仅提取LLDs。声音子挑战(笑声等)的配置也在此文件中。
特征细节将会尽快添加到openSMILE手册,同时我们也会参考挑战论文:
Björn Schuller, Stefan Steidl, Anton Batliner, Alessandro Vinciarelli, Klaus Scherer,Fabien Ringeval, Mohamed Chetouani, Felix Weninger, Florian Eyben, Erik Marchi,Marcello Mortillaro, Hugues Salamin, Anna Polychroniou, Fabio Valente, Samuel Kim: ”The INTERSPEECH 2013 Computational Paralinguistics Challenge: Social Signals, Conflict, Emotion, Autism”, to appear in Proc. INTERSPEECH 2013,ISCA, Lyon, France, 2013.
The MediaEval 2012 TUM feature set for violent video scenes detection 本集针对好莱坞流行电影的暴力进行检测的特征集在config/mediaeval2012_tum_affect/,里面有不同的设置,参考文章:
Florian Eyben, Felix Weninger, Nicolas Lehment, Gerhard Rigoll, Björn Schuller: ”Violent Scenes Detection with Large, Brute-forced Acoustic and Visual Feature Sets”, Proc. MediaEval 2012 Workshop, Pisa, Italy, 04.-05.10.2012.
MediaEval Audio IS12based subwin2.conf 包含的是从2s的子窗中提取音频特征的配置。MediaEval Audio IS12based subwin2 step0.5.conf提取一样的特征,但是2s子窗的偏移为0.5s。MediaEval VideoFunctionals.conf用于视频特征提取,如文章使用方法,需要一个包含LLDs的CSV文件(由openCV提取)作为输入和输出,ARFF文件作为视频特征。
The openSMILE/openEAR ‘emobase’ set 早期的基线集(参照”emobase2”集作为新的基线集),拥有情感识别的998个声学特征,可以通过以下命令使用:
SMILExtract -C config/emobase.conf -I input.wav -O output.arff
它会产生一个包含所有特征名称的标题和一个实例,包含了给定输入文件的特征向量的ARFF文件。如需添加更多的实例到同一个ARFF文件,只需要重复的对不同(或相同)的输入文件使用上述命令即可。
ARFF文件将具有名为“情绪”的虚拟类标签,其中默认包含一个unkown类。 要更改此行为并将自定义类和类标签分配给单个实例,请使用如下命令行:
SMILExtract -C config/emobase.conf -I inputN.wav -O output.arff -instname
inputN -classes {anger,fear,disgust} -classlabel anger
因此,参数-classes指定包含在{}的字符串的名义类的列表,或者可以设置为numeric(回归)类。参数-classlabel指定从当前给定的输入(-I)计算出的实例的类标签/值。为了更进一步的关于这些参数的信息,请看一下emobase.conf的配置文件在哪里这些命令行参数被定义。
由emobase.conf指定的特征集包含以下低级描述符(LLDs):强度,响度,12 MFCC,音高(F0),浊音概率,F0包络线,8 LSF(线频谱频率),过零率, 以及这些LLD的Delta回归系数。以下函数被应用于上述LLDs及其Delta系数。:Max./Min。输入的相对位置和范围,范围,算术平均值,2线性回归系数,线性和二次误差,标准差,偏度,峰度,四分位数1-3和三位四分位数范围。
The large openSMILE emotion feature set 用于提取更多的LLDs和更多的函数(6552个特征),配置文件为config/emo large.conf。请阅读配置文件和生成的arff文件,在组件参考文件章节(4.3)中匹配部分有关于所包含特征的细节。还需要一个文档要写,欢迎志愿者!
The openSMILE ‘emobase2010’ reference set 本集是基于the INTERSPEECH 2010 Paralinguistic Challenge feature set,配置文件为config/emobase2010.conf。
对持续时间和位置特征的规范化进行了一些调整。这个特性集包含了一套大大增强的低级描述符(LLDs),以及一套“emobase”相比更加精细化选择的函数列表。建议使用此特征集作为比较新的情感识别特征集和方法的参考,因为它代表当前最先进的情感和语言识别功能。
该集合包含1 582个特征(与INTERSPEECH 2010 Paralinguistic 挑战集相同设置),其由34个低级描述符(LLDs)和34个相应的delta作为68个LLDs轮廓值,在此基础上应用21个函数得到1 428个特征,另外,对4个基于音高的LLD及其4个delta系数应用了19个函数得到152个特征,最后附加音高(伪音节)的数量和总数输入的持续时间(2个特征)。唯一的区别是INTERSPEECH 2010 paralinguistic挑战集标准化的是是“maxPos”和“minPos”特征,本配置被标准化为段长度。
文件夹config低级audiovisual包含视频特征(video.conf)和同步视听特征提取(audiovideo.conf)的两个配置文件。 这些文件用于2.7节中的例子。 应用于音频和视频低级特征的音频特征和函数集取自INTERSPEECH 2010 paralenguistic Challenge特征集(详情请参阅第2.5.6节)。
视频特征包含RGB和HSV颜色直方图,局部二进制模式(LBP)和光流直方图。 他们可以从完整的图像或只在面部区域提取。 后者通过OpenCV人脸检测器自动检测。 面部检测可以在配置文件audiovideo.conf下面位置中进行控制:
[openCVSource:cOpenCVSource]
根据选项extract_face直方图箱的数量也可以在这里改变。
组件cPortaudioSource和cPortaudioSink可以用作cWaveSource和cWaveSink的替代品。他们产生/期望的数据与wave组件的格式相同。
提供了两个示例配置文件,它们说明了使用PortAudio将现场音频录制到文件中的基本用法(config/demo/audiorecorder.conf),以及播放音频文件(audiorecorder.conf)。
使用这些配置非常简单。要将音频录制到文件中,请键入:
SMILExtract -C config/demo/audiorecorder.conf -sampleRate 44100 -channels 2 -O output.wave
要停止录制,请使用Ctrl + C退出程序。要播放录制的音频,请使用以下命令:
SMILExtract -C config/demo/audiorecorder.conf -sampleRate 44100 -channels 2 -O output.wave
除了这两个简单的例子之外,还提供了一个实时特征提取示例,该实例捕获实况音频并从输入中提取韵律特征(音调和响度轮廓)。
这些特征保存为CSV文件。要使用此配置,请键入:
SMILExtract -C config/liveProsodyAcf.conf
一旦你看到下面信息,代表录音就开始了
(MSG) [2] in cComponentManager : starting single thread processing loop
现在,您可以在麦克风前说出一个例句或者播放一些音乐。完成后,按Ctrl + C结束openSMILE。现在有一个叫做prosody.csv的CSV文件已在当前目录中创建(使用-O命令行选项来更改文件名)。现在可以使用gnuplot绘制响度和音高轮廓,详看
下一节。
openSMILE可以同时提取音频和视频功能,并同步时间,见示例配置文件config / audiovisual / audiovideo.conf。
为了使这个例子的正常,你需要:
•支持的格式的视频文件(经验法则:如果FFMPEG可以打开它,openCV / openS也可以)
•视频文件的音轨以单独的文件保存(.wav格式)
您可以使用mplayer或ffmpeg来提取视频的音轨。 这些工具经常用WAVEext头创建波形文件,不幸的是它还没有被支持openSMILE。 因此,openSMILE会抱怨波形文件的格式不正确。 如果发生这种情况,你可以用命令行工具sox转换波形文件(可用于
Linux和Windows)转换为支持的格式:
sox input.wav -c 1 -2 -s output.wav
一些旧点的版本,下面命令也可以
sox input.wav output.wav
然而,当前版本如果输入参数与文件一致的话会尝试进行简单的复制操作,因此,我们必须更改这些桉树,减少通道数为1或者转化为16-bit signed integer采样格式。
一旦openSMILE接受了这个wave文件,就可以进行分析,如下运行(都在同一行):
./SMILExtract -C config/av fusion/audiovideo.conf -V VIDEO FILE -A AUDIO FILE -N NAME -a AGE -g GENDER -e ETHNICITY -O VIDEO ARFF -P AUDIO ARFF
在shell中,以下地方需要进行替换,
• AUDIO FILE 和 VIDEO FILE需要替换成相应的音频输入文件(.wav)和视频输入文件(可以含音轨,它会被OpenCV忽略)
• NAME表示arff实例的标题,可以自由的选择‘_’和字母组合
• AGE,GENDER及ETHNICITY代表这对音视频的真是标签,如果你想把他们包含在ARFF文件中,以便进行训练分类器。
• VIDEO_ARFF 和 AUDIO_ARFF应被替换成期望的对应arff文件。
执行后,会产生两个新的文件:VIDEO_ARFF 和 AUDIO_ARFF,里面包含了音频和视频的时间同步的描述符,已经文件已经存在,则内容会附在后面。
为了使用gnuplot可视化特征轮廓,必须安装perl5和gnuplot。在Linux上,默认情况下应该安装perl(如果没有,请检查你的发行版文档关于如何安装perl),gnuplot可以通过你的发行包安装(在Ubuntu上:sudo apt-get install gnuplot-nox),或者从源代码编译(http://www.gnuplot.info)。 对于Windows,gnuplot二进制文件可从项目web页面(http://www.gnuplot.info)下载。 对于perl5,请从ActiveState Perl分发http://www.activestate.com/下载并安装它。 而且,你将需要bash shell来执行
.sh脚本(如果您没有bash shell,则必须手动输入这些命令到windows命令提示符)。
有一些已经可以直接使用的例子,脚本plotchroma.sh可以绘制色度特征,plotaudspec.sh可以绘制听觉频谱(我们假设你在openSMILE发行版安装目录的顶层目录下,否则请调整路径):
否限,你必须从音乐文件中提取色度特征,比如:
SMILExtract -C config/chroma_fft.conf -I wav_samples/music01.wav -O chroma.csv
然后你就可以绘制它,
cd scripts/gnuplot
sh plotchroma.sh ../../chroma.csv
如果你的gnuplot安装设置正常,你就会看到一个名为‘Chromagram’的图。
对于听觉频谱,按照以下步骤,
SMILExtract -C config/audspec.conf -I wav_samples/music01.wav -O audspec.csv
然后你就可以绘制它,
cd scripts/gnuplot
sh plotaudspec.sh ../../audspec.csv
如果你的gnuplot安装设置正常,你就会看到一个音频频率的图。
还有两个更加普遍可用的脚本。我们先介绍plotmatrix.sh脚本,它的用法跟plotaudspec.sh、 plotchroma.sh一样
cd scripts/gnuplot
sh plotmatrix.sh of csv-file saved by openSMILE>
这个脚本用gnuplot脚本plotmatrix.gp把矩阵绘制为二维平面,映射使用灰度色彩,在x轴上显示帧的时间和在y轴上的显示特征索引。
要绘制诸如音高或能量之类的特征轮廓,请首先使用提取一些示例轮廓例如prosodyAcf.conf配置(您也可以使用实时特征提取器配置,在前一节中提到):
SMILExtract -C config/prosodyAcf.conf -I wav_samples/speech02.wav -O
Prosody.csv
接下来你可以绘制音高轮廓
cd scripts/gnuplot
sh plotcontour.sh 3 ../../prosody.csv
Plotcontour.sh的一般语法是,
sh plotcontour.sh <index of feature to plot> of CSV file
containing features>
需要绘制的特征的索引可以在文本编辑器(比如gedit, kate, vim, windows上 Notepad++ on Windows)中打开CSV文件确定。文件中的前两个特征总是‘frameIndex’和 ‘frameTime’,索引为0,1。
目前还没有在进行在线特征提取时实时绘制特征支持的。 但是,由于特征是逐步提取的,所以可以写一个自定义输出插件,它将数据实时传递给某个绘图应用程序或直接使用一些GUI API绘制数据。
可能根据情况来更新其他内容吧 其实基本上 如果只是关心怎么使用的,已经翻译完了