Sessions & Messages

dsh-mobile-voice-call

SnowfallC/dsh-mobile-voice-call · ★ 1

SnowfallC

App-free mobile voice calls with existing DeepSeek Harness sessions.

License
MIT
Added
2026-08-17
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:SnowfallC/dsh-mobile-voice-call

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. DSH Mobile Voice Call
  2. How it works
  3. Screenshots
  4. Install and run
  5. Requirements
  6. Install from GitHub
  7. Install from a local checkout
  8. First-time speech recognition and TTS setup
  9. Browser requirements and limits
  10. Local speech configuration
  11. Development
  12. Uninstall
  13. Friendly link

DSH Mobile Voice Call

There is no app to download. Scan a QR code with a phone or tablet and call the DeepSeek mascot directly from the browser. You can chat with her or let her continue using DSH tools to operate the computer and organize files.

Compatibility CI

简体中文 · Installation · DSHFind

How it works

DSH is already a web application, so mobile access does not need a separate APK. The plugin connects through DSH's supported plugin composition without patching the core. Its phone page is deliberately limited to the call flow, while sessions, archive state, language, and appearance continue to come from DSH. That leaves only a thin compatibility layer to maintain as DSH evolves.

DSH, the authenticated bridge, whisper.cpp, and Hojo-TTS-Light run on the computer. A Cloudflare Quick Tunnel supplies the temporary HTTPS address, while the phone browser captures audio and plays the result. Recordings return to the computer for local transcription, and the text is sent through DSH's native session RPC. Hojo-TTS-Light turns DeepSeek's reply into WAV audio for automatic playback on the phone. Windows system speech remains available while Hojo is preparing or unavailable.

  • Lists existing idle top-level sessions instead of exposing the full text-chat interface.
  • Requests microphone access and starts the call as soon as a session is selected.
  • Supports muting, interrupting speech, hanging up, and cancelling an active turn.
  • Hides sessions archived in DSH.
  • Follows DSH's English/Chinese preference and light/dark appearance.
  • Keeps the one-time pairing token in the URL fragment, then uses an HttpOnly, SameSite=Strict cookie.

Screenshots

Install and run

Requirements

  • A working DSH Web profile.
  • The default automatic setup targets Windows x64.
  • Hojo-TTS-Light requires uv to be available on PATH; a separately managed system Python installation is not required.

Install from GitHub

Run these commands from the DSH source repository:

pnpm dsh plugin --profile web add "github:SnowfallC/dsh-mobile-voice-call"
pnpm dsh web

Install from a local checkout

git clone https://github.com/SnowfallC/dsh-mobile-voice-call.git "C:/path/to/dsh-mobile-voice-call"
cd "C:/path/to/deepseek-harness"
pnpm dsh plugin --profile web add "C:/path/to/dsh-mobile-voice-call"
pnpm dsh web

First-time speech recognition and TTS setup

Neither component requires a manual model download, but the first setup needs an internet connection:

  • Speech recognition (whisper.cpp): when DSH starts the plugin, it downloads the official Windows x64 build (about 8 MB) and the multilingual small model (about 466 MiB). Fixed sizes and SHA-256 digests are verified before either file is used. A usable call link appears after this step; later launches reuse the cache.
  • Speech synthesis (Hojo-TTS-Light 80M): warm-up starts in the background when the Voice call panel is opened. The plugin uses uv to create an isolated Python 3.12 environment, installs pinned CPU inference packages, and downloads about 348 MB of model files plus the pinned upstream inference script. QR pairing does not wait for this work. If a phone connects early, it displays a voice-engine warm-up message. A failed Hojo setup falls back to Windows system speech.
  • Cache location: assets are stored under $DSH_HOME/cache/dsh-mobile-voice-call/; when DSH_HOME is unset, the usual location is %USERPROFILE%/.dsh/cache/dsh-mobile-voice-call/. Completed downloads are reused.
  • Existing local components: set whisperExecutablePath, whisperModelPath, hojoPythonPath, or hojoModelDirectory to existing files and directories to bypass the corresponding automatic setup.

