Voice Based Stress Recognition
模型简介
该模型通过分析语音特征实现二进制压力状态识别,专为移动端和边缘设备优化
模型特点
轻量级设计
专为边缘设备优化的紧凑架构,支持实时推理
知识蒸馏技术
从多模态TeacherNet中提取知识,提升纯音频模型的性能
高效特征处理
直接处理预计算的Wav2Vec2音频嵌入,减少计算开销
模型能力
语音压力检测
实时情绪分析
边缘设备推理
使用案例
健康监测
移动端压力监测
通过手机录音实时检测用户压力水平
准确率约76%(StressID测试集)
人机交互
客服系统情绪分析
分析通话语音中的压力状态
🚀 基于语音的压力识别 (StudentNet)
forwarder1121/voice-based-stress-recognition
模型卡片
本项目是一个基于语音的压力识别模型,通过知识蒸馏技术训练出轻量级的 StudentNet
,可利用音频输入在边缘设备或移动应用中进行实时压力检测。
🚀 快速开始
以下是一个完整的示例,它会动态从 Hub 下载模型代码(models.py
)和权重,然后通过 Hugging Face Transformers API 运行推理:
from huggingface_hub import hf_hub_download
import importlib.util
from transformers import AutoConfig, AutoModelForAudioClassification
import torch
import torch.nn.functional as F
def main():
repo = "forwarder1121/voice-based-stress-recognition"
# 1) 动态下载并加载自定义的 models.py
code_path = hf_hub_download(repo_id=repo, filename="models.py")
spec = importlib.util.spec_from_file_location("models", code_path)
models = importlib.util.module_from_spec(spec)
spec.loader.exec_module(models)
# 现在我们有了 models.StudentForAudioClassification 和 models.StressConfig
# 2) 通过 Transformers 加载配置和模型(信任远程代码)
cfg = AutoConfig.from_pretrained(repo, trust_remote_code=True)
model = AutoModelForAudioClassification.from_pretrained(
repo,
trust_remote_code=True,
torch_dtype="auto"
)
model.eval()
# 3) 准备一个用于测试的虚拟 W2V 嵌入
# 在实际使用中,用你预先计算好的 (1, 512) W2V 张量替换它。
batch_size = 1
DIM_W2V = 512
x_w2v = torch.randn(batch_size, DIM_W2V, dtype=next(model.parameters()).dtype)
# 4) 推理
with torch.no_grad():
outputs = model(x_w2v) # SequenceClassifierOutput
probs = F.softmax(outputs.logits, dim=-1)
print(f"无压力: {probs[0,0]*100:.1f}%")
print(f"有压力: {probs[0,1]*100:.1f}%")
if __name__ == "__main__":
main()
✨ 主要特性
- 基于轻量级的
StudentNet
架构,适合在边缘设备或移动应用中进行实时推理。 - 采用知识蒸馏技术,从多模态的
TeacherNet
中提取知识。 - 仅需音频输入,可用于二进制压力检测。
📦 安装指南
此文档未提及安装步骤,暂不提供相关内容。
💻 使用示例
基础用法
上述“快速开始”部分的代码即为基础使用示例,展示了如何动态下载模型代码和权重,并进行推理。
高级用法
此文档未提及高级用法相关代码示例,暂不提供相关内容。
📚 详细文档
模型详情
- 模型名称:基于语音的压力识别 (StudentNet)
- 仓库地址:https://huggingface.co/forwarder1121/voice-based-stress-recognition
- 许可证:MIT
- 库版本:PyTorch ≥1.7
模型架构:
一个轻量级的基于 MLP 的 StudentNet
,从在 StressID 数据集上训练的多模态 TeacherNet
中蒸馏而来。
-
输入:512 维音频嵌入
-
嵌入规格:
此模型期望输入由 fairseq 的 Wav2Vec2(基础)模型生成的 512 维嵌入。
-
层结构:
- Linear(512→128) → ReLU → Dropout(0.3) → LayerNorm
- Dropout(0.3) → Linear(128→128) → ReLU → Dropout(0.3)
- Linear(128→2) → Softmax
输出: 二分类压力概率:
- 索引 0 → “无压力”
- 索引 1 → “有压力”
预期用途与限制
预期用途:
- 仅使用音频输入,在边缘设备或移动应用中进行实时二进制压力检测。
- 在仅提供预计算音频嵌入的情况下进行轻量级推理。
限制:
- 不适用于多类压力强度预测。
- 在 StressID 数据上训练,在其他语言或录音设置下性能可能下降。
- 假设音频清晰且 W2V 嵌入准确,高背景噪音可能会降低准确性。
训练数据
- 数据集:StressID
- 收集的模态:心电图(ECG)、呼吸率(RR)、皮肤电活动(EDA)、面部/视频、语音
- 标签:自我评估,范围为 0 - 10,转换为二进制压力(<5 为 0,≥5 为 1)
- 划分:
- 仅使用
train
划分来训练TeacherNet
;test
划分用于最终评估。 - 确保没有受试者的任务出现在多个划分中。
- 仅使用
训练过程
- TeacherNet:使用交叉熵损失在所有四种模态(ECG、RR、EDA、视频)上进行训练。
- StudentNet:使用音频嵌入和蒸馏损失进行训练:
loss = CE(student_logits, labels) \ + α * MSE(student_features, teacher_features)
- α ∈ {0, 1e−7, 1e−6},α = 1e−6 时性能最佳。
- 优化器:AdamW,学习率 lr = 1e−4,批量大小 batch_size = 8,训练轮数 epochs = 100,早停耐心值 early stopping patience = 100。
评估
- TeacherNet(多模态):
- 准确率 ≈ 0.82,宏 F1 值 ≈ 0.80,UAR ≈ 0.79
- StudentNet(α = 0):
- 准确率 ≈ 0.65,宏 F1 值 ≈ 0.62,UAR ≈ 0.61
- StudentNet(α = 1e−6):
- 准确率 ≈ 0.76,宏 F1 值 ≈ 0.74,UAR ≈ 0.73
⚡️ Wav2Vec2 嵌入说明
- 此模型的音频输入应使用 fairseq 的 Wav2Vec2(基础)模型(
torchaudio.pipelines.WAV2VEC2_BASE
)转换为 512 维嵌入。 - 训练期间用于嵌入提取的确切模型权重作为
wav2vec_large.pt
提供在本仓库的根目录中。 - 要对原始音频使用此模型进行推理:
- 使用 torchaudio/fairseq 加载
wav2vec_large.pt
。 - 为你的输入音频生成 512 维音频嵌入。
- 将此嵌入传递给
StudentNet
。
- 使用 torchaudio/fairseq 加载
引用
如果你在研究中使用此模型,请引用:
@inproceedings{your2025voice,
title={Lightweight Audio-Embedding-Based Stress Recognition via Multimodal Knowledge Distillation},
author={Your Name and …},
booktitle={Conference/Journal},
year={2025}
}
联系信息
如有任何问题,请通过 forwarder1121@huggingface.co 联系我们,也可以自由开启一个 issue 或讨论。
🔧 技术细节
此文档未提及足够详细的技术实现细节(超过 50 字),暂不提供相关内容。
📄 许可证
本项目使用 MIT 许可证。
Mms Lid 126
基于Facebook大规模多语言语音项目微调的语言识别模型,支持126种语言的音频分类
音频分类
Transformers 支持多种语言

