《openSMILE 用户手册》 第一章

语音情感计算经常会用到openSMILE进行语音特征的提取,openSMILE作为一款已经被很多研究者使用的提取情感特征的工具箱,却没有一个完整的中文版手册,也是为了自己查阅方便吧,慢慢翻译一下,算是记录自己的工作,如能给有需要的同行觉得有点用处当然好,即便不能方便什么人,也算是自己的一点积累吧。水平有限,难免错漏,请不吝赐教。先放上来,边写边修正和排版吧。

第1章

  关于openSMILE,我们通过为openSMILE的新用户回答两个重要的问题开始介绍openSMILE:什么是openSMILE?谁需要openSMILE?如果你想立即开始使用openSMILE,那么你应该直接阅读第二部分,如果你已经设法安装openSMILE,则可以直接从第2.3节开始。

1.1 什么是openSMILE?

  慕尼黑的开源媒体大型特征空间提取(openSMILE)工具包是一个模块化的,灵活的特征提取器,用于信号处理和机器学习应用。主要重点放在音频信号功能上。然而,由于其高度的抽象性,openSMILE组件还可用于分析来自其他模态的信号,例如生理信号,视觉信号和其他物理传感器,可给出合适输入的组件。它纯粹用C ++编写,具有快速,高效和灵活的架构,可运行在Linux,Windows和MacOS等各种主流平台上。openSMILE专为实时在线处理而设计,但也可以以批处理模式脱机处理大型数据集。这是一个很少在特征抽取软件中找到的功能。大部分相关的项目都是为离线提取而设计的,并且要求整个输入都存在。 openSMILE可以在新数据到达时递增地提取特征。通过使用PortAudio1库,openSMILE提供独立于平台的实时音频输入和实时音频回放,实现了音频特征的实时提取。
  为了便于交互操作,openSMILE支持读写数据挖掘和机器学习领域常用的各种数据格式。这些格式包括用于PCW WAVE音频文件,用于基于文本的CSV(逗号分隔值,电子表格格式)和ARFF(Weka数据挖掘)数据文件,HTK(隐马尔可夫工具包)参数文件和简单二进制浮点矩阵格式的二进制特征数据。
  使用开源软件gnuplot2,可以显示提取到了文件中的特征。由于其高度模块化的架构,openSMILE的优势在于几乎所有在特征提取过程中生成的中间数据(如窗口化音频数据,频谱等)可以被立即访问并保存到文件中以用于可视化或进一步处理。

1.2 谁需要openSMILE?

  openSMILE旨在用于研究应用程序,演示程序和原型早期验证。因此,目标用户群是研究人员和系统开发人员。应有以其紧凑的代码和模块化架构,使用openSMILE作为最终产品也是可以考虑的。不过,我们要强调的是openSMILE是仅仅发布在研究许可证的(详见下一节)。
  目前,openSMILE被全世界的研究人员和公司所使用正在从事语音识别(特征提取前端,关键词识别,等等),情感计算(情感识别,情感敏感虚拟代理等)的领域,和音乐信息检索(和弦标签,节拍追踪,起始检测等)。随着2.0开放源代码版本,我们把目标放在更广泛的多媒体社区,包括流行的openCV库,用于视频处理和视频特征提取。

