dsh-live-voice 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -112
- package/lib/client.js +1608 -559
- package/lib/server.js +41 -5
- package/lib/vad/manifest.json +2 -2
- package/lib/vad/vad.worker.js +1 -1
- package/package.json +2 -2
- package/src/app/client/apply.tsx +176 -50
- package/src/app/client/i18n/catalogs/base.ts +22 -1
- package/src/app/client/i18n/catalogs/en.ts +30 -8
- package/src/app/client/i18n/catalogs/es.ts +29 -6
- package/src/app/client/i18n/catalogs/fr.ts +29 -6
- package/src/app/client/i18n/catalogs/hi.ts +30 -8
- package/src/app/client/i18n/catalogs/pt-BR.ts +30 -8
- package/src/app/client/i18n/catalogs/zh.ts +30 -8
- package/src/app/server/registerRoutes.ts +2 -1
- package/src/modules/conversation/components/ConversationControls.tsx +3 -17
- package/src/modules/conversation/components/createConversationComponents.tsx +2 -16
- package/src/modules/conversation/models/meeting.ts +76 -20
- package/src/modules/conversation/models/meetingTranscript.ts +10 -2
- package/src/modules/core/ARCHITECTURE.md +1 -1
- package/src/modules/core/coordinator.ts +144 -15
- package/src/modules/core/engineSelection.ts +10 -0
- package/src/modules/core/qwen/QwenSettings.tsx +0 -1
- package/src/modules/core/settings.ts +38 -1
- package/src/modules/recognition/ARCHITECTURE.md +2 -0
- package/src/modules/recognition/engines/browser/BrowserRecognitionEngine.ts +57 -5
- package/src/modules/recognition/engines/browser/externalAudioSupport.ts +71 -0
- package/src/modules/recognition/engines/whisper/WhisperSettings.tsx +0 -1
- package/src/modules/settings/ARCHITECTURE.md +4 -0
- package/src/modules/settings/components/LiveVoiceSettings.tsx +62 -24
- package/src/modules/settings/models/browserVoiceSelection.ts +76 -0
- package/src/modules/settings/models/settingsHost.ts +6 -2
- package/src/modules/settings/models/settingsStorage.ts +3 -0
- package/src/modules/settings/sections/conversation/ConversationDelaySettings.tsx +1 -1
- package/src/modules/settings/sections/conversation/ConversationSettingsSection.tsx +12 -10
- package/src/modules/settings/sections/conversation/DeliverySettings.tsx +2 -6
- package/src/modules/settings/sections/conversation/HoldToTalkSettings.tsx +1 -1
- package/src/modules/settings/sections/conversation/MeetingSourceSettings.tsx +30 -0
- package/src/modules/settings/sections/conversation/VoiceModeSettings.tsx +5 -5
- package/src/modules/settings/sections/recognition/RecognitionEngineSettings.tsx +12 -18
- package/src/modules/settings/sections/recognition/RecognitionFilterSettings.tsx +4 -4
- package/src/modules/settings/sections/recognition/RecognitionSettingsSection.tsx +6 -4
- package/src/modules/settings/sections/recognition/SilenceDetectionSettings.tsx +9 -4
- package/src/modules/settings/sections/recognition/VoiceCommandSettings.tsx +13 -12
- package/src/modules/settings/sections/speak/OutputFilterSettings.tsx +7 -3
- package/src/modules/settings/sections/speak/PlaybackPolicySettings.tsx +6 -6
- package/src/modules/settings/sections/speak/SpeakSettingsSection.tsx +5 -3
- package/src/modules/settings/sections/speak/SpeechAdvancedSettings.tsx +1 -1
- package/src/modules/settings/sections/speak/SpeechEngineSettings.tsx +76 -45
- package/src/modules/speak/ARCHITECTURE.md +4 -0
- package/src/modules/speak/engines/audio/HostAudioEngine.ts +26 -8
- package/src/modules/speak/engines/browser/BrowserSpeakingEngine.ts +75 -13
- package/src/modules/speak/services/sessionSpeechMemory.ts +55 -0
- package/src/shared/ARCHITECTURE.md +1 -1
- package/src/shared/design-system/feedback/Hint.tsx +109 -0
- package/src/shared/design-system/forms/CheckboxField.tsx +9 -3
- package/src/shared/design-system/forms/PhraseField.tsx +107 -0
- package/src/shared/design-system/forms/SelectField.tsx +32 -11
- package/src/shared/design-system/icons/icons.ts +5 -0
- package/src/shared/design-system/index.ts +1 -0
- package/src/shared/design-system/layout/SettingsSection.tsx +45 -5
- package/src/shared/design-system/layout/SettingsSectionBody.tsx +6 -0
- package/src/shared/design-system/layout/index.ts +1 -0
- package/src/styles/index.ts +41 -1
package/README.md
CHANGED
|
@@ -1,128 +1,36 @@
|
|
|
1
1
|
# DSH Live Voice
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Local-first speech-to-text (STT), text-to-speech (TTS), and meeting audio transcription plugin for DeepSeek Harness (DSH). Local speech processing does not make DSH or its AI provider fully offline.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
[](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.2.1-alpha.2)
|
|
7
|
-
[](LICENSE)
|
|
5
|
+
## Installation
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
Tested with **DeepSeek Harness v0.2.1-alpha.2**. The package manifest's `dshTestedVersion` field records the tested version.
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
DSH Live Voice is a local-first voice plugin for DeepSeek Harness (DSH), with speech-to-text (STT), text-to-speech (TTS), and real-time meeting transcription.
|
|
14
|
-
*Built in Brazil 🇧🇷 and tested daily with Brazilian Portuguese on macOS.*
|
|
15
|
-
|
|
16
|
-
## What can you do with it?
|
|
17
|
-
|
|
18
|
-
- **Work by voice:** dictate a request, talk through code or documents, and hear the assistant’s response while staying focused on your work.
|
|
19
|
-
- **Ask questions during meetings:** capture shared meeting audio alongside your microphone, review the transcript, and send relevant context to the DSH assistant while the discussion is still happening.
|
|
20
|
-
- **Stay in control:** edit before sending, choose manual or automatic microphone delivery, and pause, resume, or stop spoken answers.
|
|
21
|
-
- **Choose your speech setup:** use local recognition and speech engines where supported, or configure an HTTP endpoint. Local-first voice does not mean DSH or its AI provider is fully offline.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## ⚡ Quick Start
|
|
26
|
-
|
|
27
|
-
Install with `npx dsh` into your DSH web profile:
|
|
9
|
+
Install the prebuilt package from npm; no source build is required. The Git repository contains source only.
|
|
28
10
|
|
|
29
11
|
```sh
|
|
30
12
|
npx dsh plugin add --profile web dsh-live-voice
|
|
31
13
|
```
|
|
32
14
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## 🌍 Interface Languages
|
|
38
|
-
|
|
39
|
-
DSH Live Voice’s plugin interface is translated into the following languages. This refers to the visible plugin UI—not speech-recognition or text-to-speech language support.
|
|
40
|
-
|
|
41
|
-
- 🇺🇸 **English**
|
|
42
|
-
- 🇧🇷 **Portuguese (Brazil)**
|
|
43
|
-
- 🇪🇸 **Spanish**
|
|
44
|
-
- 🇫🇷 **French**
|
|
45
|
-
- 🇮🇳 **Hindi**
|
|
46
|
-
- 🇨🇳 **Chinese**
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## 📚 Documentation
|
|
51
|
-
|
|
52
|
-
Detailed guides for deep-diving into engines and configurations:
|
|
53
|
-
|
|
54
|
-
- ⚙️ **[Configuration & Conversation Flow Guide](https://github.com/victorwads/dsh-live-voice/blob/main/docs/CONFIGURATION.md)** — Settings overview, speaker vs. headphone modes, sequence diagrams, silence delays, and external engine setup.
|
|
55
|
-
- 🧠 **[Choosing a Speech Recognition Engine](https://github.com/victorwads/dsh-live-voice/blob/main/docs/CHOOSING-AN-ENGINE.md)** — Comparison between Browser STT, Qwen3 ASR, and Whisper, with RAM footprints and OS compatibility.
|
|
56
|
-
- 📖 **[The Story Behind the Project](HISTORY.md)** — Why this project was built and the human story behind coordinating voice.
|
|
57
|
-
- 🆕 **[Release notes](https://github.com/victorwads/dsh-live-voice/blob/main/CHANGELOG.md)** — What changed in each version.
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## 🎯 Which Speech Engine Should I Use?
|
|
62
|
-
|
|
63
|
-
| Scenario | Recommendation | RAM | Why |
|
|
64
|
-
| --- | --- | --- | --- |
|
|
65
|
-
| 🇧🇷 **Portuguese on macOS** | **Qwen3 ASR (HTTP API)** | ~1.5 GB | Best accuracy in daily maintainer use; current RAM usage reported by the maintainer. Whisper is second choice. |
|
|
66
|
-
| 🇺🇸 **English on macOS** | **Browser SpeechRecognition** | ~0 GB | Built-in macOS/browser API. Fast, zero extra RAM. |
|
|
67
|
-
| 🪟 **Windows** | **Qwen3 ASR** or **Whisper HTTP** | ~2–3 GB | Recommended starting point; Windows browser STT varies. |
|
|
68
|
-
| 🌐 **Multilingual / Other** | **Whisper HTTP (auto)** | ~2 GB | Automatic language detection across dozens of languages. |
|
|
69
|
-
|
|
70
|
-
👉 *For model requirements and server setup, see [Choosing a Speech Engine](https://github.com/victorwads/dsh-live-voice/blob/main/docs/CHOOSING-AN-ENGINE.md).*
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## ✨ Features at a Glance
|
|
75
|
-
|
|
76
|
-
- 🎙️ **Voice Typing:** Append final recognized speech to the end of the DSH composer without replacing manual edits.
|
|
77
|
-
- 👐 **Hands-Free Conversation:** Continuous dialogue that stays active across chat sessions.
|
|
78
|
-
- ❓ **Spoken Structured Questions:** Narrates DSH prompt questions and submits your spoken answer.
|
|
79
|
-
- ⌨️ **Optional Hold-to-Talk (Push-to-Talk):** Enable it in Settings, then hold `Control` anywhere on the page to speak; release to queue the message after the configured send delay. Disabled by default.
|
|
80
|
-
- 🎧 **Acoustic Mode Isolation:** Gated listening for speakers (no echo) and open-mic interruption for headphones.
|
|
81
|
-
- 🗣️ **Spoken Commands:** Control the chat using phrases like *"send"*, *"mute"*, *"clear"*, and *"stop speaking"*.
|
|
82
|
-
- ⭐ **Dedicated Speech Bar:** Smoothly scrolling approximate captions, a moving highlight, previous/next navigation, pause/resume, stop, and a current/total segment counter. Captions show the text sent to the speech engine, without claiming word-level alignment.
|
|
83
|
-
- 🧹 **Markdown-Aware Speech:** Remove formatting, announce links without reading full URLs, shorten file paths and line references, read checkbox states and table rows, and replace long code blocks with a localized notice. Preserve custom notices.
|
|
84
|
-
- ⚡ **Responsive Conversation Settings:** Automatic-send delays of 600 ms, 800 ms, or 1–6 seconds (4 seconds by default), plus an assistant response delay of zero to 4 seconds (no delay by default). Recognition and synthesis still contribute to overall latency.
|
|
85
|
-
- 🛠️ **Optional Live Voice Debugger:** Install `dsh-live-voice-debugger` separately to inspect runtime state and queues from the Developer tab in Live Voice Settings. The main plugin works without it.
|
|
86
|
-
- 🏠 **Local-First Speech Options:** Use local engines such as Qwen or Whisper where supported. Browser recognition and configured HTTP services have their own processing requirements; do not assume every setup keeps audio on your machine.
|
|
87
|
-
- 🌐 **Remote-Ready Host Audio:** Qwen and macOS Say synthesize on the DSH host, then DSH delivers compact audio to your browser—so playback works over remote and LAN connections.
|
|
88
|
-
|
|
89
|
-
## 🧑💻 Meeting Mode — Real-Time Meeting Transcription and Live AI Q&A
|
|
90
|
-
|
|
91
|
-
Keep an editable transcript of a meeting as it happens, then ask the DSH assistant questions about the discussion without having to retell it afterward. Use it for code reviews, project discussions, or working through a spreadsheet together.
|
|
92
|
-
|
|
93
|
-
### From discussion to an answer
|
|
94
|
-
|
|
95
|
-
1. Select **Qwen HTTP** or **Whisper HTTP** recognition in Live Voice Settings.
|
|
96
|
-
2. Click the shared-audio icon beside the composer microphone and enable audio in the browser sharing dialog. Capture your microphone too when you want to include your own contributions.
|
|
97
|
-
3. Review the transcript in the composer, add a question, and send the relevant context to DSH. For example: *“What decisions have we made so far?”*, *“Help us answer this point”*, or *“Compare this proposal with the project code.”* Answers depend on the transcript you send and the code, spreadsheet, or documents you make available to the agent.
|
|
98
|
-
4. Read or listen to the answer while the meeting continues. For other participants to hear it, your meeting app must separately be configured to share the assistant’s playback audio.
|
|
99
|
-
|
|
100
|
-
### You control what is captured and sent
|
|
101
|
-
|
|
102
|
-
- Shared audio and your microphone have separate controls and can be stopped independently. Normal voice commands and assistant speech remain available.
|
|
103
|
-
- With both sources capturing, source changes introduce `Me:` or `Them:`; consecutive chunks continue on new lines. These labels distinguish audio sources, **not individual meeting participants**.
|
|
104
|
-
- An optional **Timestamp** clock toggle adds local timestamps such as `[YYYY/MM/DD HH:MM:SS]` to new source blocks, using chunk onset rather than recognition completion. It is off by default and never rewrites earlier text.
|
|
105
|
-
- **Shared meeting audio never sends itself or triggers voice commands.** Microphone transcripts keep your configured sending behavior; choose manual sending if you want to review all meeting context first.
|
|
106
|
-
|
|
107
|
-
Audio availability depends on the browser, operating system, and sharing surface. This is **not a built-in Google Meet or Teams integration**. Capturing meeting audio and sharing the assistant’s voice back into a call require separate setup. Use headphones to reduce feedback, and obtain appropriate participant consent before capturing a meeting. Transcription and AI responses have processing latency; “real-time” does not mean instantaneous or guaranteed accurate.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## 🔎 Discovery keywords / Termos de busca / 搜索关键词
|
|
15
|
+
Restart DSH, then open **DSH Settings → Live Voice** to configure recognition and speech engines.
|
|
113
16
|
|
|
114
|
-
|
|
115
|
-
- **Português:** transcrição de reuniões em tempo real, transcrição ao vivo, perguntas à IA durante reuniões, assistente de reuniões, perguntas e respostas sobre reuniões, captura de áudio compartilhado, reconhecimento de fala, síntese de voz, assistente de voz com prioridade local, plugin para DeepSeek Harness.
|
|
116
|
-
- **简体中文:** 实时会议转写、实时语音转文字、会议中向 AI 提问、AI 会议助手、会议问答、共享音频采集、语音识别、语音合成、本地优先语音助手、DeepSeek Harness 插件。
|
|
17
|
+
## Requirements and configuration
|
|
117
18
|
|
|
118
|
-
|
|
19
|
+
- Microphone capture requires browser support, permission, and a secure context (HTTPS or localhost).
|
|
20
|
+
- Recognition and synthesis engines have separate language, platform, and model requirements. See the engine guide before selecting a setup.
|
|
21
|
+
- Meeting transcription uses **Qwen HTTP** or **Whisper HTTP** recognition. Shared-audio availability depends on the browser, system, and sharing surface; obtain appropriate participant consent.
|
|
22
|
+
- Capturing meeting audio and sharing assistant playback require separate setup. This is not a native Google Meet or Teams integration.
|
|
23
|
+
- The optional `dsh-live-voice-debugger` package is not required by the main plugin.
|
|
119
24
|
|
|
120
|
-
|
|
25
|
+
## Documentation
|
|
121
26
|
|
|
122
|
-
|
|
123
|
-
- [
|
|
124
|
-
- [
|
|
27
|
+
- [Project overview](https://github.com/victorwads/dsh-live-voice#readme) — canonical presentation, screenshots, and use cases.
|
|
28
|
+
- [Configuration and conversation flow](https://github.com/victorwads/dsh-live-voice/blob/main/docs/CONFIGURATION.md)
|
|
29
|
+
- [Speech recognition engine selection](https://github.com/victorwads/dsh-live-voice/blob/main/docs/CHOOSING-AN-ENGINE.md)
|
|
30
|
+
- [Architecture](https://github.com/victorwads/dsh-live-voice/blob/main/docs/ARCHITECTURE.md)
|
|
31
|
+
- [Release notes](https://github.com/victorwads/dsh-live-voice/blob/main/CHANGELOG.md)
|
|
32
|
+
- [Issue tracker](https://github.com/victorwads/dsh-live-voice/issues)
|
|
125
33
|
|
|
126
|
-
|
|
34
|
+
## License
|
|
127
35
|
|
|
128
|
-
|
|
36
|
+
[Apache-2.0](https://github.com/victorwads/dsh-live-voice/blob/main/LICENSE)
|