卷二:数据篇——DAIC-WOZ数据集解析与特征提取

返回 毕设项目解析

卷二:数据篇——DAIC-WOZ数据集解析与特征提取

🎯 学习目标

深入掌握多模态数据处理技术,为机器学习模型训练奠定坚实基础

📚 预计学习时长

2-3小时

🔧 前置知识

Python基础、pandas数据处理、基本机器学习概念

📚 本章导读#

本章节深入解析DAIC-WOZ数据集的处理流程和特征提取技术,这是多模态抑郁检测系统的核心基础。通过本章学习,您将:

✅ 掌握DAIC-WOZ数据集的结构和内容
✅ 深入理解音频特征提取的原理和实现
✅ 掌握视频特征提取的方法和技巧
✅ 学会数据预处理的最佳实践

3.1 DAIC-WOZ数据集概述#

3.1.1 数据集背景#

DAIC-WOZ(Distress Analysis Interview Corpus - Wizard of Oz)是一个专门用于抑郁症检测的多模态数据集。该数据集包含:

  • 189名参与者的访谈记录
  • 音频和视频两种模态数据
  • PHQ-8量表的抑郁程度标注
  • 临床诊断作为金标准

数据来源深度解析:

  • 创建机构:南加州大学和麻省理工学院联合创建
  • 发表会议:IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)
  • 研究目的:专为研究自动抑郁检测算法设计
  • 数据质量:经过专业医生评估,标注质量高

3.1.2 数据采集过程#

# 数据集规模统计
import pandas as pd
# 读取元数据文件
metadata = pd.read_csv('dev_split_Depression_AVEC2017.csv')
# 统计基本信息
total_participants = len(metadata)
depressed_count = sum(metadata['PHQ8_Score'] >= 10)
normal_count = total_participants - depressed_count
print(f"总参与者数: {total_participants}")
print(f"抑郁患者数: {depressed_count} ({depressed_count/total_participants*100:.1f}%)")
print(f"正常人数: {normal_count} ({normal_count/total_participants*100:.1f}%)")
print(f"PHQ-8分数范围: {metadata['PHQ8_Score'].min()} - {metadata['PHQ8_Score'].max()}")

数据采集流程深度解析:

标准化访谈流程#

  1. 参与者筛选:通过初步筛选确保参与者符合研究条件
  2. 标准化访谈:使用结构化的访谈脚本,时长约20-30分钟
  3. 多模态记录:同步录制音频和视频数据
  4. 临床评估:由专业医生进行PHQ-8量表评估
  5. 数据标注:根据PHQ-8分数进行抑郁/非抑郁标注

PHQ-8量表详解#

PHQ-8是一个常用的抑郁筛查量表,包含8个问题,每个问题0-3分,总分0-24分:

分数范围严重程度判定标准
0-4无抑郁PHQ8_Score < 5
5-9轻度抑郁5 ≤ PHQ8_Score ≤ 9
10-14中度抑郁10 ≤ PHQ8_Score ≤ 14
15-19中重度抑郁15 ≤ PHQ8_Score ≤ 19
20-24重度抑郁PHQ8_Score ≥ 20

核心原理深度解析:

  • 二分类标准:PHQ-8分数≥10被标记为抑郁(label=1)
  • 类别不平衡:抑郁样本约占30%,正常样本约占70%
  • 临床意义:该划分标准与临床诊断具有较高的一致性

3.2 数据集文件结构#

3.2.1 文件组织架构#

DAIC-WOZ数据集/
├── dev_split_Depression_AVEC2017.csv # 开发集元数据
├── train_split_Depression_AVEC2017.csv # 训练集元数据
├── 300_P/ # 参与者300的数据目录
│ ├── 300_AUDIO.wav # 音频文件
│ ├── 300_VIDEO.mp4 # 视频文件
│ ├── 300_CLNF_features.txt # OpenFace提取的特征
│ └── 300_TRANSCRIPT.csv # 访谈文本转录
├── 301_P/ # 参与者301的数据目录
│ ├── 301_AUDIO.wav
│ ├── 301_VIDEO.mp4
│ ├── 301_CLNF_features.txt
│ └── 301_TRANSCRIPT.csv
└── ... # 其他参与者数据

文件命名规范深度解析:

