openSMILE 简介

openSMILE简介

最近使用到openSMILE来提取音频特征,看了手册有一点学习心得,整理了一下发出来。


openSMILE工具简介

openSMILE是一款以命令行形式运行的工具,通过配置config文件,主要用于提取音频特征。
openSMILE适用于:
① speech recognition (feature extraction front-end, keyword spotting, etc.), the area of affective computing (emotion recognition, affect sensitive virtual agents, etc.), Music Information Retrieval(chord labeling, beat tracking, onset detection etc.).(语音识别、情感计算、音乐信息获取)
② 2.0版本之后的openSMILE包括了openCV库,可以用于视频处理和视频特征提取

openSMILE安装

官网下载
linux和windows两个版本,windows的也可以不用编译直接用。

openSMILE的输入输出格式

文件输入格式可以是:
• RIFF-WAVE (PCM) (for MP3, MP4, OGG, etc. a converter needs to be used)
• Comma Separated Value (CSV)
• HTK parameter files
• WEKA’s ARFF format.(由htk工具产生)
• Video streams via openCV.(opencv产生的视频流数据)

文件输出格式可以是:
• RIFF-WAVE (PCM uncompressed audio)
• Comma Separated Value (CSV)
• HTK parameter file
• WEKA ARFF file
• LibSVM feature file format
• Binary float matrix format

分类器和其他组件
语音处理任务经常需要对语音流进行分段,出于这个目的,openSMILE提供语音活动监测算法:
• Voice Activity Detection based on Fuzzy Logic
• Voice Activity Detection based on LSTM-RNN with pre-trained models
• Turn-/Speech-segment detector
• LibSVM (on-line)
• LSTM-RNN (Neural Network) classifier which can load RNNLIB and CURRENNT nets
• GMM (experimental implementation from eNTERFACE’12 project, to be release soon)
• SVM sink (for loading linear kernel WEKA SMO models)
• Speech Emotion recognition pre-trained models (openEAR)

openSMILE执行方式

openSMILE软件是通过命令行形式运行提取音频特征的。
① 先切换到处理文件SMILExtract.exe所在的目录下
② 再使用语句:
windows下:SMILExtract_Release -C 配置文件 -I “要处理的音频” -O “要保存特征向量的路径及文件名”
linux下:SMILExtract -C 配置文件 -I “要处理的音频” -O “要保存特征向量的路径及文件名”
(其中,-C 后面加提取特征的配置文件,-I 后面加输入的数据源,-O 说明输出的特征文件,另,执行 SMILExtraction –h 命令,可以显示openSMILE软件所有使用信息并退出。提供的配置文件都在config文件夹中)
比如在windows下:

cd D:\openSMILE-2.1.0\bin\Win32
SMILExtract_Release -C D:\openSMILE-2.1.0\config\IS09_emotion.conf -I d:\6.wav -O d:\6.txt 

openSMILE运行机制

OpenSMILE可以对数据进行以下四类的特征提取操作:

Signal Processing: The following functionality is provided for general signal processing or signal pre-processing (prior to feature extraction):
• Windowing-functions (Rectangular, Hamming, Hann (raised cosine), Gauss, Sine, Triangular, Bartlett, Bartlett-Hann, Blackmann, Blackmann-Harris, Lanczos)
• Pre-/De-emphasis (i.e. 1st order high/low-pass)
• Re-sampling (spectral domain algorithm)
• FFT (magnitude, phase, complex) and inverse (快速傅里叶变换–幅度、相和 complex fft–及反变换)
• Scaling of spectral axis via spline interpolation (open-source version only)(通过样条插值进行频谱轴的缩放)
• dbA weighting of magnitude spectrum(幅度谱加权)
• Autocorrelation function (ACF) (via IFFT of power spectrum)(自相关函数)
• Average magnitude difference function (AMDF)(平均幅值差分函数)

