前言¶
先交代背景。DSH 生态里插件是主要扩展方式,「一切皆插件」,你想改的交互几乎都有人做。做智能体开发的人常碰到的一个小麻烦是:指令写得够全,语气没过去。同样一句「这边这样改一下,但那报错先别动」,崩溃和兴奋在模型眼里是同一段文字,回复风格也千篇一律。想让对方先响应你当下的状态,没有稳定的入口,逐次手动描述又太假。
lidu-china/dsh-dafeiyu-emotion 就是冲着这件事来的。它是社区目录里一个不起眼的小插件:维护者 LiDu-china,目录分类「模型推理」,GitHub 两颗星,仓库自带的英文简介是一句:Voice + emotion-aware companion for DeepSeek Harness。下面介绍它的具体做法。
这是什么¶
这是一个给 DeepSeek Harness 使用的语音情绪插件。作者把它定位成一个可解释的情绪估计器,而不是「读心」工具:做的是语音转写加声学/文本情绪估计,然后把估计结果当作回复风格的参考。
它在 DSH 输入框旁边加了一个「🐋 鱼耳」按钮,流程是:
- 点击鱼耳,说一句话;
- 插件在本机完成语音转写;
- 浏览器端计算韵律特征(语速、停顿、基频、音高波动、能量),服务端再融合小型中英文情绪词表;
- 把「用户原话 + 情绪上下文」填入当前会话并自动发送;
- 回复模型先承接情绪再回答问题,桌面大肥鱼继续显示工作状态。
作者明确强调,插件只增加一段带边界的情绪上下文,要求模型「自然承接、不要复述分析、不要声称读心」。
核心功能¶
能力分两块看:情绪输出和注入方式。
情绪输出方面,插件给出七类标签——喜悦、低落、生气、紧张、惊讶、厌烦、平静——同时给出 confidence(置信度)、valence(愉悦度)、arousal(唤醒度)和一段语气摘要。多段语音的情绪时间线也能看,每段文本、情绪和置信度都可悬停查看。
注入方式方面,默认把带情绪上下文的 prompt 填入 composer 并自动发送,回复直接出现在对话里。失败路径也写了:如果情绪分析失败,插件会保留明确错误,不会假装成功。
其它已核实的能力点:
- 设置页注册了完整卡片,可调启用开关、语言、增强后端、超时和录音上限,卡片顶部实时显示当前模式;
- 设置页有隐私与运行状态面板,能看到最近音频大小、模型加载状态、worker PID 和临时文件清理;
- 本机提供
/context接口,其他插件可以读取最近一次情绪上下文; - 支持 DSH 原生语音快捷键;
- 安装了 Better Sidebar 之后,可以把「情绪耳朵」固定到右侧边栏;
- 大肥鱼桌面角色由依赖
dsh-dafeiyu(0.1.23)提供 companion 能力,本插件负责「听觉与情绪」这一半。
两种分析模式¶
轻量模式是默认,面向插件市场安装:
- 用 DSH 自带的 Voice Input / SenseVoice 做转写;
- 浏览器端计算韵律特征,服务端融合小型中英文情绪词表;
- 不需要 Python、GPU 或额外的模型路径。
增强模式可选,面向本机已有「语音转文本」/ VoiceSense 项目的人:把 backendRoot 指向该项目根目录,转写走 SenseVoice,声学情绪走 emotion2vec,再用 BERT + 词典 + 韵律做融合,输出更细的逐句情绪和时间线。插件不重新下载模型,也不修改 VoiceSense 项目,只是启动一个常驻 worker 复用已有环境。
安装与启用¶
插件已经收录到 1024Store(独立站点,与 DeepSeek / 幻方无官方从属关系),也可以在 DSH 的插件市场 / Discover 里按包名搜索。
最简单是走 npm:
dsh plugin --profile desktop add dsh-dafeiyu-emotion
DSH Web 使用 --profile web。
也可以走 GitHub 源:
dsh plugin --profile desktop add github:LiDu-china/dsh-dafeiyu-emotion
或下载 Release tarball 后用本地路径安装,当前包版本 0.3.2:
curl -L -o dsh-dafeiyu-emotion-0.3.2.tgz \
https://github.com/LiDu-china/dsh-dafeiyu-emotion/releases/download/v0.3.2/dsh-dafeiyu-emotion-0.3.2.tgz
dsh plugin --profile desktop add "D:/path/to/dsh-dafeiyu-emotion-0.3.2.tgz"
DSH Desktop 的 profile 由 Electron 应用管理;命令行安装请使用桌面应用自带的
dsh命令。
装完先启用 dsh-dafeiyu-emotion。轻量模式还要再做一步:打开 DSH 左侧「插件」,找到 Voice Input,启用它,然后进入详情下载或准备 SenseVoice 模型。如果 Voice Input 尚未准备完成,插件会直接提示,不会静默降级,也不会把音频上传。
典型用法¶
轻量模式的典型用法只是一个按钮。打开任意普通会话,点输入框旁的「🐋 鱼耳」,说一句话;插件完成本地转写和情绪估计,把带情绪上下文的 prompt 填入 composer 并自动发送。ttsOnlyAfterVoice 默认为 true,也就是说只有录音后两分钟内的回复才会被朗读,纯打字对话里大肥鱼不会抢话。
增强模式只多一个配置步骤,在 DSH profile 配置覆盖层里把 backendRoot 指向 VoiceSense 项目根目录:
- id: dsh-dafeiyu-emotion
config:
backendRoot: D:/path/to/voice-sense
也可以用环境变量:
DSH_DAFEIYU_EMOTION_BACKEND=D:/path/to/voice-sense
可配置字段不少,挑几个跟日常使用关系大的列出来,完整表见仓库 README:
| 字段 | 默认值 | 说明 |
|---|---|---|
backendRoot |
空 | VoiceSense 项目根目录;空则使用 DSH Voice Input 轻量模式 |
pythonPath |
空 | 自定义 Python;空则自动寻找 .venv-ser |
language |
zh |
zh / en / auto |
empathyStyle |
gentle |
gentle / direct / humorous / concise |
ttsEnabled |
true |
是否朗读大肥鱼回复 |
ttsEngine |
piper |
piper 本地 / edge 在线 / browser 系统语音 |
ttsVoice |
zh-CN-XiaoyiNeural |
Edge TTS 音色 |
maxAudioBytes |
12 MB | 单次录音大小上限 |
startupTimeoutMs |
180000 | 首次加载增强后端的最长等待 |
requestTimeoutMs |
180000 | 单次分析请求超时 |
保存后配置会立即写入 DSH 设置,路径或超时变化时会自动重启语音 worker。
大肥鱼语音回复¶
助手回复生成后,插件通过本机事件流把文本交给 TTS,让大肥鱼把回复读出来。默认是 Piper 本地模型,音色 zh_CN-huayan-medium,不联网,延迟低:
python -m pip install piper-tts
模型放到默认目录:
~/.dsh/dafeiyu-emotion/tts/piper/zh_CN-huayan-medium.onnx
~/.dsh/dafeiyu-emotion/tts/piper/zh_CN-huayan-medium.onnx.json
也可以在设置页填自定义 Piper 模型路径。模型缺失或合成失败时自动回退到浏览器 speechSynthesis,不会让回复静默丢失。更自然的在线音色可以切到 Edge TTS,默认音色 zh-CN-XiaoyiNeural;Edge 需要网络,回复文本会发送到 Microsoft,网络或服务不可用时同样回退到浏览器语音。
语音快捷键¶
插件向 DSH 注册了一个原生快捷键命令,在「设置 → 快捷键 → 搜索『大肥鱼语音』」即可改键。默认值:
| 客户端 | 默认快捷键 |
|---|---|
| DSH Desktop(Windows / Linux / macOS) | Alt+V |
| DSH Web(Windows) | Ctrl+Alt+V |
| DSH Web(macOS) | Cmd+Option+V |
| DSH Web(Linux) | 默认未绑定,需在快捷键设置中指定 |
空闲时按一次开始录音,录音中再按一次结束并分析。快捷键必须至少包含 Ctrl、Alt、Shift 或 Cmd 等修饰键,不能绑定裸字母键。
隐私与注意¶
磁盘和隐私约束是它写得比较完整的地方。音频不进入 Session 事件或附件,只有最终文本和情绪摘要会进入对话;分析期间的 WAV 走系统临时目录,请求结束即删除。默认全本地:不读取屏幕,不常驻监听麦克风,只在点击鱼耳后录音;客户端单次录音上限 30 秒。插件不自动执行语音里的命令,也不把情绪预测当成医学或心理诊断。
选择 TTS 引擎时注意一条边界:ttsEngine 切成 edge 之后,回复文本不在本地,会发送到 Microsoft 做语音合成。切之前先确认这条能不能接受。
其它需要留意的点:
- 增强模式首次启动要加载 SenseVoice、BERT 文本模型和 emotion2vec,通常十几到几十秒;之后 worker 常驻,热请求通常在一秒内;
- 本插件代码为 MIT,桌面角色与基础 companion 能力来自
dsh-dafeiyu,语音识别来自 SenseVoice,声学情绪来自 emotion2vec,均按各自许可使用,作者声明本项目不是 DeepSeek 官方项目; - 插件以当前 DSH 进程权限运行,装之前建议先把源码和许可证过一遍,确认目录、音频路径和依赖项在你环境的可获取性;
- 情绪判断不准时,作者给的建议是靠近麦克风、减少环境噪声、一次只说一两句、尽量用完整自然句,并把它当回复风格参考,而不是读心或诊断。
结尾¶
想给 DSH 的输入补上声音和情绪线索,又不能接受音频被送到云端,这个插件值得装来试。轻量模式门槛最低,只需要启用 DSH 自带的 Voice Input,不需要 Python、GPU 或额外模型路径,代价是声学估计只有一个基础档位,细粒度的逐句情绪和时间线要上增强模式,而增强模式要求你先有一个可用的 VoiceSense 环境。开增强模式之前,先把 README 与源码读一遍。
- 目录页:https://www.skillhub.cn/plugins/LiDu-china/dsh-dafeiyu-emotion
- GitHub:https://github.com/LiDu-china/dsh-dafeiyu-emotion