命名规则#

  • 音频文件:{participant_id}_AUDIO.wav - 包含参与者的语音数据
  • 视频文件:{participant_id}_VIDEO.mp4 - 包含参与者的面部表情和动作
  • 特征文件:{participant_id}_CLNF_features.txt - OpenFace提取的面部特征
  • 转录文件:{participant_id}_TRANSCRIPT.csv - 访谈的文本转录

目录结构设计原则#

  • 参与者独立:每个参与者的数据独立存储在单独目录中
  • 命名统一:所有文件遵循统一的命名模式
  • 内容完整:包含音频、视频、特征和文本等多种数据形式

3.2.2 元数据文件解析#

# 元数据文件解析
metadata = pd.read_csv('dev_split_Depression_AVEC2017.csv')
# 查看列名和数据类型
print("列名:", list(metadata.columns))
print("\n数据类型:")
print(metadata.dtypes)
# 查看前几行数据
print("\n样本数据:")
print(metadata.head())

关键字段深度解析:

字段名数据类型描述重要性
Participant_IDint参与者唯一标识符⭐⭐⭐⭐⭐
PHQ8_ScoreintPHQ-8抑郁量表得分⭐⭐⭐⭐⭐
Genderint性别(1=男,2=女)⭐⭐⭐
Ageint年龄⭐⭐⭐
Interview_Durationfloat访谈时长(分钟)⭐⭐

数据验证策略:

  1. 范围验证:检查PHQ8_Score范围(0-27)
  2. 唯一性验证:验证Participant_ID的唯一性
  3. 合理性验证:确认性别(1-2)和年龄(0-120)的合理性
  4. 完整性验证:检查关键字段是否存在缺失值

3.3 数据读取与验证#

3.3.1 数据加载函数#

def load_metadata(root_dir):
"""
加载DAIC-WOZ数据集的元数据
参数:
root_dir: 数据集根目录
返回:
metadata: 包含所有参与者信息的DataFrame
"""
# 定义元数据文件优先级
metadata_files = [
"dev_split_Depression_AVEC2017.csv",
"train_split_Depression_AVEC2017.csv",
"train_split_Depression.csv",
"train_split.csv"
]
# 查找可用的元数据文件
metadata_path = None
for file in metadata_files:
path = os.path.join(root_dir, file)
if os.path.exists(path):
metadata_path = path
print(f"✅ 找到元数据文件: {file}")
break
if not metadata_path:
raise FileNotFoundError("未找到任何元数据文件")
# 读取元数据
metadata = pd.read_csv(metadata_path)
# 验证必要列
required_columns = ['PHQ8_Score', 'Participant_ID']
missing_columns = [col for col in required_columns if col not in metadata.columns]
if missing_columns:
raise ValueError(f"元数据文件缺少必要列: {missing_columns}")
return metadata

设计思路深度解析:

优先级机制#

  • 灵活查找:按优先级顺序查找元数据文件
  • 向后兼容:支持不同版本的数据集文件命名
  • 错误处理:明确的异常抛出和错误信息

数据验证策略#

  1. 文件存在性检查:确保元数据文件存在
  2. 列完整性检查:验证必要字段是否存在
  3. 数据类型检查:确保数据类型正确
  4. 缺失值处理:处理可能的缺失值

3.3.2 数据完整性验证#

def validate_data_integrity(metadata, data_dir):
"""
验证数据完整性
参数:
metadata: 元数据DataFrame
data_dir: 数据目录
返回:
valid_participants: 数据完整的参与者列表
"""
valid_participants = []
for idx, row in metadata.iterrows():
participant_id = str(row['Participant_ID'])
participant_folder = f"{participant_id}_P"
folder_path = os.path.join(data_dir, participant_folder)
# 检查目录是否存在
if not os.path.exists(folder_path):
print(f"⚠️ 参与者目录不存在: {folder_path}")
continue
# 检查音频文件
audio_file = os.path.join(folder_path, f"{participant_id}_AUDIO.wav")
if not os.path.exists(audio_file):
print(f"⚠️ 音频文件缺失: {audio_file}")
continue
# 检查视频特征文件
feature_file = os.path.join(folder_path, f"{participant_id}_CLNF_features.txt")
if not os.path.exists(feature_file):
print(f"⚠️ 视频特征文件缺失: {feature_file}")
continue
valid_participants.append(participant_id)
print(f"\n✅ 数据完整性检查完成")
print(f" 总参与者数: {len(metadata)}")
print(f" 数据完整的参与者数: {len(valid_participants)}")
print(f" 数据完整率: {len(valid_participants)/len(metadata)*100:.1f}%")
return valid_participants

