- 前置知识:
- IS09 、eGeMAPS是以整个句子进行提取的,没有进行分帧载提取。
- 特征维度:
- IS09->384维
- eGeMAPS->88维
- 直接上代码(根据自己的环境配置路径即可运行):
""" 使用opensmile提取is09的特征集 """ import os import csv import numpy as np # 设置配置文件 pathConfig = r"F:\opensmile-3.0.1-win-x64\config\is09-13\IS09_emotion.conf" # 设置exe的路径: pathExcuteFile = r"F:\opensmile-3.0.1-win-x64\bin\SMILExtract.exe" # 设置wav的路径: pathAudioRoot = r"E:\repository\Reappearance_Multimodality\code\wavs" # wav文件所在文件夹位置 # 过度文件夹 用于保存csv特征 file_path = r"E:\repository\code\csnd\corpus" def excuteCMD(excutefile,config,audio,output): """ 定义调用cmd执行指令的函数 """ cmd=excutefile+" -C "+config+" -I "+audio+" -csvoutput "+output print(cmd) return cmd def csvtolist(namefront): """ 将csv转为list进行输出查看 """ with open(namefront) as f: f_csv=csv.reader(f) header=next(f_csv) # 取出标题 第一行 l = [] for row in f_csv: print("原始的:\n", row) l = row[0].split(';')[2:] # 以‘;’进行分割,并去掉前两个元素 得到一条语音的特征 前两个特征是:'unknown';0.000000 print(np.array(l).shape) print("去掉前两个元素并转为列表后:\n", l) float_l = list(map(float, l)) # 将字符串型的 元素转为 float 型的 #!!!类型转换的方法 print("将列表里的字符串转为浮点型:\n", float_l) print(len(l)) print(np.array(l).shape) os.remove(namefront) # 读取完就删除原来的文件 return float_l for wav in os.listdir(pathAudioRoot): pathaudio=os.path.join(pathAudioRoot,wav) print(pathaudio) csv_filedir = os.path.join(file_path, wav[0:-4]) + '.csv' # 保存csv特征文件的路径 print("保存路径:", csv_filedir) os.system(excuteCMD(pathExcuteFile,pathConfig,pathaudio,csv_filedir)) # 使用os.system执行指令 l=csvtolist(csv_filedir)
代码中已增加print查看细节。
opensmile python 提取wav文件的IS09特征
于 2022-09-30 08:36:59 首次发布