Yihong89/dsh-voice-core
voice engine, using Qwen TTS model
이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.
dsh-voice-core
共享语音引擎(Shared Voice Engine)—— dsh-teacher 与 dsh-companion 的公共底层。
一个 library,不是独立插件:消费插件(dsh-teacher / dsh-companion)在自己的
apply() 里调用 applyVoice(ctx, config)(host 侧),client 侧通过
createVoiceClient(opts) 组合共享 UI。语音由 mac mini 上的 Qwen3-TTS
(VoiceDesign,MPS 加速)生成,浏览器播放——声音从使用者自己的机器出来。
提供的能力
Host(applyVoice(ctx, config))
- Qwen3-TTS 代理路由:
{ttsPath}(如/dsh-teacher/tts)+-health,转发到 本地 TTS 服务(127.0.0.1:3091,可用DSH_VOICE_TTS_URL覆盖) speak/cheer模型工具(log-onlyvoice/*事件)/speak /cheer /cheer-at /cheer-text /voice命令voiceSpeak会话投影(foldvoice/speak/voice/spoken/voice/cheer)- 每日问候调度器:到点
agent.followup让 Agent 自己生成"欢迎 + 趣闻/新闻" (或配置固定文案直接朗读);schedulerEnabled控制开关 - 音色配置驱动:
config.styles(音色目录)+config.defaultStyle
Client(createVoiceClient(opts))
- 无内置 UI(不渲染任何图标/按钮)——只提供底层行为:自动朗读、音频播放、 💛 cheer 卡片,配置/选择界面完全交给消费插件自己实现
- 音频队列播放(fetch WAV →
<audio>,顺序播放不重叠) - 自动朗读每条 assistant 回复(1s 先显示文字),带按会话持久化的 localStorage cursor —— 切换会话/刷新页面不会重复朗读旧消息
- preset 门控:只在该消费插件的 agent preset 会话里生效
opts.resolveInstruct(sessionId)可选:按会话动态决定 TTS instruct(优先于defaultStyle的静态值),供需要"每个会话自己的音色"的消费者使用
配置示例
// dsh-teacher 的 apply()
import { applyVoice } from 'dsh-voice-core'
await applyVoice(ctx, {
presetName: 'teacher',
ttsPath: '/dsh-teacher/tts',
styles: { onee: { label: '🎧 清冷御姐', instruct: '清冷柔和的成年女声…' } },
defaultStyle: 'onee',
schedulerEnabled: false,
})
// client 侧
import { createVoiceClient } from 'dsh-voice-core'
var voiceClient = createVoiceClient({
presetName: 'teacher',
ttsPath: '/dsh-teacher/tts',
styles: { onee: { label: '🎧 清冷御姐', instruct: '…' } },
defaultStyle: 'onee',
})
// 在 apply 里:voiceClient.apply(ctx)
安装
dsh plugin --profile web add github:Yihong89/dsh-voice-core
profile 的 cordis.patch.yml 注册事件:
- insert:
- id: dsh-voice-registrar
name: dsh-voice-core/register-events
pnpm 11 默认
blockExoticSubdeps: true,而 dsh-teacher/dsh-companion 把 dsh-voice-core 作为 git 子依赖。若报ERR_PNPM_EXOTIC_SUBDEP,在 profile 的pnpm-workspace.yaml加blockExoticSubdeps: false。
测试
node --test test/*.test.js # 49 tests
License
MIT
보안 및 설치 증거
이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.
공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.
GitHub 메타데이터에서 라이선스가 감지되지 않았습니다.
최근 180일 내 코드 업데이트가 있습니다.
재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.
검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.
missing-license