验证流程深度解析:

多层次验证#

  1. 目录检查:确认参与者目录存在
  2. 文件检查:验证音频文件和视频特征文件存在
  3. 内容检查:检查文件内容的有效性
  4. 统计报告:生成数据完整性报告

错误处理策略#

  • 优雅降级:单个文件缺失不影响整体处理
  • 详细日志:记录每个缺失的文件信息
  • 统计分析:计算数据完整率,评估数据集质量

常见问题处理#

问题类型处理策略影响
目录不存在跳过该参与者数据量减少
音频文件缺失跳过该参与者数据量减少
特征文件缺失跳过该参与者数据量减少
文件格式错误跳过该参与者数据量减少

4.1 音频特征提取#

4.1.1 MFCC特征原理#

MFCC(Mel频率倒谱系数)是音频处理中常用的特征提取方法,特别适合语音分析。其核心原理包括:

  1. 预加重:增强高频部分,平衡频谱
  2. 分帧:将音频信号分成短帧(通常20-30ms)
  3. 加窗:应用汉明窗减少频谱泄漏
  4. FFT变换:将时域信号转换到频域
  5. Mel滤波器组:模拟人耳对频率的感知特性
  6. 对数能量:计算每个滤波器的能量并取对数
  7. DCT变换:获取倒谱系数
def extract_mfcc_features(audio_file, n_mfcc=35, sample_rate=16000):
"""
提取音频的MFCC特征
参数:
audio_file: 音频文件路径
n_mfcc: MFCC系数数量
sample_rate: 采样率
返回:
mfcc_features: 平均MFCC特征向量
"""
try:
# 读取音频文件
y, sr = librosa.load(audio_file, sr=sample_rate)
# 提取MFCC特征
mfccs = librosa.feature.mfcc(
y=y,
sr=sr,
n_mfcc=n_mfcc,
n_fft=512, # FFT窗口大小
hop_length=256, # 帧移
win_length=512, # 窗口长度
window='hann', # 窗函数
center=True, # 中心化
pad_mode='reflect' # 填充模式
)
# 计算时间维度上的均值作为特征向量
mfcc_features = np.mean(mfccs, axis=1)
return mfcc_features
except Exception as e:
print(f"⚠️ 音频特征提取错误 ({audio_file}): {str(e)}")
return None

参数深度解析:

关键参数说明#

  • n_mfcc:MFCC系数数量(通常20-40),本项目使用35维
  • n_fft:FFT窗口大小(512,影响频率分辨率)
  • hop_length:帧移(256,影响时间分辨率)
  • window:窗函数类型(‘hann’,减少频谱泄漏)
  • sample_rate:采样率(16000Hz,语音处理标准采样率)

性能优化策略#

  • 预计算:避免重复读取音频文件
  • 向量化:使用librosa的高效实现
  • 内存管理:及时释放不必要的中间变量
  • 并行处理:使用多线程加速特征提取

4.1.2 音频特征工程#

def extract_comprehensive_audio_features(audio_file):
"""
提取综合音频特征
参数:
audio_file: 音频文件路径
返回:
features: 综合特征向量
"""
try:
y, sr = librosa.load(audio_file, sr=16000)
# 提取MFCC特征
mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=35)
mfcc_mean = np.mean(mfccs, axis=1)
mfcc_std = np.std(mfccs, axis=1)
# 提取频谱特征
spectral_centroid = librosa.feature.spectral_centroid(y=y, sr=sr)
spectral_bandwidth = librosa.feature.spectral_bandwidth(y=y, sr=sr)
spectral_rolloff = librosa.feature.spectral_rolloff(y=y, sr=sr)
# 提取能量特征
rms = librosa.feature.rms(y=y)
# 提取零交叉率
zcr = librosa.feature.zero_crossing_rate(y)
# 提取基频特征(使用parselmouth)
import parselmouth
sound = parselmouth.Sound(audio_file)
pitch = sound.to_pitch()
pitch_values = pitch.selected_array['frequency']
pitch_mean = np.mean(pitch_values[pitch_values > 0]) if any(pitch_values > 0) else 0
pitch_std = np.std(pitch_values[pitch_values > 0]) if any(pitch_values > 0) else 0
# 组合所有特征
features = np.concatenate([
mfcc_mean,
mfcc_std,
[np.mean(spectral_centroid)],
[np.mean(spectral_bandwidth)],
[np.mean(spectral_rolloff)],
[np.mean(rms)],
[np.mean(zcr)],
[pitch_mean],
[pitch_std]
])
return features
except Exception as e:
print(f"⚠️ 综合特征提取错误: {str(e)}")
return None