Data Processing: openSMILE can perform a number of operations for feature normalisation,
modification, and differentiation:
• Range normalisation (off-line and on-line) (幅度标准化)
• Mean-Variance normalisation (off-line and on-line)(均值方差标准化)
• Delta-Regression coefficients (and simple differential) (Delta 回归系数和简易的微分)
• Weighted Differential as in [SER07] (加权微分)
• Various vector operations: length, element-wise addition, multiplication, logarithm, and
power.(各种各样的向量运算)
• Moving average filter for smoothing of contour over time

Audio features (low-level): The following (audio specific) low-level descriptors can be computed by openSMILE :
• Frame Energy (帧能量)
• Frame Intensity / Loudness (approximation)(帧强度)
• Critical Band spectra (Mel/Bark/Octave, triangular masking filters)(临界频带谱)
• Mel-/Bark-Frequency-Cepstral Coefficients (MFCC)(倒谱系数)
• Auditory Spectra(听觉谱)
• Loudness approximated from auditory spectra.(听觉谱近似强度)
• Perceptual Linear Predictive (PLP) Coefficients
• Perceptual Linear Predictive Cepstral Coefficients (PLP-CC)
• Linear Predictive Coefficients (LPC) (线性预测系数)
• Line Spectral Pairs (LSP, aka. LSF)(线光谱对)
• Fundamental Frequency (via ACF/Cepstrum method and via Subharmonic-Summation
(SHS)) (基础频率)
• Probability of Voicing from ACF and SHS spectrum peak(ACF 和 SHS 谱峰的概率)
• Voice-Quality: Jitter and Shimmer (声音质量:紧张和支支吾吾)
• Formant frequencies and bandwidths (共振频率和带宽)
• Zero- and Mean-Crossing rate (过零率和平均穿越率)
• Spectral features (arbitrary band energies, roll-off points, centroid, entropy, maxpos, minpos, variance (=spread), skewness, kurtosis, slope)
• Psychoacoustic sharpness, spectral harmonicity(心理声学锐度和声谱调和性)
• CHROMA (octave warped semitone spectra) and CENS features (energy normalised and
smoothed CHROMA)
• CHROMA-derived Features for Chord and Key recognition(用于和弦、声调识别的 CHROMA 产生的特征)
• F0 Harmonics ratios

Video features (low-level): The following video low-level descriptors can be currently computed by openSMILE , based on the openCV library:
• HSV colour histograms
• Local binary patterns (LBP)
• LBP histograms
• Face detection: all these features can be extracted from an automatically detected facial
region, or from the full image.• Optical flow and optical flow histograms

Functionals: In order to map contours of audio and video low-level descriptors onto a vector
of fixed dimensionality, the following functionals can be applied:
• Extreme values and positions
• Means (arithmetic, quadratic, geometric)
• Moments (standard deviation, variance, kurtosis, skewness)
• Percentiles and percentile ranges
• Regression (linear and quadratic approximation, regression error)
• Peaks
• Centroid
• Segments
• Sample values
• Times/durations
• Onsets/Offsets
• Discrete Cosine Transformation (DCT)
• Linear Predictive Coding (LPC) coefficients and gain• Zero-Crossings

SMILExtract二进制文件是可以运行所有配置文件的主要应用程序。如果您查看它的源代码(在smilext.cpp中可以找到),您将看到它相当短。它使用openSMILE API中的类来创建组件并运行配置。这些API函数可以在自定义应用程序中使用,如GUI前端等。为了获得对openSMILE运行的组件、它们如何交互以及程序执行在哪些阶段中被分割的一般理解,下面给出简要概述。

openSMILE的应用流程可以分为三个阶段:

预配置阶段:读取命令行选项,并解析配置文件。此外,如果需要,将显示使用信息,并生成一个内置组件列表。

配置阶段:组件管理器被创建并实例化其实例配置数组中列出的所有组件。然后配置过程分为3个阶段,第一个注册组件管理器组件和内存的数据,然后执行等主要配置步骤的输入/输出文件,分配的内存等等,最后敲定它们的配置(例如,设置它们的输出字段的名称和尺寸,等等)。这3个阶段中的每个阶段都要经过数次,因为有些组件可能依赖于其他组件完成了它们的配置(例如,组件读取来自另一个组件的输出,并需要知道输出的维度和输出中字段的名称)。由于配置错误、虚假输入值或无法访问的文件而导致的错误很可能在此阶段发生。

