Opensmile的安装与简单使用
Opensmile官方下载地址(点击OPENSMILE ON GITHUB即可跳转到链接)
github界面: 自行根据系统选择下载自行根据系统选择下载
Windows系统
安装与测试
- 下载后解压到任意路径即可
- 验证是否安装成功
- 打开命令行窗口
cd
到openSMILE安装路径的bin目录下
- 输入命令:
SMILExtract -h
,回车
显示以上界面即为安装成功。
- 打开命令行窗口
简单使用
使用 OpenSMILE(The Munich Open-Source Large-scale Multimedia Feature Extractor)提取音频特征的一般步骤:
-
安装 OpenSMILE:首先,需要安装 OpenSMILE。你可以从其官方网站下载并安装 OpenSMILE 软件包。安装完成后,确保 OpenSMILE 的可执行文件在系统路径中可用。
-
准备音频文件:准备要提取特征的音频文件。这些音频文件应该是支持的格式(例如,WAV、MP3等)。
-
定义配置文件:OpenSMILE 需要一个配置文件来指定要提取的特征。配置文件通常是一个文本文件,指定了要提取的特征集合以及相关的参数。
-
执行特征提取:使用 OpenSMILE 的命令行工具,在终端中运行命令来执行特征提取。命令的参数包括音频文件的路径、配置文件的路径以及输出文件的路径。
-
处理提取的特征:提取完特征后,你可以对特征进行进一步的处理,例如归一化、降维等。
方式一:Windows下直接在命令行使用
这里是一个简单的例子,展示如何在命令行使用 OpenSMILE 进行特征提取:
SMILExtract -C config/emobase.conf -I input.wav -O output.csv
在这个例子中:
SMILExtract
是 OpenSMILE 的可执行文件。-C config/emobase.conf
指定了配置文件的路径。-I input.wav
指定了输入音频文件的路径。-O output.csv
指定了输出 CSV 文件的路径。
执行该命令后,OpenSMILE 将会读取 input.wav
文件,使用 emobase.conf
配置文件中指定的特征集合提取特征,并将提取的特征保存到 output.csv
文件中。
方式二:使用Python调用
直接调用 OpenSMILE 的可执行文件:这种方法通过在 Python 中调用系统命令来执行 OpenSMILE。可以使用 subprocess
模块来调用 OpenSMILE 的可执行文件,并传递参数进行特征提取。
subprocess
是 Python 标准库中的一个模块,用于创建新的进程,连接到它们的输入、输出和错误管道,并获取它们的返回值。
import subprocess
# OpenSMILE 可执行文件路径,自行调整
exe_opensmile = r'D:\AD_Tool\opensmile-3.0-win-x64\bin\SMILExtract.exe'
# 配置文件路径,自行调整
path_config = r'D:\AD_Tool\opensmile-3.0-win-x64\config\mfcc\MFCC12_0_D_A.conf'
# 输入音频文件路径
infilename = 'test1.wav'
# 输出特征文件路径
outfilename = 'test.csv'
# 构建命令
command = [
exe_opensmile,
'-C', path_config,
'-I', infilename,
'-O', outfilename
]
# 执行命令
subprocess.run(command)
pycharm调用openSmile接口简单使用
-
安装 opensmile Python 包:
pip install opensmile
-
简单示例
import opensmile # 查看opensmile版本 print(opensmile.__version__) # 示例:使用opensmile提取特征 def extract_features(input_file, output_file): # 创建opensmile实例 smile = opensmile.Smile( feature_set=opensmile.FeatureSet.eGeMAPSv02, feature_level=opensmile.FeatureLevel.LowLevelDescriptors ) # 提取特征 features = smile.process_file(input_file) # 保存特征到文件 with open(output_file, 'w') as f: for feature in features: f.write(','.join(map(str, feature)) + '\n') # 测试提取特征 input_file = 'input.wav' output_file = 'output.csv' extract_features(input_file, output_file) print("Features extracted and saved successfully!")