特征组合策略深度解析:

特征类型分类#

  1. 时域特征:

    • 能量特征(RMS):反映语音强度
    • 零交叉率(ZCR):反映语音的清晰度和频率特性
  2. 频域特征:

    • 频谱中心:反映能量集中的频率区域
    • 频谱带宽:反映频率分布的宽度
    • 频谱滚降:反映能量分布的倾斜程度
  3. 倒谱特征:

    • MFCC均值:反映语音的静态特征
    • MFCC标准差:反映语音的动态变化
  4. 韵律特征:

    • 基频均值:反映说话者的音高
    • 基频标准差:反映音高的变化程度

特征选择原理#

  • 相关性:选择与抑郁症状相关的声学特征
  • 互补性:不同类型的特征相互补充
  • 鲁棒性:选择对噪声不敏感的特征
  • 计算效率:考虑特征提取的计算成本

抑郁相关特征分析#

特征类型抑郁表现特征变化
基频情绪低落基频降低、变化减小
能量声音微弱RMS能量降低
零交叉率语音单调ZCR降低
MFCC语音特征变化特定MFCC系数变化

4.2 视频特征提取#

4.2.1 OpenFace特征解析#

OpenFace是一个开源的面部分析工具,能够提取多种面部特征:

  • 面部动作单元(AU):如眉毛抬起、眼睛闭合等表情动作
  • 头部姿态:俯仰角、偏航角、滚转角
  • 面部标志点:68个面部关键点坐标
  • 眼神特征:注视方向、眨眼频率
def extract_video_features(participant_id, data_dir):
"""
从CLNF_features.txt提取视频特征
参数:
participant_id: 参与者ID
data_dir: 数据目录
返回:
video_features: 140维视频特征向量
"""
# 构建特征文件路径
features_file = os.path.join(
data_dir,
f"{participant_id}_P",
f"{participant_id}_CLNF_features.txt"
)
# 检查文件是否存在
if not os.path.exists(features_file):
print(f"⚠️ 视频特征文件不存在: {features_file}")
return np.random.rand(140)
try:
# 读取文件并提取特征(跳过第一行标题)
with open(features_file, 'r') as f:
lines = f.readlines()[1:] # 跳过标题行
if not lines:
print(f"⚠️ 视频特征文件为空: {features_file}")
return np.random.rand(140)
# 提取所有时间点的特征
features = []
for line in lines:
if not line.strip():
continue
nums = [float(x) for x in line.split(',')]
if len(nums) >= 140:
features.append(nums[:140])
if not features:
print(f"⚠️ 无有效视频特征: {features_file}")
return np.random.rand(140)
# 计算时间维度上的平均值
features_avg = np.mean(features, axis=0)
return features_avg[:140]
except Exception as e:
print(f"⚠️ 视频特征提取错误 ({features_file}): {str(e)}")
return np.random.rand(140)

特征维度深度解析:

OpenFace特征维度#

特征类型维度描述抑郁相关性
面部标志点204维68个点 × 3坐标(x,y,z)⭐⭐⭐
头部姿态3维俯仰角、偏航角、滚转角⭐⭐⭐
面部动作单元约30维AU强度和存在性⭐⭐⭐⭐
眼神特征约10维注视方向、眨眼频率等⭐⭐⭐

关键动作单元(AUs)解析#

AU编号名称描述抑郁表现
AU01眉毛内侧抬起悲伤表情抑郁时增强
AU02眉毛外侧抬起惊讶表情抑郁时减弱
AU04眉毛降低悲伤/担忧抑郁时增强
AU07眼睑闭合疲惫/困倦抑郁时增强
AU12嘴角上扬微笑表情抑郁时减弱
AU15嘴角下拉悲伤表情抑郁时增强
AU23嘴唇收紧紧张表情抑郁时增强

数据处理策略#

  • 时间平均:计算整个视频的平均特征,捕捉整体表现
  • 缺失处理:提供随机特征作为回退方案
  • 维度控制:确保返回固定维度的特征向量
  • 异常值处理:处理可能的异常值

4.2.2 视频特征工程#

def process_video_features(raw_features):
"""
处理原始视频特征,提取更有意义的统计特征
参数:
raw_features: 原始特征列表(每个时间点的特征)
返回:
processed_features: 处理后的统计特征
"""
if not raw_features:
return np.zeros(280)
# 转换为numpy数组
features_array = np.array(raw_features)
# 计算基本统计特征
mean_features = np.mean(features_array, axis=0)
std_features = np.std(features_array, axis=0)
max_features = np.max(features_array, axis=0)
min_features = np.min(features_array, axis=0)
# 计算动态特征(变化率)
if len(raw_features) > 1:
diff_features = np.diff(features_array, axis=0)
mean_diff = np.mean(diff_features, axis=0)
std_diff = np.std(diff_features, axis=0)
else:
mean_diff = np.zeros_like(mean_features)
std_diff = np.zeros_like(std_features)
# 组合所有特征
processed_features = np.concatenate([
mean_features,
std_features,
max_features,
min_features,
mean_diff,
std_diff
])
return processed_features

统计特征提取深度解析:

统计特征类型#

  1. 静态特征:

    • 均值:反映特征的中心趋势
    • 标准差:反映特征的变化程度
    • 最大值/最小值:反映特征的极值范围
  2. 动态特征:

    • 变化率均值:反映特征变化的平均速度
    • 变化率标准差:反映特征变化的稳定性

特征选择依据#

  • 抑郁表现模式:抑郁患者通常表现出面部表情减少
  • 动态变化:抑郁患者的面部动作可能更加缓慢
  • 情绪表达:抑郁患者的情绪表达能力下降
  • 注意力:抑郁患者的眼神接触可能减少

特征工程优势#

  • 信息丰富:统计特征包含了时间维度的信息
  • 维度扩展:从140维扩展到280维,增加特征表达能力
  • 鲁棒性:统计特征对噪声和异常值具有一定的鲁棒性
  • 计算效率:统计特征计算高效,适合实时处理

4.3 数据保存与管理#

4.3.1 数据序列化#

def save_processed_data(audio_features, video_features, labels, participant_ids, output_dir):
"""
保存处理后的数据
参数:
audio_features: 音频特征数组
video_features: 视频特征数组
labels: 标签数组
participant_ids: 参与者ID列表
output_dir: 输出目录
"""
# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)
# 保存特征和标签
np.save(os.path.join(output_dir, "audio_features.npy"), audio_features)
np.save(os.path.join(output_dir, "video_features.npy"), video_features)
np.save(os.path.join(output_dir, "labels.npy"), labels)
np.save(os.path.join(output_dir, "participant_ids.npy"), participant_ids)
# 保存元数据
metadata = {
'num_samples': len(audio_features),
'audio_feature_dim': audio_features.shape[1],
'video_feature_dim': video_features.shape[1],
'depression_count': int(np.sum(labels)),
'normal_count': int(len(labels) - np.sum(labels))
}
with open(os.path.join(output_dir, "metadata.json"), 'w', encoding='utf-8') as f:
json.dump(metadata, f, indent=2, ensure_ascii=False)
print(f"\n✅ 数据已保存到: {output_dir}")
print(f"音频特征: {audio_features.shape}")
print(f"视频特征: {video_features.shape}")
print(f"标签分布: 抑郁={metadata['depression_count']}, 正常={metadata['normal_count']}")

数据格式选择深度解析:

存储格式对比#

格式优势劣势适用场景
NumPy数组高效的数值数据存储仅支持数值数据特征数据存储
JSON结构化的文本存储不适合大数组元数据存储
HDF5支持大数据集和压缩依赖额外库大规模数据集
Pickle支持Python对象安全性问题模型存储

存储策略设计#

  1. 分离存储:音频特征和视频特征分开保存,便于单独使用
  2. 元数据跟踪:记录数据维度和分布信息,便于后续处理
  3. 版本控制:考虑添加版本信息,支持数据版本管理
  4. 备份机制:建议定期备份处理后的数据

性能优化考虑#

  • 压缩选项:考虑使用np.savez_compressed进行压缩
  • 分块存储:对于大规模数据,考虑分块存储
  • 索引优化:为频繁访问的数据建立索引
  • 缓存策略:实现数据缓存,避免重复读取

4.3.2 数据加载与验证#

