提交 1f3b1dfd 编写于 作者: xuchaoxin1375's avatar xuchaoxin1375

improve the create_meta module and extractor module bug fix and other glitches fix

上级 1f20e851
......@@ -5,7 +5,27 @@
- vscode(编写此文档时的使用注意事项)
- 当您为项目增加一个模块(py文件)的时候,需要重载窗口,才可以正确被检测到相应模块,否则相关导入语句会无法识别而产生蚯蚓线,尽管这不影响运行
### 调试复杂程序的idea
调试复杂程序需要一些技巧和经验。以下是一些建议和规范,可以帮助您更有效地调试代码:
1. 使用版本控制:使用版本控制系统(如 Git)来记录代码的更改历史,以便您可以追踪问题的来源,并轻松地回滚到之前的版本。
2. 编写测试:编写测试用例来验证代码的正确性,并确保您的修改不会破坏现有的功能。
3. 使用日志:使用日志记录程序运行时的状态和错误信息,以便您可以更轻松地定位和排除问题。
4. 分析堆栈:当程序出现异常时,使用堆栈跟踪来了解异常的来源,并追踪调用链。
5. 使用调试器:使用调试器(如 `pdb`)来在代码中设置断点,并逐步执行代码,以了解程序的状态和变量的值。
6. 精简代码:如果您正在调试的代码非常复杂,您可以尝试将其精简为一个最小的可重现问题,以便更轻松地定位和解决问题。
7. 避免复杂性:尽可能避免复杂的代码结构和算法,以减少出现错误的可能性,并使代码更易于调试和维护。
8. 阅读文档:仔细阅读文档,并确保您理解所有使用的库和框架的工作原理和限制。
9. 寻求帮助:与同事、社区和论坛交流,并请教其他开发者的意见和建议。
### 本项目中地代码调试
- 随着项目的开发,工程文件越来越大,程序可能出bug的地方也会增多,特别是中途重构项目,还可能使得某些原本正常的代码变得有风险或者直接出错
- 使用IDE进行断点调试是一种基础的方式,对于小程序来说是很方便的
- 但是对于大的程序就显得力不从心,而且断点调试运行程序会慢的多,下面提出一些改进的备选方式来调试复杂程序
- 在需要暂停的地方手动地处抛出调试性异常
- 采用pdb模块来调试
## 本项目用到的一些技巧和规范
......@@ -310,5 +330,3 @@ Scikit-learn中提供了大量的`estimator`类,包括分类器、回归器、
......@@ -686,11 +686,21 @@ SVR(Support Vector Regression)是一种基于支持向量机(SVM)的回
- 需Dropout只应该在训练过程中使用,而不应该在测试过程中使用。在测试过程中,应该使用所有的神经元来进行预测,以获得更准确的结果。
- 因此,在测试过程中,可以通过在训练过程中使用Dropout时,对每个神经元的输出进行缩放来实现。这种缩放可以通过在Keras中使用`model.predict()`函数的`predict()`方法来实现。
### 数据平衡balance
### 数据平衡balance@shuffle🎈
#### balance
- 机器学习的许多接口的参数中提供了`balance` 参数,一般是一个布尔值,用于控制是否在训练和测试数据集中进行数据平衡。
- 如果将 `balance` 设置为 `True`,则在划分训练和测试数据集之前,会对原始数据集进行重新采样,以使得每个类别的样本数量相等或接近相等。
- 这可以避免训练和测试数据集中类别不平衡导致的模型偏差和泛化性能下降。
- 注意,由于balance操作对于数据集划分有一定要求,不是任何数据集都可以执行balance操作(例如三分类中,test set中只缺失了某一个类别的样本,这中情况下执行balance,将导致测试集样本数量为空)
- 因此,即使我们对ER对象传入balance=True,依然不能保证balance能够执行,调用load_data后,需要检查返回的balance操作是否执行的结果
#### shuffle
- 通常,只要数据集结构合理,那么利用shuffle操作(随机打乱样本顺序),可以有效减少balance失败的情况
- 往往数据集都是有序的,这就容易导致样本不均衡导致的模型泛化能力下降等不良影响
- 在本项目中,shuffle被安排在`audio.create_meta`模块中实现,也就是创建语音文件元数据的地方,
## 识别系统的模块和结构🎈
......
......@@ -9,7 +9,7 @@ from joblib import load
from audio.converter import convert_audio
from config.EF import MCM, ava_features
from config.MetaPath import bclf, brgr
from config.MetaPath import bclf, brgr,project_dir
def get_used_keys(config_dict):
......@@ -97,6 +97,10 @@ def extract_feature(audio_file_name, f_config):
raise ValueError(f"{f_config}包含不受支持的特征名字,请在{ava_features}中选取")
try:
print(audio_file_name,"@{audio_file_name}")
#考虑将此时的工作路径切换为项目根目录,以便利用相对路径访问文件
os.chdir(project_dir)
# sys.exist()
with soundfile.SoundFile(audio_file_name) as sound_file:
# 成功打开
pass
......
......@@ -18,8 +18,9 @@ from config.MetaPath import (
savee,
savee_files_glob,
)
emodb_files_glob,ravdess_files_glob,savee_files_glob = [
str(p) for p in [emodb_files_glob,ravdess_files_glob,savee_files_glob]
emodb_files_glob, ravdess_files_glob, savee_files_glob = [
str(p) for p in [emodb_files_glob, ravdess_files_glob, savee_files_glob]
]
......@@ -39,13 +40,15 @@ def check_meta_names(e_config, train_name=None, test_name=None, db=""):
"""
def create_emodb_csv(
def create_emodb_meta(
e_config=None,
train_name=None,
test_name=None,
train_size=0.8,
verbose=1,
shuffle=False,
shuffle=True,
balance=False,
sort=True,
):
"""
Reads speech emodb dataset from directory and write it to a metadata CSV file.
......@@ -59,7 +62,7 @@ def create_emodb_csv(
test_name (str):
the output csv filename for testing data, default is 'test_emo.csv'
train_size (float):
the ratio of splitting training data, default is 0.8 (80% Training data and 20% testing data)
the ratio of splitting training data, default is 0.8
- 可以考虑使用sklearn的model_section模块提供的api来完成数据划分操作,例如train_test_split()方法
verbose (int/bool):
......@@ -126,25 +129,34 @@ def create_emodb_csv(
X_test = target["path"][train_samples:]
y_train = target["emotion"][:train_samples]
y_test = target["emotion"][train_samples:]
print(e_config)
# print(e_config)
# train_name=create_tag_name(emodb,partition="train")
# test_name=create_tag_name(emodb,partition="test")
# print(X_train,y_train)
# print(train_name,test_name)
pd.DataFrame({"path": X_train, "emotion": y_train}).to_csv(train_name)
pd.DataFrame({"path": X_test, "emotion": y_test}).to_csv(test_name)
write_to_csv(train_name, test_name, sort, X_train, X_test, y_train, y_test)
def write_to_csv(train_name, test_name, sort, X_train, X_test, y_train, y_test):
df_train = DataFrame({"path": X_train, "emotion": y_train})
df_test = DataFrame({"path": X_test, "emotion": y_test})
if sort:
df_train.sort_values(by="emotion").to_csv(train_name)
df_test.sort_values(by="emotion").to_csv(test_name)
##
def create_savee_csv(
def create_savee_meta(
e_config=None,
train_name=None,
test_name=None,
train_size=0.8,
verbose=1,
subset_size=1,
shuffle=False,
shuffle=True,
balance=False,
sort=True,
):
db = savee
train_name, test_name = check_meta_names(e_config, train_name, test_name, db)
......@@ -178,107 +190,117 @@ def create_savee_csv(
paths.append(audio)
emos.append(emo)
df = DataFrame({"path": paths, "emotion": emos})
# emo_bool_mask=df["emotion" ]
emo_bool_mask = df["emotion"].isin(e_config)
df = df[emo_bool_mask]
print(f"{df.shape=}")
n_samples = len(df)
p_e_df = DataFrame({"path": paths, "emotion": emos})
# emo_bool_mask=df["emotion"]
emo_bool_mask = p_e_df["emotion"].isin(e_config)
p_e_df = p_e_df[emo_bool_mask]
if verbose:
print(f"{p_e_df.shape=}")
n_samples = len(p_e_df)
print("[savee] Total files to write:", n_samples)
# dividing training/testing sets
test_samples: int = int((1 - train_size) * n_samples)
train_samples: int = int(train_size * n_samples)
if verbose:
# dividing training/testing sets
test_samples: int = int((1 - train_size) * n_samples)
train_samples: int = int(train_size * n_samples)
print(
f"[{db}_{e_config}] Training samples:",
train_samples,
"\nTesting samples:",
test_samples,
)
# paths=df["path"].tolist()
# emos=df["emotion"].tolist()
e_config_paths = df["path"]
e_config_emos = df["emotion"]
spl = tts(e_config_paths, e_config_emos, train_size=train_size, shuffle=shuffle)
X_train, X_test, y_train, y_test = spl
# df_e_config=
# paths = p_e_df["path"]
# emotions = p_e_df["emotion"]
# spl = tts(paths, emotions, train_size=train_size, shuffle=shuffle)
# X_train, X_test, y_train, y_test = spl
print(train_name, "@{train_name}")
print(test_name, "@{test_name}")
DataFrame({"path": X_train, "emotion": y_train}).to_csv(train_name, index=False)
DataFrame({"path": X_test, "emotion": y_test}).to_csv(test_name, index=False)
print("文件创建完毕!")
return spl
# DataFrame({"path": X_train, "emotion": y_train}).to_csv(train_name, index=False)
# DataFrame({"path": X_test, "emotion": y_test}).to_csv(test_name, index=False)
# write_to_csv(train_name, test_name, sort, X_train, X_test, y_train, y_test)
spl = tts(p_e_df, train_size=train_size, shuffle=shuffle)
Xy_train, Xy_test = spl
from_df_write_to_csv(train_name=train_name, test_name=test_name, sort=sort, Xy_train=Xy_train, Xy_test=Xy_test)
# test
# res=create_savee_csv(e_config=e_config_def)
if verbose:
print(train_name, "@{train_name}")
print(test_name, "@{test_name}")
print("文件创建完毕!")
return spl
##
target_debug = []
def create_ravdess_csv(
e_config=None, train_name=None, test_name=None, train_size=0.75, verbose=1
def create_ravdess_meta(
e_config=None,
train_name=None,
test_name=None,
train_size=0.75,
verbose=1,
shuffle=True,
balance=False,
sort=True,
):
"""
Reads speech training(RAVDESS) datasets from directory and write it to a metadata CSV file.
params:
emotions (list): list of emotions to read from the folder, default is e_config
train_name (str): the output csv filename for training data, default is 'train_RAVDESS.csv'
test_name (str): the output csv filename for testing data, default is 'test_RAVDESS.csv'
train_name (str): the output csv filename for training data,
test_name (str): the output csv filename for testing data,
verbose (int/bool): verbositiy level, 0 for silence, 1 for info, default is 1
"""
db = ravdess
target = {"path": [], "emotion": []}
# 声明外部变量,用于临时调试!
global target_debug
target_debug = target
meta_dict = {"path": [], "emotion": []}
# 这个数据库文件比较多,为了敏捷性,控制只处理特定情感的文件而不是全部情感文件
# 我们将TESS,RAVDESS语料库放在了训练集目录training
print("[RAVDESS] files meta extacting...")
print(f"{db} files meta extacting...")
if e_config is None:
raise ValueError("[RAVDESS] e_config is None")
raise ValueError(f"{db}e_config is None")
for e in e_config:
# for training speech directory
ravdess_file_glob_emo = f"{ravdess_files_glob}/*_{e}.wav"
total_files = glob(ravdess_file_glob_emo)
for i, path in enumerate(total_files):
target["path"].append(path)
target["emotion"].append(e)
meta_dict["path"].append(path)
meta_dict["emotion"].append(e)
# 提示所有训练集文件meta处理完毕
if verbose and total_files:
print(f"There are {len(total_files)} training audio files for category:{e}")
target = DataFrame(target)
meta_df = DataFrame(meta_dict)
# print(target)
# train_name,test_name =file_names(train_name,test_name)
train_name, test_name = meta_paths_of_db(db, e_config=e_config)
X_train, X_test = tts(target, test_size=1-train_size, random_state=0)
print(X_train[:5], "@{X_train}")
Xy_train, Xy_test = tts(
meta_df, train_size=train_size, random_state=0, shuffle=shuffle
)
print(Xy_train[:5], "@{X_train}")
print(train_name, "@{train_name}")
DataFrame(X_train).to_csv(train_name)
DataFrame(X_test).to_csv(test_name)
from_df_write_to_csv(train_name=train_name, test_name=test_name, sort=sort, Xy_train=Xy_train, Xy_test=Xy_test)
if verbose:
print("ravdess db was splited to 2 csv files!")
print(f"the train/test size rate is:{train_size}:{(1-train_size)}")
def from_df_write_to_csv(train_name="", test_name="", sort=True, Xy_train=None, Xy_test=None):
train_df = DataFrame(Xy_train)
test_df = DataFrame(Xy_test)
if sort:
sorted_train_df = train_df.sort_values(by="emotion")
sorted_test_df = test_df.sort_values(by="emotion")
sorted_train_df.to_csv(train_name)
sorted_test_df.to_csv(test_name)
# 不可以挪到顶部,因为下面的selector的定义需要用到上面定义的函数
selector = {
emodb: create_emodb_csv,
ravdess: create_ravdess_csv,
savee: create_savee_csv,
emodb: create_emodb_meta,
ravdess: create_ravdess_meta,
savee: create_savee_meta,
}
def create_csv_by_metaname(meta_file):
def create_csv_by_metaname(meta_file, shuffle=True):
"""根据给定的符合本项目的文件名构造规范的文件名,生成对应的train/test dataset metadata files
Parameters
......@@ -303,69 +325,12 @@ def create_csv_by_metaname(meta_file):
selector[db](
e_config=e_config,
shuffle=shuffle,
# train_name=train_name,
# test_name=test_name
)
def create_meta_csv(
train_meta_files,
test_meta_files,
dbs=None,
e_config=None,
verbose=1,
override_csv=False,
):
"""
@deprecated
Write available CSV files in `self.train_desc_files` and `self.test_desc_files`
determined by `self._set_metadata_filenames()` method.
## Note:
硬编码实现:
if emodb in train_csv_file:
write_emodb_csv(
self.e_config,
train_name=train_csv_file,
test_name=test_csv_file,
verbose=self.verbose,
)
if self.verbose:
print("[I] Generated EMO-DB CSV meta File")
elif ravdess in train_csv_file:
write_ravdess_csv(
self.e_config,
train_name=train_csv_file,
test_name=test_csv_file,
verbose=self.verbose,
)
if self.verbose:
print("[I] Generated RAVDESS CSV meta File")
"""
meta_handler_dict = {emodb: create_emodb_csv, ravdess: create_ravdess_csv}
for train_csv_file, test_csv_file in zip(train_meta_files, test_meta_files):
# 使用Path对象的`/`操作符连接路径
# train_csv_file = (meta_dir / train_csv_file).name
# test_csv_file = (meta_dir / test_csv_file).name
# 兼容性的写法
if os.path.isfile(train_csv_file) and os.path.isfile(test_csv_file):
# file already exists, just skip writing csv files
if not override_csv:
continue
if dbs:
for db in dbs:
if meta_handler_dict.get(db) is None:
raise ValueError(f"{db} not recognized")
meta_handler_dict[db](
e_config,
train_name=train_csv_file,
test_name=test_csv_file,
verbose=verbose,
)
if verbose:
print(f"[I] Generated {db} CSV meta File")
##
if __name__ == "__main__":
# write_emodb_csv(e_config=AHNPS)
......@@ -373,7 +338,8 @@ if __name__ == "__main__":
name1 = "test_emodb_AS.csv"
# create_csv_by_metaname(name1)
name2 = "train_savee_AS.csv"
create_csv_by_metaname(name2)
name3 = "test_savee_HNS.csv"
create_csv_by_metaname(name3, shuffle=True)
##
# import numpy as np
......
import os
from collections import defaultdict
import ipdb
import numpy as np
import pandas as pd
......@@ -38,6 +39,7 @@ class AudioExtractor:
verbose=True,
classification_task=True,
balance=True,
shuffle=True,
):
"""
初始化AE对象,在init中对构造器中传入None或者不传值得参数设置了默认值,默认参数为None是参考Numpy的风格
......@@ -73,6 +75,7 @@ class AudioExtractor:
self.features_dir = features_dir # 默认为features目录
self.classification_task = classification_task
self.balance = balance
self.shuffle=shuffle
# input dimension
self.feature_dimension = None
# 记录最后一次提取语音文件信息
......@@ -91,7 +94,7 @@ class AudioExtractor:
def get_partition_features(self, partition) -> np.ndarray:
"""将包含若干个二维ndarray的列表vstack成1个二维ndarray
self.features是一个包含若干个同列数的二维数组的list,这里将list中的二维数组合并为1个二维数组返回之
Parameters
----------
partition : str
......@@ -100,7 +103,7 @@ class AudioExtractor:
Returns
-------
np.ndarray
合并完成的矩阵
合并完成的二维数组,而不是list
Raises
------
......@@ -110,7 +113,7 @@ class AudioExtractor:
# print("len(self.train_features),len(self.test_features):")
# print(len(self.train_features),len(self.test_features))
# return
partition = validate_partition(partition)
partition = validate_partition(partition,Noneable=False)
if partition == "test":
res = np.vstack(self.test_features) if self.test_features else np.array([])
else:
......@@ -151,7 +154,7 @@ class AudioExtractor:
if not os.path.exists(meta_file):
# create_csv_by_meta_name
print(f"{meta_file} does not exist,creating...😂")
create_csv_by_metaname(meta_file)
create_csv_by_metaname(meta_file,shuffle=self.shuffle)
else:
print(f"meta_file存在{meta_file}文件!")
df_meta = pd.read_csv(meta_file)
......@@ -480,9 +483,9 @@ class AudioExtractor:
self._balance_data(partition=partition)
# shuffle
if shuffle:
self.shuffle_data_by_partition(partition)
self.shuffle_by_partition(partition)
def shuffle_data_by_partition(self, partition):
def shuffle_by_partition(self, partition):
"""打乱数据顺序
Parameters
......@@ -501,7 +504,9 @@ class AudioExtractor:
self.train_emotions,
self.train_features,
) = shuffle_data(
self.train_audio_paths, self.train_emotions, self.train_features
self.train_audio_paths, self.train_emotions,
# self.train_features
self.get_partition_features("train")
)
elif partition == "test":
(
......@@ -509,7 +514,9 @@ class AudioExtractor:
self.test_emotions,
self.test_features,
) = shuffle_data(
self.test_audio_paths, self.test_emotions, self.test_features
self.test_audio_paths, self.test_emotions,
# self.test_features
self.get_partition_features("test")
)
else:
raise TypeError("Invalid partition, must be either train/test")
......@@ -696,6 +703,8 @@ def shuffle_data(audio_paths, emotions, features):
# 根据统一的乱序序列,便于统一audio_paths,emotions,features
# 因此这里不可用直接地对三个列表各自地运行shuffle或permutation,会导致对应不上
p = np.random.permutation(length)
#手动在此处抛出调试性异常(此处采用pdb模块来调试)
# raise ValueError("short!")
audio_paths = [audio_paths[i] for i in p]
emotions = [emotions[i] for i in p]
features = [features[i] for i in p]
......@@ -709,7 +718,7 @@ def load_data_from_meta(
f_config=None,
e_config=None,
classification_task=True,
shuffle=False,
shuffle=True,
balance=False,
) -> dict:
"""导入语音数据,并返回numpy打包train/test dataset相关属性的ndarray类型
......@@ -743,6 +752,7 @@ def load_data_from_meta(
e_config=e_config,
classification_task=classification_task,
balance=balance,
shuffle=shuffle,
verbose=True,
)
......@@ -754,7 +764,8 @@ def load_data_from_meta(
)
# Loads testing data
ae.load_data_preprocessing(
meta_files=test_meta_files, partition="test", shuffle=shuffle
meta_files=test_meta_files, partition="test",
shuffle=shuffle
)
# 以train集为例检查self属性
......@@ -770,13 +781,13 @@ def load_data_from_meta(
"y_test": np.array(ae.test_emotions),
"train_audio_paths": np.array(ae.train_audio_paths),
"test_audio_paths": np.array(ae.test_audio_paths),
"balance": ae.balance,
"balance": ae.balance,#反馈是否顺利执行了balance
"ae": ae,
}
if __name__ == "__main__":
ae = AudioExtractor(f_config=f_config_def)
ae = AudioExtractor(f_config=f_config_def,shuffle=True)
print(ae)
ae._extract_feature_in_meta(meta_path=train_emodb_csv)
......
......@@ -18,8 +18,12 @@ Sequence = collections.abc.Sequence # type:ignore
# FileName = NewType('FileName', str)
# 控制保存文件的目录(例如相对于那个目录的相对路径或者直接采用绝对路径)
base_dir = Path(r"D:/repos/CCSER/SER")
# 尽管可以利用base_dir这个变量来指定保存文件的绝对路径,但是可以采用先cd到项目根目录,
# project_dir = Path(r"D:/repos/CCSER/SER")
current_file=Path(__file__)
current_dir=current_file.parent
project_dir=(current_dir/"..").resolve()
# 尽管可以利用project_dir这个变量来指定保存文件的绝对路径,但是可以采用先cd到项目根目录,
# 然后执行`py .\tkinter_client\er_tk.py `的方式运行
# (而不是直接在./tkinter_client下执行`py er_tk.py`),这样相对路路径就会从项目根目录开始
meta_dir = Path("./meta_files")
......@@ -32,7 +36,7 @@ savee_files_glob = "data/savee/AudioData/*/*.wav"
meta_dir, grid_dir, emodb_files_glob, ravdess_files_glob,savee_files_glob, features_dir = [
(base_dir / p)
(project_dir / p)
for p in (meta_dir, grid_dir, emodb_files_glob, ravdess_files_glob,savee_files_glob, features_dir)
]
# 语料库配置
......
此差异已折叠。
path,emotion
D:\repos\CCSER\SER\data\savee\AudioData\KL\a13.wav,angry
D:\repos\CCSER\SER\data\savee\AudioData\KL\a14.wav,angry
D:\repos\CCSER\SER\data\savee\AudioData\KL\a15.wav,angry
D:\repos\CCSER\SER\data\savee\AudioData\KL\n01.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n02.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n03.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n04.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n05.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n06.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n07.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n08.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n09.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n10.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n11.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n12.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n13.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n14.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n15.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n16.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n17.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n18.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n19.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n20.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n21.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n22.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n23.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n24.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n25.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n26.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n27.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n28.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n29.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\n30.wav,neutral
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa01.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa02.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa03.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa04.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa05.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa06.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa07.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa08.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa09.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa10.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa11.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa12.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa13.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa14.wav,sad
D:\repos\CCSER\SER\data\savee\AudioData\KL\sa15.wav,sad
,path,emotion
4,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\a05.wav,angry
121,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\a02.wav,angry
245,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\a06.wav,angry
14,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\a15.wav,angry
127,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\a08.wav,angry
365,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\a06.wav,angry
67,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n08.wav,neutral
188,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n09.wav,neutral
77,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n18.wav,neutral
76,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n17.wav,neutral
301,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n02.wav,neutral
60,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n01.wav,neutral
447,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n28.wav,neutral
444,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n25.wav,neutral
325,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n26.wav,neutral
68,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n09.wav,neutral
421,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n02.wav,neutral
62,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n03.wav,neutral
328,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n29.wav,neutral
86,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n27.wav,neutral
302,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n03.wav,neutral
202,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n23.wav,neutral
431,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n12.wav,neutral
321,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n22.wav,neutral
186,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n07.wav,neutral
329,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n30.wav,neutral
74,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n15.wav,neutral
185,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n06.wav,neutral
436,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n17.wav,neutral
82,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n23.wav,neutral
192,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n13.wav,neutral
424,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n05.wav,neutral
428,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n09.wav,neutral
81,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n22.wav,neutral
66,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n07.wav,neutral
203,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n24.wav,neutral
78,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n19.wav,neutral
183,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n04.wav,neutral
220,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\sa11.wav,sad
104,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\sa15.wav,sad
215,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\sa06.wav,sad
339,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\sa10.wav,sad
93,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\sa04.wav,sad
332,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\sa03.wav,sad
213,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\sa04.wav,sad
103,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\sa14.wav,sad
222,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\sa13.wav,sad
216,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\sa07.wav,sad
path,emotion
data/savee/AudioData\KL\a07.wav,angry
data/savee/AudioData\KL\a08.wav,angry
data/savee/AudioData\KL\a09.wav,angry
data/savee/AudioData\KL\a10.wav,angry
data/savee/AudioData\KL\a11.wav,angry
data/savee/AudioData\KL\a12.wav,angry
data/savee/AudioData\KL\a13.wav,angry
data/savee/AudioData\KL\a14.wav,angry
data/savee/AudioData\KL\a15.wav,angry
data/savee/AudioData\KL\sa01.wav,sad
data/savee/AudioData\KL\sa02.wav,sad
data/savee/AudioData\KL\sa03.wav,sad
data/savee/AudioData\KL\sa04.wav,sad
data/savee/AudioData\KL\sa05.wav,sad
data/savee/AudioData\KL\sa06.wav,sad
data/savee/AudioData\KL\sa07.wav,sad
data/savee/AudioData\KL\sa08.wav,sad
data/savee/AudioData\KL\sa09.wav,sad
data/savee/AudioData\KL\sa10.wav,sad
data/savee/AudioData\KL\sa11.wav,sad
data/savee/AudioData\KL\sa12.wav,sad
data/savee/AudioData\KL\sa13.wav,sad
data/savee/AudioData\KL\sa14.wav,sad
data/savee/AudioData\KL\sa15.wav,sad
path,emotion
data/savee/AudioData\KL\h13.wav,happy
data/savee/AudioData\KL\h14.wav,happy
data/savee/AudioData\KL\h15.wav,happy
data/savee/AudioData\KL\n01.wav,neutral
data/savee/AudioData\KL\n02.wav,neutral
data/savee/AudioData\KL\n03.wav,neutral
data/savee/AudioData\KL\n04.wav,neutral
data/savee/AudioData\KL\n05.wav,neutral
data/savee/AudioData\KL\n06.wav,neutral
data/savee/AudioData\KL\n07.wav,neutral
data/savee/AudioData\KL\n08.wav,neutral
data/savee/AudioData\KL\n09.wav,neutral
data/savee/AudioData\KL\n10.wav,neutral
data/savee/AudioData\KL\n11.wav,neutral
data/savee/AudioData\KL\n12.wav,neutral
data/savee/AudioData\KL\n13.wav,neutral
data/savee/AudioData\KL\n14.wav,neutral
data/savee/AudioData\KL\n15.wav,neutral
data/savee/AudioData\KL\n16.wav,neutral
data/savee/AudioData\KL\n17.wav,neutral
data/savee/AudioData\KL\n18.wav,neutral
data/savee/AudioData\KL\n19.wav,neutral
data/savee/AudioData\KL\n20.wav,neutral
data/savee/AudioData\KL\n21.wav,neutral
data/savee/AudioData\KL\n22.wav,neutral
data/savee/AudioData\KL\n23.wav,neutral
data/savee/AudioData\KL\n24.wav,neutral
data/savee/AudioData\KL\n25.wav,neutral
data/savee/AudioData\KL\n26.wav,neutral
data/savee/AudioData\KL\n27.wav,neutral
data/savee/AudioData\KL\n28.wav,neutral
data/savee/AudioData\KL\n29.wav,neutral
data/savee/AudioData\KL\n30.wav,neutral
data/savee/AudioData\KL\sa01.wav,sad
data/savee/AudioData\KL\sa02.wav,sad
data/savee/AudioData\KL\sa03.wav,sad
data/savee/AudioData\KL\sa04.wav,sad
data/savee/AudioData\KL\sa05.wav,sad
data/savee/AudioData\KL\sa06.wav,sad
data/savee/AudioData\KL\sa07.wav,sad
data/savee/AudioData\KL\sa08.wav,sad
data/savee/AudioData\KL\sa09.wav,sad
data/savee/AudioData\KL\sa10.wav,sad
data/savee/AudioData\KL\sa11.wav,sad
data/savee/AudioData\KL\sa12.wav,sad
data/savee/AudioData\KL\sa13.wav,sad
data/savee/AudioData\KL\sa14.wav,sad
data/savee/AudioData\KL\sa15.wav,sad
,path,emotion
166,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\h02.wav,happy
296,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\h12.wav,happy
48,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\h04.wav,happy
407,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\h03.wav,happy
417,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\h13.wav,happy
173,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\h09.wav,happy
178,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\h14.wav,happy
54,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\h10.wav,happy
174,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\h10.wav,happy
175,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\h11.wav,happy
71,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n12.wav,neutral
447,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n28.wav,neutral
421,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n02.wav,neutral
303,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n04.wav,neutral
302,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n03.wav,neutral
327,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n28.wav,neutral
184,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n05.wav,neutral
205,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n26.wav,neutral
194,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n15.wav,neutral
307,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n08.wav,neutral
436,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n17.wav,neutral
73,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n14.wav,neutral
324,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n25.wav,neutral
67,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n08.wav,neutral
426,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n07.wav,neutral
196,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n17.wav,neutral
207,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n28.wav,neutral
440,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\n21.wav,neutral
83,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n24.wav,neutral
82,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\n23.wav,neutral
199,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\n20.wav,neutral
311,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\n12.wav,neutral
331,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\sa02.wav,sad
458,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\sa09.wav,sad
451,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\sa02.wav,sad
96,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\sa07.wav,sad
221,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\sa12.wav,sad
98,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\sa09.wav,sad
337,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\sa08.wav,sad
342,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\sa13.wav,sad
101,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\sa12.wav,sad
214,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\sa05.wav,sad
218,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JE\sa09.wav,sad
344,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\sa15.wav,sad
97,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\sa08.wav,sad
452,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\KL\sa03.wav,sad
341,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\JK\sa12.wav,sad
104,D:\repos\CCSER\emotion-recognition-using-speech\data\savee\AudioData\DC\sa15.wav,sad
此差异已折叠。
此差异已折叠。
path,emotion
data/savee/AudioData\DC\a01.wav,angry
data/savee/AudioData\DC\a02.wav,angry
data/savee/AudioData\DC\a03.wav,angry
data/savee/AudioData\DC\a04.wav,angry
data/savee/AudioData\DC\a05.wav,angry
data/savee/AudioData\DC\a06.wav,angry
data/savee/AudioData\DC\a07.wav,angry
data/savee/AudioData\DC\a08.wav,angry
data/savee/AudioData\DC\a09.wav,angry
data/savee/AudioData\DC\a10.wav,angry
data/savee/AudioData\DC\a11.wav,angry
data/savee/AudioData\DC\a12.wav,angry
data/savee/AudioData\DC\a13.wav,angry
data/savee/AudioData\DC\a14.wav,angry
data/savee/AudioData\DC\a15.wav,angry
data/savee/AudioData\DC\sa01.wav,sad
data/savee/AudioData\DC\sa02.wav,sad
data/savee/AudioData\DC\sa03.wav,sad
data/savee/AudioData\DC\sa04.wav,sad
data/savee/AudioData\DC\sa05.wav,sad
data/savee/AudioData\DC\sa06.wav,sad
data/savee/AudioData\DC\sa07.wav,sad
data/savee/AudioData\DC\sa08.wav,sad
data/savee/AudioData\DC\sa09.wav,sad
data/savee/AudioData\DC\sa10.wav,sad
data/savee/AudioData\DC\sa11.wav,sad
data/savee/AudioData\DC\sa12.wav,sad
data/savee/AudioData\DC\sa13.wav,sad
data/savee/AudioData\DC\sa14.wav,sad
data/savee/AudioData\DC\sa15.wav,sad
data/savee/AudioData\JE\a01.wav,angry
data/savee/AudioData\JE\a02.wav,angry
data/savee/AudioData\JE\a03.wav,angry
data/savee/AudioData\JE\a04.wav,angry
data/savee/AudioData\JE\a05.wav,angry
data/savee/AudioData\JE\a06.wav,angry
data/savee/AudioData\JE\a07.wav,angry
data/savee/AudioData\JE\a08.wav,angry
data/savee/AudioData\JE\a09.wav,angry
data/savee/AudioData\JE\a10.wav,angry
data/savee/AudioData\JE\a11.wav,angry
data/savee/AudioData\JE\a12.wav,angry
data/savee/AudioData\JE\a13.wav,angry
data/savee/AudioData\JE\a14.wav,angry
data/savee/AudioData\JE\a15.wav,angry
data/savee/AudioData\JE\sa01.wav,sad
data/savee/AudioData\JE\sa02.wav,sad
data/savee/AudioData\JE\sa03.wav,sad
data/savee/AudioData\JE\sa04.wav,sad
data/savee/AudioData\JE\sa05.wav,sad
data/savee/AudioData\JE\sa06.wav,sad
data/savee/AudioData\JE\sa07.wav,sad
data/savee/AudioData\JE\sa08.wav,sad
data/savee/AudioData\JE\sa09.wav,sad
data/savee/AudioData\JE\sa10.wav,sad
data/savee/AudioData\JE\sa11.wav,sad
data/savee/AudioData\JE\sa12.wav,sad
data/savee/AudioData\JE\sa13.wav,sad
data/savee/AudioData\JE\sa14.wav,sad
data/savee/AudioData\JE\sa15.wav,sad
data/savee/AudioData\JK\a01.wav,angry
data/savee/AudioData\JK\a02.wav,angry
data/savee/AudioData\JK\a03.wav,angry
data/savee/AudioData\JK\a04.wav,angry
data/savee/AudioData\JK\a05.wav,angry
data/savee/AudioData\JK\a06.wav,angry
data/savee/AudioData\JK\a07.wav,angry
data/savee/AudioData\JK\a08.wav,angry
data/savee/AudioData\JK\a09.wav,angry
data/savee/AudioData\JK\a10.wav,angry
data/savee/AudioData\JK\a11.wav,angry
data/savee/AudioData\JK\a12.wav,angry
data/savee/AudioData\JK\a13.wav,angry
data/savee/AudioData\JK\a14.wav,angry
data/savee/AudioData\JK\a15.wav,angry
data/savee/AudioData\JK\sa01.wav,sad
data/savee/AudioData\JK\sa02.wav,sad
data/savee/AudioData\JK\sa03.wav,sad
data/savee/AudioData\JK\sa04.wav,sad
data/savee/AudioData\JK\sa05.wav,sad
data/savee/AudioData\JK\sa06.wav,sad
data/savee/AudioData\JK\sa07.wav,sad
data/savee/AudioData\JK\sa08.wav,sad
data/savee/AudioData\JK\sa09.wav,sad
data/savee/AudioData\JK\sa10.wav,sad
data/savee/AudioData\JK\sa11.wav,sad
data/savee/AudioData\JK\sa12.wav,sad
data/savee/AudioData\JK\sa13.wav,sad
data/savee/AudioData\JK\sa14.wav,sad
data/savee/AudioData\JK\sa15.wav,sad
data/savee/AudioData\KL\a01.wav,angry
data/savee/AudioData\KL\a02.wav,angry
data/savee/AudioData\KL\a03.wav,angry
data/savee/AudioData\KL\a04.wav,angry
data/savee/AudioData\KL\a05.wav,angry
data/savee/AudioData\KL\a06.wav,angry
此差异已折叠。
......@@ -16,7 +16,7 @@ from tqdm import tqdm
from audio.extractor import load_data_from_meta
from config.EF import (e_config_def, f_config_def, validate_emotions)
from config.MetaPath import (emodb, meta_paths_of_db, ravdess, validate_partition)
from config.MetaPath import (emodb, meta_paths_of_db, ravdess, savee,validate_partition,project_dir)
from audio.core import best_estimators, extract_feature
......@@ -34,6 +34,7 @@ class EmotionRecognizer:
train_dbs=None,
test_dbs=None,
balance=False,
shuffle=True,
override_csv=True,
verbose=1,
**kwargs,
......@@ -111,6 +112,7 @@ class EmotionRecognizer:
# 默认执行分类任务
self.classification_task = classification_task
self.balance = balance
self.shuffle=shuffle
self.override_csv = override_csv
self.verbose = verbose
# boolean attributes
......@@ -149,6 +151,7 @@ class EmotionRecognizer:
"""
导入指定的语料库数据,并提取特征
Loads and extracts features from the audio files for the db's specified
- 注意,由于balance操作对于数据集划分有一定要求,不是任何数据集都可以执行balance操作(例如三分类中,test set中只缺失了某一个类别的样本,这中情况下执行balance,将导致测试集样本数量为空)
"""
# 判断是否已经导入过数据.如果已经导入,则跳过,否则执行导入
if not self.data_loaded:
......@@ -160,6 +163,7 @@ class EmotionRecognizer:
e_config=self.e_config,
classification_task=self.classification_task,
balance=self.balance,
shuffle=self.shuffle
)
# 设置实例的各个属性
self.X_train = data["X_train"]
......@@ -168,7 +172,8 @@ class EmotionRecognizer:
self.y_test = data["y_test"]
self.train_audio_paths = data["train_audio_paths"]
self.test_audio_paths = data["test_audio_paths"]
self.balance = data["balance"]
self.balanced_success(data)
if self.verbose:
print("[I] Data loaded\n")
self.data_loaded = True
......@@ -176,6 +181,9 @@ class EmotionRecognizer:
if self.verbose > 1:
print(vars(self))
def balanced_success(self, res):
self.balance = res["balance"]
def train(self, choosing=False, verbose=1):
"""
......@@ -248,7 +256,7 @@ class EmotionRecognizer:
)
def show_second(self):
peeker = rec.peek_test_set(2)
peeker = er.peek_test_set(2)
feature = peeker[1][1]
audio_path = peeker[0][1]
feature_pred = self.predict(audio_path)
......@@ -614,8 +622,9 @@ if __name__ == "__main__":
# rec = EmotionRecognizer(model=my_model,e_config=AHNPS,f_config=f_config_def,test_dbs=[ravdess],train_dbs=[ravdess], verbose=1)
meta_dict = {"train_dbs": emodb, "test_dbs": ravdess}
rec = EmotionRecognizer(
single_db=savee
meta_dict = {"train_dbs": single_db, "test_dbs": single_db}
er = EmotionRecognizer(
model=my_model,
e_config=e_config,
f_config=f_config_def,
......@@ -625,12 +634,12 @@ if __name__ == "__main__":
# rec = EmotionRecognizer(model=my_model,e_config=AHNPS,f_config=f_config_def,test_dbs=emodb,train_dbs=emodb, verbose=1)
rec.train()
er.train()
train_score=rec.train_score()
train_score=er.train_score()
print(f"{train_score=}")
test_score = rec.test_score()
test_score = er.test_score()
print(f"{test_score=}")
##
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册