1. OpenSmile 下载安装
windows下解压就可以使用
2. OpenSmile用途
提取声音信号的各类音频特征,主要是Low-Level Descriptors (LLDs)
3. OpenSmile使用
3.1 Windows下直接使用
通过命令行形式运行提取音频特征的。
① 先切换到处理文件SMILExtract_Release.exe所在的目录下
② 再使用语句:
SMILExtract_Release -C 配置文件 -I “要处理的音频” -O “要保存特征向量的路径及文件名”
---->控制输出数据格式 (参数)
=============================
-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格式文件
3.2 python中使用
3.2.1 单个音频文件LLD特征提取
1. 设置OpenSmile路径
2. 选择并设置使用的配置文件
3. 通过系统命令提取相关特征
import os
infilename = 'Ses01F_impro01_F002.wav'
outfilename = 'Ses01F_impro01_F002.csv'
#设置OpenSmile路径
exe_opensmile = 'D:/opensmile-2.3.0/bin/Win32/SMILExtract_Release'
#选择并设置使用的配置文件
path_config = 'D:/opensmile-2.3.0/config/ComParE_2016.conf'
#设置系统命令
opensmile_options = '-configfile ' + path_config + ' -appendcsvlld 0 -timestampcsvlld 1 -headercsvlld 1'
outputoption = '-lldcsvoutput'
opensmile_call =exe_opensmile + ' ' + opensmile_options + ' -inputfile ' + infilename + ' ' + outputoption + ' ' + outfilename
#执行
os.system(opensmile_call)
3.2.2 批处理
import os
from multiprocessing.dummy import Pool as ThreadPool
# Set your opensmile Extracter and path here
exe_opensmile = 'D:/opensmile-2.3.0/bin/Win32/SMILExtract_Release'
path_config = 'D:/opensmile-2.3.0/config/ComParE_2016.conf'
# Set your data path and output path here
data_path = "E:/Dataset/IEMOCAP_full_release/allwave"
save_path = './audio_features_ComParE2016/' # output folder
# Extractor set-ups
opensmile_options = '-configfile ' + path_config + ' -appendcsvlld 0 -timestampcsvlld 1 -headercsvlld 1'
outputoption = '-lldcsvoutput'
def feature_extract(fn):
infilename = addr_files + '/'+fn
instname = os.path.splitext(fn)[0]
outfilename = save_path + '/' + instname + '.csv'
opensmile_call = exe_opensmile + ' ' + opensmile_options + ' -inputfile ' + infilename + ' ' + outputoption \
+ ' ' + outfilename + ' -instname ' + instname + ' -output ?'
os.system(opensmile_call)
for root, dirs, files in os.walk(data_path):
for dir in dirs:
files = os.listdir(data_path+'/'+dir)
addr_files=data_path+'/'+dir
pool = ThreadPool()
pool.map(feature_extract, files)
pool.close()
pool.join()
4. 配置文件介绍(提供的各类特征集)
4.1 用于情感分析的特征集
4.2 详细介绍
1. IS09_emotion.conf
出现在CSV文件中的16个低级描述符(LLDs)的名称:
- pcm_RMSenergy 信号帧均方根能量
- mfcc 梅尔频率倒谱系数1-12
- Pcm_zcr 时间信号的过零率(基于帧)
- voiceProb 从ACF计算的发声概率。
- F0 从倒谱计算的基频
附加到低级描述符名称的后缀_sma表示它们是通过窗口长度为3的移动平均滤波器进行平滑。
附加到sma的后缀_de表示当前特征是低级描述符平滑后的一阶delta系数(微分)。
2. IS10_paraling.conf
出现在CSV文件中34个低级描述符(LLDs)的名称:
- pcm_loudness 归一化强度提高到0.3的幂的响度
- mfcc 梅尔频率倒谱系数0-14
- logMelFreqBand 梅尔频带的对数功率0-7(分布范围内从0到8 kHz)
- lspFreq 从8个LPC系数计算出的8个线谱对频率
- F0finEnv 平滑的基频轮廓线
- voicingFinalUnclipped 最终基频候选的发声概率
四个音高相关的LLD名称:
- F0final 平滑的基频频率
- jitterLocal 本地(帧到帧)抖动(音调周期长度偏差)
- jitterDDP 差分帧间抖动(‘Jitter of the Jitter’)
- shimmerLocal 本地(帧到帧)闪烁(音调周期幅度偏差)
3. 其他配置文件相似
Ref: