dsh-listen:为文本 Agent 提供可组合的音频证据

前言

在 DeepSeek Harness(DSH)里做智能体时,模型上下文通常是文本。用户发来语音、录音或附件里的音频时,若直接把二进制丢进对话,多数纯文本模型既无法「听」,也难以做可核查的判断。常见变通是单独开 ASR 流水线、或把整段音频交给多模态 API,再让 Agent 基于二手摘要推理——证据形态不统一,也很难和本地文件、会话工作目录对齐。

@vlln/dsh-listen(维护者 vlln,社区分类:模型推理)是 DSH 生态里的一款插件:通过一个 listen 工具传入音频路径或附件 ID,按需返回转写、声谱图、电平、频谱、音高、节奏等结构化证据,由主 Agent 自行组合解读。它不替模型回答语义问题,也不生成或编辑音频;定位是「听」的原子化工具层。插件目录见 SkillHub,源码与文档见 GitHub。DSH 社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

一句话:给文本 Agent 装上耳朵——传入音频,返回可选特征集合与统一 JSON 证据结构。

设计思路是把「听」拆成可独立请求的原子操作(转写、事件标签、波形/谱图、各类 DSP 标量),默认收敛为单一工具 listen;配置 mode: split 时可拆成四个工具(audio_signal / audio_transcript / audio_events / audio_dsp),便于 Agent 按任务组合调用。

当前包版本为 0.1.5,许可证 MIT(可选运行时、权重、数据各有其许可)。

核心功能

listen 工具与特征列表

调用形态示例:

listen({path:"x.wav", features:["levels","signal_image"], from:0, to:10})
参数 说明
path / attachment_id 来源,二选一;路径按会话工作目录解析
features 必填,无默认值
from / to 源文件秒数,默认 0 / EOF;单次区间 ≤60 秒

features 可选值包括:transcript、events、signal_image、levels、energy、spectral_peaks、band_energy、chroma、pitch、pitch_frames、onsets、tempo。附加参数如 spectral_detail(影响 signal_image 的 FFT 长度)、frequency_range_hz、channel_view、dsp_band_hz(band_energy 必填)等,语义见仓库内设计文档。

返回给模型的主体为 JSON:status(complete / partial / failed)、source(格式、采样率、时长、sha256 等)、coverage、requested_features / available_features / missing_features,以及 evidence 下各特征块(含 method、单位、参数;失败时带 reason 与错误码)。signal_image 的图作为图片附件随结果返回,文本 payload 不含图。

各特征背后的处理(摘要)

  • transcript:可选本地 MLX Whisper 或 OpenAI 兼容 ASR API(需配置)。
  • events:可选本地 LiteRT / YAMNet 声音分类(需开启)。
  • signal_image:STFT + mel,输出功率谱图 PNG。
  • levels:逐声道 RMS、峰值、DC、过载计数等。
  • energy / spectral_peaks / band_energy / chroma / pitch / onsets / tempo:在统一 DSP 管线上分路计算,细节见 README 中的流程图与 docs/guides/dsp-evidence.md。

基准成绩(MMAU)

作者在 MMAU-test-mini 1000 题上报告 74.60% 平均正确率(MMAU-v05.15.25 修订版、文本模型加工具)。分域约为 sound 72.97、speech 82.58、music 68.26。图中其他模型行为引用 MMAU 论文 Test-mini 列的早期端到端音频模型结果,与当前工具链设置不同,对比时需注意设定差异。

安装与启用

前置:Node 22+、dsh ^0.2.1-rc.5(README 实测 0.2.1-rc.5)、本机安装 ffmpeg / ffprobe。

官方安装命令:

dsh plugin --profile web add @vlln/dsh-listen

装完后重启 dsh web;在 Plugins 页填写同一包名 @vlln/dsh-listen。包声明了 dsh.bundle.patch,add 会自动写入 profile 的 bundle 列表,无需手写 insert;若曾手工 insert 旧配置,需先删除以免冲突。

卸载:

dsh plugin --profile web remove dsh-listen

查看生效配置:

dsh --profile web --dump-config | grep -A6 dsh-listen

兼容性:README 写明在 dsh 0.2.1-rc.5 + Node 22 + macOS arm64(2026-11-06)实测;engines.dsh: ^0.2.1-rc.5。DSH Desktop、Linux、Windows 及 dsh 0.2.0 及更早版本未测。

配置要点

设置 默认 说明
scratch $DSH_HOME/data/dsh-listen/scratch 解码与中间文件目录,调用结束清理
mode aggregate aggregate 仅 listen;split 启用四个拆分工具
localExecution true 沙箱或远程文件系统无法读本机路径时设为 false
asrEnabled / asrMode false / api 转写:本地 MLX 或 API
eventsEnabled false 声音事件标签
allowExternalAudio false 为 true 且使用 ASR API 时可能外发音频

典型用法

1、在会话工作目录放置或可解析的 x.wav(格式以本机 ffmpeg 支持为准)。

2、让 Agent 调用 listen,在 features 中显式列出所需证据,例如只要电平与谱图:

listen({path:"x.wav", features:["levels","signal_image"], from:0, to:10})

3、根据返回的 status 与 evidence:标量直接进入推理;signal_image 从附件读取 PNG 供多模态或人工查看。需要转写或环境声标签时,先在配置中开启 asrEnabled / eventsEnabled 并补齐凭据(由宿主凭据服务或环境变量提供,插件不读取凭据本体)。

4、长文件分段:单次 from/to 区间不超过 60 秒;多声道高采样率时有效时长可能更短(总标量样本上限 23,040,000)。

适用场景与注意

适合谁:在 DSH Web / 本地 Harness 里做需要「听文件再给结论」的 Agent——质检听测、会议片段摘要前的证据抽取、音乐/环境声的频域与节奏特征分析等。希望证据可复现、可进上下文、且与本地路径/附件 ID 一致时,比纯外部 ASR 的一站式黑盒更易编排。

限制:不回答语义问题;不支持音频生成、播放或编辑;单次最多约 60 秒片段;支持 1–8 声道,ASR 与 events 分支会混成单声道。

安全与数据:默认在本机解码,除配置 ASR API 且 allowExternalAudio 为真外不外发音频。证据会进入主 Agent 上下文;主 Agent 使用云模型时,证据也会发往模型服务。安装与启用前,插件以当前 dsh 进程权限运行,应自行审阅 源码与 MIT 许可,确认 scratch、外发与凭据策略符合环境要求。

结尾

dsh-listen 把「听懂声音」收敛成 DSH 内可选特征、统一证据格式的工具调用,方便文本 Agent 在本地音频与可选 ASR/事件模型之间做组合。若你在搭 DSH 智能体并处理音频输入,可从目录页了解简介与分类,并按 README 安装命令接入。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye