OpenSmile介绍和使用

1. OpenSmile 下载安装

官网下载:openSMILE - audEERING

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)的名称:

  1. pcm_RMSenergy  信号帧均方根能量
  2. mfcc  梅尔频率倒谱系数1-12
  3. Pcm_zcr  时间信号的过零率(基于帧)
  4. voiceProb  从ACF计算的发声概率。
  5. F0  从倒谱计算的基频

附加到低级描述符名称的后缀_sma表示它们是通过窗口长度为3的移动平均滤波器进行平滑。

附加到sma的后缀_de表示当前特征是低级描述符平滑后的一阶delta系数(微分)。 

2.  IS10_paraling.conf

       出现在CSV文件中34个低级描述符(LLDs)的名称:

  1. pcm_loudness  归一化强度提高到0.3的幂的响度
  2. mfcc  梅尔频率倒谱系数0-14
  3. logMelFreqBand  梅尔频带的对数功率0-7(分布范围内从0到8 kHz)
  4. lspFreq  从8个LPC系数计算出的8个线谱对频率
  5. F0finEnv  平滑的基频轮廓线
  6. voicingFinalUnclipped  最终基频候选的发声概率

      四个音高相关的LLD名称:

  1. F0final  平滑的基频频率
  2. jitterLocal  本地(帧到帧)抖动(音调周期长度偏差)
  3. jitterDDP  差分帧间抖动(‘Jitter of the Jitter’)
  4. shimmerLocal  本地(帧到帧)闪烁(音调周期幅度偏差)

3. 其他配置文件相似

Ref:

(38条消息) openSMILE 简介_qq_22237367的博客-CSDN博客_opensmile 

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答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) ``` 以上代码仅提供了一个基本的示例。实际上,根据应用的需求,还需要对提取的特征进行进一步处理和模型训练,以获得更准确的情绪识别结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值