dsh-avatar-frame:为每轮回复加上角色头像与朗读

前言

在 DeepSeek Harness(DSH)里长时间对话时,助手回复往往是一屏接一屏的文本:谁在说、要不要边做别的边听结果,界面本身并不强调。若你希望每轮回答左侧有一个固定的「角色位」,并能用系统语音或本机 TTS 把最终回答读出来,就需要在客户端侧接一层界面能力。下面介绍社区插件 dsh-avatar-frame(维护者 vioeveann,分类为客户端):它在每轮已完成的回复左侧显示圆形头像与可编辑 ID,并提供朗读、播放控制与可选的一键托管语音服务进程;插件不附带任何语音模型或参考音频,音色由你本机或远程 HTTP 服务提供。

这是什么

dsh-avatar-frame 是面向 Web 平台 DSH 的界面插件:接管「已完成,用时 …」相关行的渲染,在 gutter 区展示头像和 ID,并可选朗读该轮最终回答(不读思考过程与折叠的工具步骤)。数据保存在浏览器 localStorage,默认不上传;只有当你把 TTS 地址指向远程时才会对外发起合成请求。代码以 MIT 许可发布,npm 包名与仓库名均为 dsh-avatar-frame。

核心功能

形象与预设

每轮回答结束后,左侧出现圆形头像,右侧是可点击编辑的 ID,与完成用时行对齐。可上传图片并在裁切框内拖动、滚轮缩放后应用到所有轮次;ID 字号可在 10–20px 间调节。最多保存 8 套「头像 + ID + 字号」预设,一键切换;预设图以压缩 JPEG 形式存储。

朗读与播放

点 ID 右侧小喇叭可朗读该条回复正文。可开启「自动朗读新回复」,仅对新完成的轮次生效,历史轮次不会补念。

两种引擎:

  1. 系统语音:开箱即用,可选音色;按回复语言倾向选中/英文音色,并优先神经网络类音色(具体列表取决于系统与客户端)。
  2. 本地服务:向你在设置里填写的 HTTP 地址发起合成;默认 http://127.0.0.1:8123。服务不可用时自动退回系统语音;离线时每 2.5 秒重试,连上后每 30 秒静默保活。

朗读时出现播放控制条(接在小喇叭右侧):暂停/继续、上一句/下一句、五档语速(0.95× / 1.00× / 1.05× / 1.10× / 1.15×)、停止;系统语音与本地服务均支持。音量滑块 0–100%,默认 50%。语气三档(平稳 / 自然 / 活泼)会随请求发给本地服务。长回复按句切分,并提前两段预生成以减少句间停顿;单句失败会跳过并继续,失败时小喇叭旁有红点,悬停可见原因。

语音服务进程(可选)

插件可在宿主端替你启动 / 停止 / 重启你配置的 TTS 进程,入口在 设置 → 角色头像 → 语音服务 与插件详情页同名区块。可勾选「DSH 启动时拉起语音服务」(指 DSH 启动时执行一次,非开机自启)。启动配置包括启动命令、工作目录、环境变量(每行 KEY=VALUE)。切换到「系统语音」时该区块通常隐藏;若进程仍在跑或开着自启,界面行为以 README 说明为准。

状态会随连接过程更新:启动后先显示检测与等待秒数,连上为「已连接」;超过 25 秒仍未连上会显示「未连接」及简短原因。设置页提供诊断信息(服务状态、模型名、上一句合成耗时、播放进度、最近错误等)。界面语言可在中文 / English 间切换,选择仅存本机。

安装与启用

在 DeepSeek Harness 中打开 插件 → 添加插件,任选一种来源:

  • npm 包名:dsh-avatar-frame
  • GitHub 仓库地址:https://github.com/vioeveann/dsh-avatar-frame
  • 本机解压后的源码目录(例如从 最新 release 源码 zip 解压)

添加完成后必须重启一次 DSH(安装或升级后同样如此)。插件前端模块与「一键启动服务」的宿主端代码在 DSH 启动时加载,只刷新页面可能出现「已安装、显示运行中,但聊天区无变化」或「宿主端未加载」。

国内使用 npm 时可走 registry.npmmirror.com 等镜像;若用 GitHub 地址安装依赖本机 git 能访问 github.com。装不上时可按 README 排查 registry、代理,或改用本地目录安装。

典型用法

配置头像与 ID

  1. 点任意一轮回复左侧头像,或「已完成」行的 ID,打开设置面板。
  2. 点「选择头像图片」上传,在裁切框内调整,确定。
  3. 在顶部输入框填写 ID,按需调节字号;需要时点「保存预设」。
  4. 打开「朗读」后,点回复旁小喇叭试听。

集中配置入口:设置 → 角色头像(与点头像弹出的面板、插件详情页内容一致)。

先用系统语音

引擎选「系统语音」,在音色下拉框试听。Windows 11 可安装微软自然语音后重启 DSH,下拉框会优先排列带 Natural 的项;若系统仅有老 SAPI 音色,可改用本地服务。

用仓库示例跑通本地 TTS

插件不带服务实现;仓库提供最小示例(微软 Edge 在线语音):

pip install edge-tts
python examples/simple_tts.py

示例默认监听 127.0.0.1:8123。在插件里把服务地址设为 http://127.0.0.1:8123,引擎选「本地服务」,点小喇叭或「试听一句」验证。

若要用插件托管该进程,在「启动配置」中填写例如:启动命令 python examples/simple_tts.py,工作目录为本仓库所在目录;安装或升级插件后需重启 DSH 后该能力才可用。

本地服务 HTTP 契约(摘要)

完整说明见仓库 docs/tts-contract.md。最小约定:

GET  /health
  -> 200 {"ok": true, "model": "任意字符串"}

POST /tts
  {"text": "要读的文本", "speed": 1.05, "tone": "normal"}
  -> 200,Content-Type 为 audio/wav 或 audio/mpeg

需允许 CORS(Access-Control-Allow-Origin: * 并响应 OPTIONS)。speed 建议范围 0.7–1.3;不识别的 tone 可由服务忽略。

适用场景与注意

适合谁:在 Web 版 DSH 里希望对话更有「角色感」、或需要听最终回答而非盯屏的用户;已有自研 TTS 且愿意按 HTTP 契约对接的开发者。

权限与安全:「一键启动服务」会按你填写的命令在本机执行程序,插件不附带第三方服务;请只配置可信命令。路由走本机同源请求且无额外鉴权,勿将 DSH 暴露到不可信网络。

生态与来源:DSH 社区插件目录(如 SkillHub 上的条目)为独立站点,与 DeepSeek / 幻方无官方从属关系。安装前建议查看 GitHub 仓库 源码与 MIT 许可证,并自行确认所用 TTS 模型、参考音频与第三方服务的版权。

已知限制(摘自 README):

  • 仅支持 Web 平台 DSH。
  • 停用或卸载后请刷新界面,否则可能出现「未知 surface 事件:turn-process」。
  • 头像仅在一轮结束后出现,流式输出过程中不显示。
  • 与其他同样接管 turn-process 的插件可能冲突。
  • 语音模型、参考音频需自备;插件不包含音色文件。

结尾

dsh-avatar-frame 把「谁在说」和「读出来」收进客户端一层:头像、ID、预设与双引擎朗读,并可选择由 DSH 托管你自己的 TTS 进程。进一步了解与安装:

  • 目录页:https://www.skillhub.cn/plugins/vioeveann/dsh-avatar-frame
  • GitHub:https://github.com/vioeveann/dsh-avatar-frame
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye