import os
import numpy as np
import csv
from util import util_extract
# 每个特征集的特征数量
FEATURE_NUM = {
'IS09_emotion': 384,
'IS10_paraling': 1582,
'IS11_speaker_state': 4368,
'IS12_speaker_trait': 6125,
'IS13_ComParE': 6373,
'ComParE_2016': 6373
}
def excuteCMD(_pathExcuteFile, _pathConfig, _pathAudio, _pathOutput):
cmd = _pathExcuteFile + " -C " + _pathConfig + \
" -I " + _pathAudio + " -csvoutput " + _pathOutput
print(cmd)
return cmd
def coverCsvToNumpy(nameFront):
csvfile = open(nameFront, 'r')
reader = [each for each in csv.DictReader(csvfile, delimiter=';')]
dataList = []
for row in reader:
dataList.append([])
for i in row:
# if i == None:
# continue
# #print(i)
if ('name' in i or 'frameTime' in i):
continue
dataList[len(dataList) - 1].append(row[i])
csvfile.close()
npList = np.array(dataList)
# print(npList.dtype)
# reader = csv.reader(open(nameFront, 'r'))
# rows = [row for row in reader]
# last_line = rows[-1]
# print(FEATURE_NUM["IS09_emotion"])
# return last_line['unknown'][1: FEATURE_NUM["IS09_emotion"] + 1]
def _main_deal_dir_mfcc(file_name:str,package_name):
pathExecute = "E:\\file\opensmile-3.0.1-win-x64"
pathModel = "mfcc\\MFCC12_0_D_A"
pathExcuteFile = pathExecute + "\\bin\\" + "SMILExtract.exe"
pathConfig = pathExecute + "\\config\\" + pathModel + ".conf"
#数据集的相关位置
pathAudioRoot = "H:\IEMOCAP_full_release\Session{}\sentences\wav".format(file_name[4])
file_path = "./" + file_name.split("_")[0]
if os.path.exists(file_path) == False:
os.mkdir(file_path)
csv_filedir = "./" + file_name.split("_")[0] + "/" + file_name + ".csv"
_pathAudio = os.path.join(pathAudioRoot, package_name, file_name) + ".wav"
os.system(excuteCMD(pathExcuteFile, pathConfig, _pathAudio, csv_filedir))
return coverCsvToNumpy(csv_filedir)
使用目标数据集,来进行语音特征集提取
本文是采用Windows环境下的opensmil进行提取