def load_processed_data(output_dir):
"""
加载处理后的数据
参数:
output_dir: 输出目录
返回:
audio_features, video_features, labels, participant_ids
"""
try:
# 加载特征和标签
audio_features = np.load(os.path.join(output_dir, "audio_features.npy"))
video_features = np.load(os.path.join(output_dir, "video_features.npy"))
labels = np.load(os.path.join(output_dir, "labels.npy"))
participant_ids = np.load(os.path.join(output_dir, "participant_ids.npy"))
# 加载元数据
with open(os.path.join(output_dir, "metadata.json"), 'r', encoding='utf-8') as f:
metadata = json.load(f)
# 验证数据一致性
assert len(audio_features) == len(video_features) == len(labels) == len(participant_ids)
assert audio_features.shape[1] == metadata['audio_feature_dim']
assert video_features.shape[1] == metadata['video_feature_dim']
print(f"✅ 数据加载成功")
print(f"样本数量: {len(audio_features)}")
print(f"音频特征维度: {audio_features.shape[1]}")
print(f"视频特征维度: {video_features.shape[1]}")
print(f"标签分布: 抑郁={metadata['depression_count']}, 正常={metadata['normal_count']}")
return audio_features, video_features, labels, participant_ids
except Exception as e:
print(f"❌ 数据加载失败: {str(e)}")
return None, None, None, None

数据验证深度解析:

验证步骤#

  1. 文件存在性检查:确保所有文件存在
  2. 维度一致性检查:验证特征维度匹配元数据
  3. 样本数量检查:确保各数组长度一致
  4. 数据类型检查:验证数据类型正确

错误处理策略#

  • 详细错误信息:提供具体的错误原因
  • 优雅降级:错误时返回None,便于上层处理
  • 日志记录:记录详细的错误信息
  • 验证日志:输出验证通过的详细信息

数据质量评估#

  • 完整性检查:验证数据是否完整
  • 一致性检查:验证数据之间的一致性
  • 合理性检查:验证数据值的合理性
  • 分布检查:检查标签分布是否合理

🎯 本章总结#

核心知识点回顾#

  1. DAIC-WOZ数据集

    • ✅ 数据集结构和文件组织深度解析
    • ✅ 元数据文件解析和验证策略
    • ✅ 数据完整性检查方法和实现
  2. 音频特征提取

    • ✅ MFCC特征原理和参数设置
    • ✅ 综合音频特征提取方法
    • ✅ 特征工程和选择策略
  3. 视频特征提取

    • ✅ OpenFace特征解析和维度说明
    • ✅ 视频特征工程和统计特征提取
    • ✅ 面部动作单元与抑郁相关性分析
  4. 数据管理

    • ✅ 数据序列化和存储格式选择
    • ✅ 数据加载和验证策略
    • ✅ 元数据管理和质量评估

重点/易错点总结#

重点掌握:

  • DAIC-WOZ数据集的文件结构和命名规范
  • MFCC特征提取的原理和参数设置
  • OpenFace特征文件的解析方法
  • 数据序列化和验证的最佳实践
  • 特征工程和选择策略

常见错误:

  1. ❌ 文件路径拼接错误:导致文件找不到,解决方案:使用os.path.join或Pathlib
  2. ❌ 忽略特征维度不一致问题:导致后续处理失败,解决方案:添加维度验证
  3. ❌ 缺少异常处理:导致程序崩溃,解决方案:添加完整的异常处理
  4. ❌ 数据验证不严格:导致后续处理失败,解决方案:添加全面的数据验证
  5. ❌ 特征选择不合理:影响模型性能,解决方案:基于领域知识选择特征

学习建议#

  1. 实践操作:尝试提取真实音频和视频的特征
  2. 参数调整:探索不同参数对特征提取的影响
  3. 特征分析:分析提取的特征与抑郁症状的相关性
  4. 性能优化:优化特征提取的速度和内存使用
  5. 数据可视化:可视化特征分布,理解特征含义

📚 参考资源#

  • [[DAIC-WOZ数据集官方文档]]
  • [[librosa音频处理库文档]]
  • [[OpenFace官方文档]]
  • [[PHQ-8抑郁量表说明]]
  • [[面部动作编码系统(FACS)]]

评论区

Profile Image of the Author
LuvGaze
Hello, Everyone.
公告
项目开发测试中 ~
天气预报
☁️
获取天气中...
我和宝宝在一起已经 287 天
♥
💕
0年0月0天
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
站点统计
运行时长
--
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录