1.3 许可

  openSMILE遵循双重授权模式。由于该项目的主要目标是通过本软件的广泛使用而有助于视听领域机器学习的研究,源代码和二进制文件可以在私人,研究和教育场合下免费使用。openSMILE的开放源代码版本禁止用于任何形式的商业产品。例如,公司的基础研究是允许的,但如果一个产品是研究的结果,我们要求你购买商业许可执照。请通过[email protected]与我们联系。(或访问我们的网站http://www.audeering.com获取更多信息)

1.4 历史

  openSMILE最初是在欧盟EU-FP7研究项目SEMAINE的范围内创建的(http://www.semaine-project.eu),并在那里的一个实时的情感对话系统中用于声音情感识别引擎和关键字检出。为研究服务的openSMILE社区开源版本是独立于主项目的发布的代码。
  第一个公开可用的openSMILE版本包含了第一个情绪与情感识别工具包openEAR作为特征提取作为核心。 openEAR被引入2009年的情感计算和智能交互(ACII)会议。一年后openSMILE(版本1.0.0)的第一个独立发布,旨在达成一个更广泛的音频分析研究者社区。它在2010年ACM多媒体开源软件挑战推出。这个第一个版本之后很快就发布了一个小错误修正版本(1.0.1)。自那时以来,在sourceforge的subversion版本库中进行开发。自2011年后,由于各种各样的内部和第三方项目许可问题,依然在私人仓库中继续发展。
  openSMILE 2.0(rc1)是1.0.1版本之后的下一个主要版本,包含最新版本核心组件的代码,进行了一长串的错误修正,新的组件以及改进的旧的组件,扩展文档,重构的源代码树和新的主要功能如多通道模式,并支持基于openCV的同步视听特征提取。
  版本2.1包含进一步修复,改善了标准INTERSPEECH挑战赛参数集的向后兼容性,支持读取CURRENNT创建的JSON神经网络文件,一个F0谐波组件,和一个用于整合WEKA SMO一起训练的模型的快速线性SVM sink组件,以及其他一些小的新功能组件和特征。这是由audEERING发布和支持的第一个版本。

1.5 功能 - 概述

  本节简要介绍openSMILE的功能。这些功能分为以下几类:数据输入,信号处理,普通数据处理,低级音频特征,函数,分类器和其他组件,数据输出及其他功能。
  
数据输入: openSMILE可以从以下文件格式读取数据:
RIFF-WAVE(PCM)(MP3,MP4,OGG等需要使用转换器先进行转换)
逗号分隔值(CSV)
HTK参数文件
WEKA的ARFF格式
通过openCV的视频流
此外,通过PortAudio支持任何PC声卡的实时录音。提供了一个信号发生器用于产生白噪声,正弦音和常量信号。

信号处理: 以下函数用于普通的信号处理或者信号的预处理(在特征提取之前):
窗函数(矩形,汉明,汉恩(升余弦),高斯,正弦,三角形,Bartlett,Bartlett-Hann,Blackmann,Blackmann-Harris,Lanczos)
预加重/去加重(即1阶高/低通滤波)
重采样(谱域算法)
FFT(幅度,相位,复合)和反相
通过样条插值进行频谱轴缩放(仅限开源版本)
幅度谱的dbA加权
自相关函数(ACF)(通过功率谱的IFFT)
平均幅度差分函数(AMDF)

数据处理: openSMILE可以执行诸如特征的标准化,修改和差分等操作:
均值 - 方差标准化(离线和在线)
幅度标准化(离线和在线)
Delta回归系数(和简易差分)
[SER07]中的加权差分
各种矢量操作:长度,元素相加,乘法,对数和功率。
移动平均过滤器,用于平滑随着时间变化的轮廓。

音频特征(低级别): 可以通过openSMILE计算以下低级描述符(音频专用):
Frame Energy 帧能量
Frame Intensity / Loudness (approximation) 帧强度/响度(近似值)
Critical Band spectra (Mel/Bark/Octave, triangular masking filters) 临界频带谱(Mel / Bark / Octave,三角遮蔽滤波器)
Mel-/Bark-Frequency-Cepstral Coefficients (MFCC) Mel/Bark频率倒谱系数(MFCC)
Auditory Spectra 听觉谱
Loudness approximated from auditory spectra. 听觉频谱近似响度。
Perceptual Linear Predictive (PLP) Coefficients 感知线性预测(PLP)系数
Perceptual Linear Predictive Cepstral Coefficients (PLP-CC) 感知线性预测倒谱系数(PLP-CC)
Linear Predictive Coefficients (LPC) 线性预测系数(LPC)
Line Spectral Pairs (LSP, aka. LSF) 线谱对(LSP,也称为LSF)
Fundamental Frequency (via ACF/Cepstrum method and via Subharmonic-Summation (SHS)) 基频(通过ACF /倒谱法和次谐波求和(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(八度扭曲半音谱)和CENS特征(能量标准化和平滑CHROMA)
CHROMA-derived Features for Chord and Key recognition CHROMA派生的和弦和声调识别特征
F0 Harmonics ratios F0谐波比率

视频功能(低级别): 基于openCV库,openSMILE可以计算以下视频低级别描述符:
HSV颜色直方图
局部二值模式(LBP)
LBP直方图
光流和光流直方图
人脸检测:所有这些特征都可以自动的从检测到的面部区域或从完整的照片中提取。

函数(function: 为了将音频和视频低级描述符的轮廓映射到固定维度的矢量上,可以应用以下函数:
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) 回归(线性和二次近似,回归误差)
Centroid 中心
Peaks 峰值
Segments 分段
Sample values 样本值
Times/durations 次数/持续时间
Onsets/Offsets 起始/偏移
Discrete Cosine Transformation (DCT) 离散余弦变换(DCT)
Zero-Crossings 过零率
Linear Predictive Coding (LPC) coefficients and gain 线性预测编码(LPC)系数和增益

分类器和其他组件: 音频处理任务的现场演示经常需要进行音频流分割。 openSMILE提供了语音活动检测(VAD)算法和转向探测器。进一步地,对提取的特征进行分类,其中的SVM分类器是使用LibSVM库实现的。
基于模糊逻辑的语音活动检测
基于预训练LSTM-RNN模型的语音活动检测
转向/语音分段检测器
LibSVM(在线)
SVM接收器(用于加载线性内核WEKA SMO模型)
GMM(eNTERFACE’12项目的实验性实施,即将发布)
可以加载RNNLIB和CURRENNT网络的LSTM-RNN(神经网络)分类器
语音情感识别预训练模型(openEAR)

数据输出: 为了将数据数据写入文件,与输入侧的格式有相同支持,除了一个额外的二进制矩阵格式:
RIFF-WAVE(PCM未压缩音频)
逗号分隔值(CSV)
HTK参数文件
WEKA ARFF文件
LibSVM功能文件格式
二进制浮点矩阵格式
此外,通过Portaudio库支持实时音频播放。

其他功能: 除了输入,信号处理,特征提取,函数和输出组件,openSMILE带有一些其他的功能(capabilites,为了避免混淆,我们这样做在这里不使用术语“features”),这使得使用openSMILE变得简单和多功能:

多线程独立组件 可以并行运行以利用多个CPU或CPU核心,从而对时间紧迫的特征提取进行加速。

插件支持 可以将其他组件构建为共享库(或Windows上的DLL)链接到openSMILE的核心API库。如果它们被放置在plugins子目录中,插件会在程序初始化的时候被自动检测到。

延伸日志 记录日志消息由smileLogger组件处理能够将日志消息保存到文件并打印到标准错误输出控制台。消息的细节可以通过设置日志级别来控制。为了更容易理解消息,分为消息(MSG),警告(WRN),错误(ERR)和调试(DBG)等消息级别。

灵活的配置 openSMILE可以只通过一个基于文本的配置文件进行完整配置。这个文件保存在一个简单但非常强大的属性文件格式中。文件中,每个组件都有它自己的部分,所有组件都可以通过它们的链接连接到一个中央数据存储器组件。配置文件甚至允许定义自定义命令行选项(例如输入和输出文件)以及包含其他配置文件来构建具有模块化配置的配置。被包含的配置文件的名字甚至可以在命令行中指定,以最大灵活化脚本。

增量处理 openSMILE中的所有组件遵循严格的指导原则来满足增量处理的要求。不允许访问完整的输入例如,在序列内来回搜索。主要是每个组件必须能够逐帧或至少尽快处理其数据。在离线情况下,可以允许某些例外组件进行特征提取,例如整体均值归一化的分量。

批处理模式下的多通道处理 对于某些需要多通道处理的任务,这显然只能用于离线(或缓冲)模式。 openSMILE自从版本2.0支持所有现有组件的多通道处理。

TCP / IP网络支持 在商业版本中,远程数据I / O API可用,它允许从openSMILE发送和接收数据(特征和消息),也可以通过TCP / IP网络连接对openSMILE进行远程控制(暂停/恢复/重新启动和发送配置)。


to be continue

猜你喜欢

转载自blog.csdn.net/lccever/article/details/78621892