Model files and CPU packages need time and disk space on the first run; download speed depends on access to GitHub, Hugging Face, and the Python package indexes. When setup is ready, click Voice call in the lower-right corner, scan the QR code, choose a session, and speak. Revoke the link from the desktop when the call is over.

Browser requirements and limits

  • The page must use HTTPS; the Quick Tunnel provides it.
  • The browser must support microphone capture and Web Audio; browser speech synthesis is not required. Recent Android Chrome and iOS Safari are recommended.
  • Do not remain in the embedded browser supplied by a QR scanner, WeChat, QQ, or Lark. Use its top-right menu to open the page in a system browser.
  • Speech recognition runs locally through whisper.cpp on the computer and does not depend on Android SpeechRecognition. Raw recordings are not submitted to DeepSeek, but they still travel from the phone to the computer through the Cloudflare tunnel, so this is not an end-to-end encrypted path.
  • Calls are turn-based rather than true full-duplex audio. Handle tool approvals and other sensitive actions on the desktop.
  • Running sessions are disabled in the selector to avoid concurrent writes to the same turn.

Local speech configuration

The default setup targets Windows x64. With whisperExecutablePath and whisperModelPath set to auto, the plugin installs both assets automatically. You can instead provide paths to an existing whisper-cli executable and a GGML model. whisperThreads controls transcription threads and defaults to 8.

Speech synthesis now defaults to Hojo-TTS-Light 80M. A bundled synthetic reference clip gives the cloned Chinese voice a cute, lightly tsundere character. On first launch, the plugin creates an isolated Python 3.12 environment in the DSH cache and downloads roughly 348 MB of model files plus the CPU inference runtime; no system Python setup is required. Use hojoReferenceAudioPath together with an exact hojoReferenceText transcript to provide your own voice reference, tune CPU usage with hojoThreads, or point hojoModelDirectory and hojoPythonPath at an existing setup. While Hojo is still preparing, or if synthesis fails, the plugin falls back to Windows system speech. Automatically downloaded model files and official inference source are pinned by version, size, and SHA-256 digest.

The 80M engine loads on demand. DSH startup prepares only the lightweight fallback voice; opening the Voice call panel starts Hojo warm-up in the background. The model is loaded once per DSH process, so closing and reopening the panel does not repeat initialization. Before synthesis, the client removes English and Chinese parenthesized passages so action, tone, and role-play directions are not spoken; the original on-screen reply remains unchanged.

Playback splits replies at periods, question marks, and exclamation marks. The plugin reads native DSH assistant/chunk events every 250 milliseconds, submitting and playing each complete sentence without waiting for the whole turn to finish. The single Hojo model still processes later sentences through a safe queue. Hojo does not expose frame-level audio streaming, so this is sentence-level streaming. Text appears as its corresponding audio begins, and the default runtime uses eight CPU threads.

Once a call starts, the plugin prepends a voice-conversation instruction to the first spoken message only. It asks DSH to keep later replies natural, concise, and suitable for reading aloud, without adding parenthesized actions, role-play narration, or stage directions. The instruction is not injected again on every turn. Markdown cleanup happens locally before playback and does not alter the original reply stored in the session.

[!WARNING] This feature is experimental. Traffic is relayed through Cloudflare, and Quick Tunnels provide neither a stable hostname nor a service-level guarantee. Avoid sensitive work and revoke the link after use.

Development

pnpm install
pnpm check
pnpm test

See cordis.patch.yml for configuration. Report security issues according to SECURITY.md. The code is licensed under the MIT License.

Uninstall

pnpm dsh plugin --profile web remove dsh-mobile-voice-call

Restart DSH afterward. The plugin leaves no patch in the DSH core repository.