语音情感识别结果保存在哪?outputs目录路径说明
1. 问题本质:你生成的结果到底去哪了?
刚用完 Emotion2Vec+ Large 语音情感识别系统,点下“ 开始识别”按钮,页面上漂亮地展示了 😊 快乐 (Happy) 和 85.3% 的置信度——但下一秒你就开始发懵:这个结果存哪儿了?那个 embedding.npy 文件我怎么找不到?处理完的音频在哪下载?
这不是你的错。很多用户第一次使用这类 WebUI 工具时,都会卡在“结果去哪儿了”这一步。界面很友好,但文件系统是另一套逻辑。本文不讲模型原理、不堆参数,就专注解决一个最实际的问题:Emotion2Vec+ Large 系统生成的所有结果,究竟按什么规则、存在哪个具体路径下?
我们直接从真实运行环境出发,还原整个输出过程,让你下次识别完,30秒内就能精准定位所有文件。
2. 核心结论:所有结果都落在 outputs/ 目录下
系统所有识别产物,无一例外,全部保存在容器内的/root/outputs/目录中(注意:不是 WebUI 界面里显示的outputs/,而是服务器文件系统的绝对路径)。
这个目录不是静态的,它会随着每次识别任务自动生成唯一子目录,格式为:
outputs/outputs_YYYYMMDD_HHMMSS/例如:
outputs/outputs_20240104_223000/outputs/outputs_20240105_091523/outputs/outputs_20240105_144711/
这个时间戳不是随便写的——它精确到秒,代表你点击“ 开始识别”那一刻的系统时间。这意味着:
- 每次识别都是独立沙盒,结果互不干扰;
- 你可以通过时间戳快速回溯某次特定分析;
- 批量处理多个音频时,每个任务都有专属文件夹,绝不会覆盖。
关键提醒:WebUI 界面右下角的“处理日志”区域,最后一行通常会明确打印出本次输出的完整路径,例如:
输出已保存至: /root/outputs/outputs_20240105_144711/
这是你最该盯住的一行字。
3. 详细拆解:每个文件都在做什么?
进入某个outputs_YYYYMMDD_HHMMSS/目录后,你会看到最多 3 个文件。它们不是随机生成的,而是严格对应你在 WebUI 中的每一步操作选择。
3.1 processed_audio.wav:预处理后的“干净版”音频
- 生成条件:只要上传了音频,这个文件就一定会生成。
- 作用:原始音频经过系统自动标准化后的版本。
- 关键参数:
- 采样率:强制统一为16kHz(无论你上传的是 44.1kHz 的 CD 音质,还是 8kHz 的电话录音);
- 格式:WAV(无损,兼容性最好);
- 通道:自动转为单声道(mono),消除左右声道差异对情感识别的干扰。
为什么需要它?因为 Emotion2Vec+ Large 模型只认 16kHz 单声道 WAV。这个文件就是模型真正“吃进去”的数据。如果你后续想用其他工具复现结果,或者做二次分析,processed_audio.wav就是你的黄金标准输入。
3.2 result.json:情感识别的“成绩单”
- 生成条件:只要完成识别,这个文件就一定会生成。
- 作用:结构化记录本次识别的全部核心结果,是程序可读、人可查的权威报告。
它的内容不是简单的文字,而是一个精心设计的 JSON 对象。我们来看一个真实示例(已脱敏):
{ "emotion": "happy", "confidence": 0.853, "scores": { "angry": 0.012, "disgusted": 0.008, "fearful": 0.015, "happy": 0.853, "neutral": 0.045, "other": 0.023, "sad": 0.018, "surprised": 0.021, "unknown": 0.005 }, "granularity": "utterance", "timestamp": "2024-01-05 14:47:11" }逐项解读:
"emotion"和"confidence":WebUI 上最醒目的主结果,即最高分情感标签和其置信度;"scores":全部 9 种情感的得分,总和恒为 1.00。这比单一标签更有价值——比如happy: 0.853+surprised: 0.021可能暗示一种“惊喜的快乐”,而非单纯平静的喜悦;"granularity":明确记录你选择的是utterance(整句)还是frame(帧级)。如果是frame,此文件还会包含一个"frames"数组,列出每一帧(通常是 0.1 秒)的情感得分;"timestamp":结果生成的精确时间,与目录名时间戳一致,方便交叉验证。
这个文件是自动化集成的关键。你可以用 Python 脚本批量读取成百上千个result.json,做情感趋势统计、客户满意度聚类,或者接入企业 BI 系统。
3.3 embedding.npy:可选的“数字指纹”
- 生成条件:仅当你在 WebUI 中勾选了“提取 Embedding 特征”复选框时,才会生成。
- 作用:将整段语音转化为一个高维数值向量,是语音的“数学表达”。
它不是一个图片或音频,而是一个 NumPy 数组文件。用 Python 两行代码就能加载:
import numpy as np embedding = np.load('/root/outputs/outputs_20240105_144711/embedding.npy') print(f"Embedding shape: {embedding.shape}") # 例如输出: (1024,)这个向量的意义在于:
- 相似度计算:两段语音的 embedding 向量越接近(余弦相似度越高),说明它们的情感底色越相似;
- 聚类分析:把 1000 个 embedding 放进 K-Means,能自动发现“愤怒集群”、“疲惫集群”、“兴奋集群”;
- 迁移学习:作为特征输入到你自己的分类器中,比如预测说话人情绪稳定性、压力水平等更深层指标。
重要提示:
.npy是二进制格式,不能用文本编辑器打开。它的价值完全体现在编程调用中。如果你不做二次开发,可以忽略它;但一旦你有定制化需求,它就是最关键的原材料。
4. 实操指南:如何快速访问这些文件?
WebUI 是图形界面,而文件在命令行里。以下是三种最常用、最可靠的访问方式:
4.1 方式一:通过 WebUI 内置下载(最简单)
- 如果你勾选了“提取 Embedding 特征”,识别完成后,右侧面板会出现一个“⬇ 下载 Embedding”按钮;
- 点击即可直接下载
embedding.npy到本地电脑; result.json和processed_audio.wav虽然没有单独按钮,但你可以右键点击 WebUI 中展示的音频波形图或结果区域,选择“另存为”来保存当前视图(非原始文件)。
4.2 方式二:通过容器命令行(最直接)
这是开发者和高级用户的首选。假设你已通过 SSH 登录到运行镜像的服务器:
# 1. 进入容器(如果不在容器内) docker exec -it <container_name_or_id> /bin/bash # 2. 查看 outputs 目录下的最新文件夹(按时间倒序) ls -t /root/outputs/ # 3. 进入最新目录,查看文件 cd /root/outputs/outputs_20240105_144711/ ls -la # 4. (可选)将文件复制到宿主机便于下载 # 在宿主机上执行(需先退出容器) docker cp <container_name_or_id>:/root/outputs/outputs_20240105_144711/ ./my_emotion_result/4.3 方式三:配置文件共享(最长效)
对于需要频繁导出结果的场景,建议在启动容器时,就将宿主机的一个目录挂载为outputs:
# 启动时添加挂载参数 docker run -d \ --name emotion2vec \ -p 7860:7860 \ -v /path/on/host/my_outputs:/root/outputs \ # 关键!将宿主机目录映射进来 emotion2vec-plus-large-image这样,所有识别结果会实时同步到你指定的宿主机文件夹(如/home/user/my_outputs),双击就能打开,无需任何命令行操作。
5. 常见误区与避坑指南
很多用户踩过这些坑,我们帮你提前绕开:
误区一:“outputs/” 目录在 WebUI 界面里,所以我该在浏览器地址栏输
http://localhost:7860/outputs/
❌ 错。WebUI 是一个前端应用,/outputs/是后端服务的内部路径,不对外提供 HTTP 访问。直接访问会 404。误区二:“我上传了 MP3,那 outputs 里应该也有 MP3”
❌ 错。系统只输出标准化后的processed_audio.wav。原始 MP3 不会被保存,也不会被修改。误区三:“我点了两次‘开始识别’,结果应该在一个文件夹里”
❌ 错。每次点击都触发一次全新任务,生成独立的时间戳目录。连续两次操作会产生两个并列的outputs_20240105_144711/和outputs_20240105_144712/。误区四:“embedding.npy 很大,是不是模型权重?”
❌ 错。embedding.npy是单次推理的输出向量,通常只有几 KB 到几百 KB。而模型权重(model.bin或类似)在/root/models/下,大小达数百 MB,且不会被写入 outputs 目录。终极避坑口诀:
“认准 outputs_ 开头,时间戳是身份证;
result.json 是报告,embedding 是原料;
processed_audio.wav 是标准输入,不是原始备份。”
6. 总结:掌握路径,就是掌握主动权
你现在已经彻底搞清楚了 Emotion2Vec+ Large 系统的输出逻辑:
- 所有结果都归集在
/root/outputs/这个根目录下; - 每次识别生成一个带精确时间戳的独立子目录;
processed_audio.wav、result.json、embedding.npy各司其职,分别解决“输入标准化”、“结果结构化”、“特征可编程”三大需求;- 通过 WebUI 下载、容器命令行、或宿主机挂载,你能以最适合自己的方式获取它们。
理解文件路径,从来不只是技术细节,而是掌控整个工作流的起点。当你能精准定位每一次识别的“数字遗产”,你才真正从一个工具使用者,升级为一个可定制、可集成、可扩展的 AI 应用构建者。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。