M
facebook
2.1M
26
Wav2vec2 Base Finetuned Speech Commands V0.02
Apache-2.0
该模型是基于facebook/wav2vec2-base在speech_commands数据集上微调的语音命令识别模型,准确率达97.59%。
音频分类
Transformers

W
0xb1
1.2M
0
Whisper Medium Fleurs Lang Id
Apache-2.0
基于OpenAI Whisper-medium微调的语音语种识别模型,在FLEURS数据集上达到88.05%准确率
音频分类
Transformers

W
sanchit-gandhi
590.30k
14
Wav2vec2 Large Robust 12 Ft Emotion Msp Dim
该模型通过对Wav2Vec2-Large-Robust进行微调训练,用于语音情感识别,输出唤醒度、支配度和效价三个维度的预测值。
音频分类
Transformers 英语

W
audeering
394.51k
109
Lang Id Voxlingua107 Ecapa
Apache-2.0
基于SpeechBrain框架和ECAPA-TDNN架构的语音语言识别模型,支持107种语言的识别和语音嵌入向量提取。
音频分类
PyTorch 支持多种语言
L
speechbrain
330.01k
112
Ast Finetuned Audioset 10 10 0.4593
Bsd-3-clause
音频频谱图变换器(AST)是基于AudioSet微调的模型,将音频转换为频谱图后应用视觉变换器进行音频分类。
音频分类
Transformers

A
MIT
308.88k
311
Whisper Small Ft Common Language Id
Apache-2.0
基于openai/whisper-small微调的通用语言识别模型,在评估集上准确率达88.6%
音频分类
Transformers

W
sanchit-gandhi
256.20k
2
Emotion Recognition Wav2vec2 IEMOCAP
Apache-2.0
使用微调的wav2vec2模型进行语音情感识别,在IEMOCAP数据集上训练
音频分类
PyTorch 英语
E
speechbrain
237.65k
131
Ast Finetuned Audioset 14 14 0.443
Bsd-3-clause
基于AudioSet数据集微调的音频频谱图变换器,将音频转换为频谱图后使用视觉变换器架构处理,在音频分类任务中表现优异。
音频分类
Transformers

A
MIT
194.20k
5
Wav2vec2 Large Xlsr 53 Gender Recognition Librispeech
Apache-2.0
基于Librispeech-clean-100数据集微调的性别识别模型,在测试集上F1分数达0.9993
音频分类
Transformers

W
alefiury
182.33k
42
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98