执行阶段:当所有组件都被成功初始化时,组件管理器将启动主执行循环(也称为滴答循环)。每个组件都有一个tick()方法,该方法实现主要的增量处理功能,并通过其返回值报告处理的状态。
在执行循环的一次迭代中,组件管理器调用系列中的所有tick()函数(注意:当组件在多个线程中运行时,行为是不同的)。只要至少有一个组件的tick()方法返回非零值(表示数据是由该组件处理的),循环就会继续。如果所有组件表明他们不处理数据,它可以安全地假定没有更多的数据到达和输入的结束已经达到(这可能是在线设置稍有不同,然而,由源组件返回一个积极的返回值或暂停执行循环,当他们正在等待数据)。
当输入结束时,组件管理器通过运行执行循环的最后一次迭代向组件发出输入结束条件的信号。在此之后,执行循环将运行一个新的,直到所有组件报告一个失败状态。第二个阶段称为输入端处理。它主要用于离线处理,例如从最后一个(但不完整的)帧中计算特征,表示对一个完整序列进行规范化,或者从一个完整序列中计算函数。

openSMILE包含三个不能从配置文件实例化的类。这些是commandline解析器(cCommandlineParser)、configuration manager (cConfigManager)和组件管理器(cComponentManager)。现在,我们将在一段简短的段落中简要地描述每一个角色。段落的顺序对应于在执行SMILExtract程序时创建类的顺序。
命令行解析器
这个类解析命令行,并为调用应用程序提供易于访问的格式选项。还执行简单的命令行语法检查。在初始化配置管理器并解析配置之后,再次解析命令行,以获得当前配置文件中用户定义的命令行选项集。
配置管理器
配置管理器加载配置文件,这是在SMILExtract命令行中指定的。因此,配置部分被分割,然后分别解析。配置部分以ConfigInstance类的抽象表示形式存储(这些类的结构由ConfigType类描述)。因此,很容易为当前实现的inistyle格式之外的格式添加额外的解析器。
组件管理器
组件管理器负责实例化、配置和执行组件。有关openSMILE应用程序流的上述部分已经介绍了详细信息。此外,组件管理器负责在插件中枚举和注册组件。因此,会扫描一个名为plugins的目录来寻找二进制的plugins。所发现的插件都已注册,一个与内置组件完全一样可用的插件。一个插件二进制因此可以包含多个openSMILE组件。
Figure.1 Overview on openSMILE's component types and openSMILE's basic architecture
Figure.1 Overview on openSMILE’s component types and openSMILE’s basic architecture
图1显示了openSMILE的整体数据流架构,其中的数据内存是所有数据源、数据处理器和数据链接组件之间的中心链接。
这里写图片描述
Figure.2 Incremental processing with ring-buffers. Partially filled buffers (left) and filled buffers with warped read/write pointers (right).
基于环缓冲区的增量处理如图3所示。在这个设置中有三个层次:波、帧和音高。cw波形源组件将样本写入“wave”级别。水平中的写位置用红色箭头表示。cFramer从wave样本(不重叠)中生成3号帧,并将这些帧写入“帧”级别。cPitch(具有此名称的组件不存在,这里选择它只是为了说明目的)组件从框架中提取音调特性并将其写到“音调”级别。在图3(右)中,缓冲区已被填充,写入指针已被扭曲。过去存在比“buffersize”框架更多的数据已经被覆盖。

默认特征集及其配置文件

对于音乐信息检索和语音处理领域中的常见任务,openSMILE在config文件夹中提供了一些示例配置文件,它们对应着2009-2013年INTERSPEECH在情感和paralinguistics(辅助语言?)上挑战的基线声学特征集。
这里写图片描述
以上配置文件既可以直接使用,也可以根据需要自定义修改成自己的配置文件。

通用配置文件

