songjongdevsecops/dsh-plugin-voz-copilot ↗★ 0
dsh-plugin-voz-copilot
Voice copilot for DeepSeek Harness: names and attaches the push-to-talk session, adds composer microphones, and runs a real-time spoken conversation loop with Silero VAD, speculative transcription, streaming TTS and speaker verification. 适合需要与AI进行实时语音交流、使用麦克风输入和语音合成的用户。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:songjongdevsecops/dsh-plugin-voz-copilotConfiguration
The defaults come from the package bundle patch and boot on any machine. To use
your own workspace and voice, edit the profile patch
(~/.dsh/profiles/web/cordis.patch.yml). A patch under the same id replaces
the whole config of the line, so restate every key you want to keep.
- id: voz-copilot
config:
mode: 'attach'
workspace: '/path/to/your/workspace'
title: 'conversa_copilot'
statePath: '~/.dsh/voz-copilot.json'
pollMs: 3000
whisperUrl: 'http://127.0.0.1:8178'
whisperFastUrl: 'http://127.0.0.1:8179'
voz:
persona: 'Answer in short, plain sentences that sound natural when spoken aloud.'
maxChars: 220
tts:
bin: 'edge-tts'
voice: 'en-US-AriaNeural'
rate: '+0%'
volume: '+0%'
lexicon: '/path/to/tts_lexicon.py'
python: 'python3'
servidorQuente: 'http://127.0.0.1:8180'
servidorQuenteScript: '/path/to/tts-servidor.py'
servidorQuentePython: 'python3'
orador:
limiar: 0.5
perfilPath: '~/.dsh/voz-perfil.json'
~ is expanded in workspace, statePath and the other paths below.
| Key | Default | Purpose |
|---|---|---|
mode | attach (bundle line); code default is title | attach for the web profile; title for the acp profile |
workspace | . (the process working directory) | workspace that owns the voice session; set it to your workspace path |
title | conversa_copilot | title pinned on the push-to-talk session |
marker | none, required in title mode | first-line marker the bridge sends, e.g. [conversa_copilot] |
statePath | ~/.dsh/voz-copilot.json | durable link between the bridge and the session id |
pollMs | 3000 | how often attach mode checks the link |
whisperUrl | http://127.0.0.1:8178 | whisper-server used by dictation and by the slow path |
whisperFastUrl | same as whisperUrl | faster whisper-server for conversation segments |
voz.persona | a short spoken-answer instruction | prefix prepended to each spoken turn |
voz.maxChars | 220 | cap per spoken phrase (60 to 600) |
tts.bin | required with tts | edge-tts executable, or a compatible wrapper |
tts.voice | required with tts | voice name passed to edge-tts |
tts.rate, tts.volume, tts.pitch | unset | passed through when set |
tts.lexicon | unset | pronunciation lexicon script (text in, text out) |
tts.python | python3 | interpreter for the lexicon |
tts.servidorQuente | unset | warm TTS HTTP server base URL |
tts.servidorQuenteScript | unset | script the plugin starts for the warm server |
tts.servidorQuentePython | python3 | interpreter for that script |
orador.limiar | 0.5 | cosine threshold for "this is my voice" (0.1 to 0.95) |
orador.perfilPath | ~/.dsh/voz-perfil.json | voice profile, mode 0600, vectors only |
orador.url | http://127.0.0.1:8181 | speaker embedding server |
orador.python | venv/bin/python in the package (venv\Scripts\python.exe on Windows) | interpreter for the speaker server |
orador.script | speaker-servidor.py in the package | speaker server script |
orador.modelo | models/orador_eres2net.onnx in the package | speaker embedding model |
Text-to-speech
tts.bin is spawned once per phrase with --voice, --text, and the optional
--rate=, --volume=, --pitch=, and must write MP3 to stdout. With
tts.servidorQuente set, the plugin first tries
GET /fala?texto=...&voz=... on that server and starts
tts.servidorQuenteScript when it is down, falling back to the CLI. The warm
server is what makes the first byte fast; the CLI works without it.
Speaker verification
The default paths assume a checkout of this repository with a venv inside it:
git clone https://github.com/songjongdevsecops/dsh-plugin-voz-copilot.git
cd dsh-plugin-voz-copilot
python3 -m venv venv
venv/bin/pip install -r requirements.txt
Then install the plugin from the checkout (dsh plugin --profile web add /path/to/dsh-plugin-voz-copilot) so the bundled paths resolve, or point
orador.python, orador.script and orador.modelo at that checkout. The
Python server is optional: without it the conversation mode still works, just
without speaker filtering.