dsh-voice:DeepSeek Harness 面试场景的回合制语音插件

前言

在 DeepSeek Harness (DSH) 的开发中,为智能体添加语音交互能力通常需要自行处理 TTS/ASR 引擎的对接以及浏览器端的录音/播放 UI。dsh-voice 插件专为面试 preset 场景设计,提供了回合制语音通道。它通过抽象 Agent 工具屏蔽底层引擎细节,让面试流程在语音层面形成闭环。

插件定位

dsh-voice 是一个回合制语音通道插件,支持 TTS/ASR 引擎抽象。它为面试场景提供语音交互能力,所有者维护,许可证为 MIT。

核心功能

插件通过三个 Agent 工具提供语音能力,浏览器端自动配合录音与播放:

  • voice_speak:Agent 输出语音,浏览器自动播放。
  • voice_listen:人声输入录音,自动转写回传给 Agent。
  • voice_status:引擎健康检查,检查 TTS/ASR 可用性、队列及录音状态。

引擎抽象

插件支持 TTS 与 ASR 各自独立选择引擎,auto 模式按 qwen → mimo → local 顺序探测可用者。

  • qwen:使用 DashScope 原生接口,依赖环境变量 DASHSCOPE_API_KEY。
  • mimo:使用 MiMo-V2.5 接口,依赖环境变量 MIMO_API_KEY,支持配置 baseUrl。
  • local:支持 sherpa-onnx、whisper.cpp、piper 等本地二进制与模型。

本地 ASR(sherpa-onnx)已验证闭环,支持从 macOS say 合成中文并转写。音频默认落盘至 ~/.dsh/voice。

安装与配置

在对应的 profile 下执行安装命令:

dsh plugin --profile web add @harness-flow/dsh-voice

安装后重启 profile 生效。插件行的默认配置是中性值,需要在 profile 的 cordis.patch.yml 中按行 id dsh-voice 覆盖。

示例配置如下:

- id: dsh-voice
  config:
    asr:
      engine: auto
      language: zh
    tts:
      engine: auto
      voice: Cherry
    audioDir: ~/.dsh/voice
    listenTimeoutSec: 120
  • 云引擎密钥仅通过环境变量读取,配置中只写变量名。
  • 本地引擎(如 sherpa-onnx)需要 profile 安装 sherpa-onnx-node 并配置模型目录。
  • 本地 MiMo 网关可通过配置 baseUrl 指向本机地址复用同一实现。

面试官预设用法

插件负责语音链路(host 侧服务 + 浏览器 UI),preset 只负责「面试官」这个角色与流程。

建议在 preset 中定义面试官 Persona,要求其一次只提一个问题,使用 voice_speak 朗读后立即调用 voice_listen 等待作答。以下是一个示例配置片段:

- id: persona
  name: '@deepseek-ai/dsh-persona'
  config:
    text: >-
      你是一位专业的面试官,正在通过语音进行一场结构化面试。
      一次只提一个问题:用 voice_speak 朗读问题,随后立刻调用 voice_listen
      等待候选人作答;根据 transcript 追问或进入下一题。
      流程:开场寒暄 → 自我介绍 → 技术/项目深挖 → 行为面 →
      候选人提问 → 结束语与后续安排。全程专业、中立、鼓励,不做主观臆断;
      面试结束后输出评分表(各维度 1–5 分 + 一句话依据)与录用建议。

版本说明与限制

当前版本为 v0.1,存在以下设计取舍:

  1. 回合制优先:voice_speak 阻塞到合成完成,保证顺序;全双工打断(barge-in)待后续版本。
  2. 单客户端桥接:仅支持单客户端桥接,内存中管理 listen 会话,页面关闭后队列自动丢弃。
  3. 无会话持久化:不持久化 voice/* 会话事件,仅聊天记录保留文本转写。
  4. 失败局部化:引擎探测失败只影响该引擎;浏览器播放被拦截时等待用户手势重试。

总结

dsh-voice 解决了 DeepSeek Harness 中构建语音面试场景的引擎集成与交互逻辑问题。它提供了清晰的 Agent 工具接口与可配置的 TTS/ASR 引擎抽象,适合需要构建语音交互面试流程的开发者使用。

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

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

小夜