自2.2版以来,大多数标准的特征提取配置文件指定了命令行中输入文件和输出文件的格式(WEKA Arff,HTK二进制,CSV文本)。通用配置文件可以在文件夹config/shared中找到。
如果想要查看配置文件的可用选项,使用以下命令:

SMILExtract -C conf/putconfigfilenamehere.config -ccmdHelp(linux下)
SMILExtract_Release -C conf/putconfigfilenamehere.config -ccmdHelp(windows下)

以下选项可用于所有标准配置文件的音频输入:

-inputfile,  -I <filename>      输入音频文件的路径和名称。
-start        <t in seconds>    从哪里开始分析,相对到文件的开头(0)。
-end          <t in seconds>    在哪里结束分析,相对到文件的开头(0),默认(-1)是文件的结尾

这些选项在config/shared/standard wave input.conf.inc中定义。

以下选项可用于控制缓冲区和分段行为:

-frameModeFunctionalsConf <file>  Include文件,它为所有组件函数配置帧模式。默认值:shared/FrameModeFunctionals.inc.conf
-bufferModeConf  shared/BufferMode.inc.conf
-bufferModeRbLagConf  shared/BufferModeRbLag.inc.conf
-bufferModeRbConf  shared/BufferModeRb.inc.conf

frameModeFunctionalsConf是最重要的选项。它控制着函数组件运作的时间单位。下面的例子(include文件的内容)说明了四种最常见的用例。
A.使用完整汇总:

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级别输出缓冲区的大小,缓冲区大小配置必须匹配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 = 

这表示,如果LLD特征的帧率为10ms,则缓冲区大小为10s,这基本上是所有配置文件的默认设置。

下面的选项适用于控制输出数据格式(通过统计函数提供特征汇总的configurations,比如全部的INTERSPEECH和AVEC挑战集):

=============================
-instname <string> 通常是输入文件的名称保存在CSV和ARFF输出的首列。默认是"unknow"
=============================
-lldcsvoutput, -D <filename>  启动LLD帧向输出到CSV格式文件
-appendcsvlld <0/1> 设为1代表添加到已有CSV文件文末,默认0覆盖
-timestampcsvlld  <0/1> 设为0禁止把时间步输出到CSV第二列,默认为1
-headercsvlld <0/1> 设为0禁止把标题输入到CSV,默认为1
=============================
-lldhtkoutput <filename> 启动LLD帧向输出到HTK格式文件
=============================
-lldarffoutput, -D <filename> 启动LLD帧向输出到ARFF格式文件
-appendarfflld <0/1> 设为1代表添加到已有ARFF文件文末,默认0覆盖
-timestamparfflld <0/1> 设为0禁止把时间步输出到ARFF第二列,默认为1
-lldarfftargetsfile <file> 指定配置包含定义目标域(类)的文,默认为: shared/arff_targets_conf.inc
=============================
-output, -O <filename> 默认输出选项. ARFF格式,存放特征汇总
-appendarff <0/1> 设为0代表不添加到已有ARFF文件文末,默认1添加 
-timestamparff <0/1> 设为1把时间步输出到ARFF第二列,默认为0
-arfftargetsfile <file>指定配置包含定义目标域(类)的文,默认为: shared/arff_targets_conf.inc
=============================
-csvoutput <filename> 默认输出选项. CSV格式,存放特征汇总
-appendcsv <0/1> 设为0代表不添加到已有CSV文件文末,默认1
-timestampcsv <0/1> 设为0禁止把时间步输出到CSV第二列,默认为1
-headercsv <0/1> 设为0禁止把标题输入到CSV,默认为1
=============================
-htkoutput <filename> 输出特征汇总(函数)到HTK格式文件

这些选项都被定义在config/shared/standard data output.conf.inc.

以下输出选项用于配置LLDs特征(没有使用各种时间统计方法的汇总特征):

============================
-csvoutput <filename> 默认输出选项. CSV格式,存放帧向LLD
-appendcsv <0/1> 设为1代表添加到已有CSV文件文末,默认0
-timestampcsv <0/1> 设为0禁止把时间步输出到CSV第二列,默认为1
-headercsv <0/1> 设为0禁止把标题输入到CSV,默认为1
============================
-output <filename> 输出特征汇总(函数)到HTK格式文件
============================
-arffoutput <filename> 默认输出选项. ARFF格式,存放帧向LLD
-appendarff <0/1> 设为0代表不添加到已有ARFF文件文末,默认1添加
-timestamparff <0/1> 设为0禁止把时间步输出到ARFF第二列,默认为1
arfftargetsfile <file>指定配置包含定义目标域(类)的文,默认为:shared/arff_targets_conf.inc

这些选项都被定义在config/shared/standard data output lldonly.conf.inc

注:从2.2版本起,你可以指定一个“?”替代文件名。它会禁止相应的输出组件,即它不会产生输出文件,在标准输出接口界面,看到的所有的文件名默认都是”?”
所有支持标准数据输出格式的配置文件都可以在WINDOWS的批特征提取GUI(使用VS10 C#编写,位于progsrc/openSMILEbatchGUI/)。这个工具允许openSMILE自动的执行文件夹中的若干文件。它可以在图形界面中选择音频文件和指定输出类型。

色度特征

配置文件config/chroma_fft.conf从一个短时FFT谱(窗口大小为50ms,速率为10ms,高斯窗口)计算音乐色度特征(12个半色调特征)。
生成的CSV文件包含12个以“;”分隔的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

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

注:MFCC即梅尔频率倒谱系数,是音频的时域信号经过FFT变换成频谱,再映射在梅尔频率上,再经过IDFT变换过程中的0-L个系数(L通常取12-16)。

PLP特征

用于提取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系数(微分)。

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提供。该集包含的1582个特征是由34个低级描述符(LLDs)和34个相应的delta作为68个LLDs轮廓值,在此基础上应用21个函数得到1428个特征,另外,对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-11%和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(见2011年INTERSPEECH会议论文集)由配置文件config/IS11_speake_state.conf提供。该集包含的4368个特征是由4个能量相关+50个频谱相关的低级描述符(LLDs)和54个相应的delta作为108个LLDs,在此基础上应用33个基本函数+平均值、最小值、最大值、标准差得到3996个特征;5个声音相关和5个对应的delta作为10个LLDs,在此基础上应用33个基本函数+二次平均、上升时长、下降时长得到360个特征;6个F0基本函数和对应的delta,12个特征。
这里写图片描述
这里写图片描述

The INTERSPEECH 2012 Speaker Trait Challenge feature set(见2012年INTERSPEECH会议论文集)由配置文件config/IS12_speake_trait.conf提供。该集包含的6125个特征。

这里写图片描述
The INTERSPEECH 2013 ComParE Challenge feature set (见2013年INTERSPEECH会议论文集)由配置文件config/IS13_ComParE.conf提供。该集包含的6373个特征,LLD包括能量,频谱,倒谱(MFCC)、声音、对数谐波噪声比(HNR),频谱谐度和心理声学频谱清晰度。
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个声学特征,包含以下低级描述符(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。

The openSMILE ‘emobase2010’ reference set 是基于the INTERSPEECH 2010 Paralinguistic Challenge feature set,配置文件为config/emobase2010.conf。
对持续时间和位置特征的规范化进行了一些调整。这个特性集包含了一套大大增强的低级描述符(LLDs),以及一套“emobase”相比更加精细化选择的函数列表。建议使用此特征集作为比较新的情感识别特征集和方法的参考,因为它代表当前最先进的情感和语言识别功能。
该集合包含1582个特征(与INTERSPEECH 2010 Paralinguistic 挑战集相同设置),其由34个低级描述符(LLDs)和34个相应的delta作为68个LLDs轮廓值,在此基础上应用21个函数得到1 428个特征,另外,对4个基于音高的LLD及其4个delta系数应用了19个函数得到152个特征,最后附加音高(伪音节)的数量和总数输入的持续时间(2个特征)。唯一的区别是INTERSPEECH 2010 paralinguistic挑战集标准化的是是“maxPos”和“minPos”特征,本配置被标准化为段长度。

官网:https://audeering.com/technology/opensmile/
官网提供的阅读手册:http://www.audeering.com/research-and-open-source/files/openSMILE-book-latest.pdf
参考链接1:https://blog.csdn.net/lccever/article/details/78743632

  • 10
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 以下是一个利用opensmile进行语音识别和分析的例子,使用Python实现的代码: ```python import opensmile import pandas as pd # 初始化opensmile smile = opensmile.Smile( feature_set=opensmile.FeatureSet.GeMAPSv01b, feature_level=opensmile.FeatureLevel.Functionals, ) # 读取音频文件 audio_file = "example.wav" # 提取特征 features = smile.process_file(audio_file) # 将特征转换为DataFrame df = pd.DataFrame(features, index=[]) # 打印DataFrame print(df) ``` 这个例子使用opensmile提取了一个音频文件的语音特征,并将其转换为DataFrame格式。这些特征可以用于语音识别和情感分析等任务。 ### 回答2: 利用opensmile进行语音识别和分析的一个例子是情感分析。情感分析是指对语音中的情感进行识别和分类的任务。下面是一个用Python实现的代码示例: ```python import os from opensmile import pyOpenSMILE # 设置opensmile的路径 opensmile_path = "/path/to/opensmile/opensmile-3.0/bin/linux_x64_standalone_static/SMILExtract" # 设置配置文件路径 config_file_path = "/path/to/opensmile/opensmile-3.0/config/IS13_ComParE.conf" # 设置输入音频文件路径 input_audio_path = "/path/to/input/audio.wav" # 设置输出特征文件路径 output_feature_path = "/path/to/output/features.csv" # 创建OpenSMILE对象 smile = pyOpenSMILE.OpenSMILE(opensmile_path, config_file_path) # 提取音频特征 smile.extract_feature(input_audio_path, output_feature_path) # 检查特征文件是否生成 if os.path.exists(output_feature_path): print("音频特征提取成功!") else: print("音频特征提取失败!") ``` 在上述代码中,我们首先导入opensmile库,并设置opensmile的可执行文件路径和配置文件路径。然后,我们设置输入音频文件路径和将要保存特征的输出文件路径。接下来,我们创建一个OpenSMILE对象。通过调用`extract_feature`方法,我们将输入音频文件提供给OpenSMILE,它将根据指定的配置文件提取音频中的情感特征,并将特征保存在指定的输出文件中。最后,我们检查特征文件是否生成,以确认特征提取是否成功。 请注意,以上代码仅为示例,需要根据个人需求和opensmile库的安装路径进行相应的修改。此外,opensmile库还提供其他功能,如音频预处理、支持不同配置文件、实时特征提取等。您可以根据需要进一步探索opensmile库的功能和使用方法。 ### 回答3: 一个利用opensmile进行语音识别和分析的例子是基于音频数据进行情绪识别。以下是一个使用python实现的简单代码示例: 首先,需要安装opensmile和pandas库,可以通过以下命令进行安装: ``` pip install opensmile pandas ``` 接下来,导入所需的库: ```python import librosa import pandas as pd import subprocess import os ``` 定义一个函数来提取音频数据的特征: ```python def extract_features(audio_file): subprocess.call(['SMILExtract', '-C', 'opensmile/config/IS13_ComParE.conf', '-I', audio_file, '-O', 'output.csv']) features = pd.read_csv('output.csv', delimiter=',').iloc[:, 1:] os.remove('output.csv') return features ``` 然后,定义一个函数来识别情绪: ```python def recognize_emotion(audio_file): features = extract_features(audio_file) # 在这里根据提取的特征进行情绪识别的处理 # 返回情绪标签结果 return emotion_label ``` 最后,可以调用`recognize_emotion`函数并传入音频文件路径来进行情绪识别: ```python audio_file = 'path_to_audio.wav' emotion_label = recognize_emotion(audio_file) print('识别结果:', emotion_label) ``` 以上代码仅提供了一个基本的示例。实际上,根据应用的需求,还需要对提取的特征进行进一步处理和模型训练,以获得更准确的情绪识别结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值