Skip to content

Doppelvoice v0.2.0 — multi-language + Windows binary

Choose a tag to compare

@Tianqi-Bu Tianqi-Bu released this 26 Apr 05:11

First binary release — no Python install needed, just unzip and run.

Download

Doppelvoice-v0.2.0-win64.zip (61 MB)

```
SHA256: 4F5634587E150342F1FCDC0EE0F844D79C37C1D41C974EA7C5B15AA67EE85A28
```

Quick start

  1. Install VB-Audio Virtual Cable and reboot
  2. Get Doubao credentials from Volcengine Console
  3. Unzip → copy `.env.example` to `.env` → fill in `DOUBAO_APP_KEY` / `DOUBAO_ACCESS_KEY`
  4. Double-click `Doppelvoice.exe`
  5. In your meeting app, set the microphone to `CABLE Output (VB-Audio Virtual Cable)`

See `README.txt` inside the zip for the full walkthrough.

What's new in v0.2.0

A 24-file overhaul driven by 4 parallel code review agents (architecture / Python / security / performance). Tests grew 3 → 46.

Highlights

  • 9 languages per Doubao spec: `zh / en / ja / id / es / pt / de / fr / zhen` (last is bilingual ZH⇄EN auto)
  • Voice clone tuning: explicit `denoise=false` in TranslateRequest retains breath / resonance details
  • Audio device dedup: one entry per physical device (MME 31-char name truncation handled)
  • Subtitle memory cap (MAX_BLOCKS=2000) for long sessions
  • Atomic .env write (tempfile + os.replace) — credentials safe on crash
  • Log redaction patcher — API keys / Bearer tokens auto-scrubbed
  • WebSocket URL allowlist + 4 MB frame guard
  • AppConfig snapshot isolation — running session unaffected by mid-run settings changes
  • First Windows binary via PyInstaller — no Python install required

Performance

  • Mic level meter merged into capture stream (dropped second InputStream)
  • TranslateRequest template cached (saves ~12 protobuf alloc/sec)
  • silence_rms_threshold 0.010 → 0.0 (was clipping first-syllable consonants, +300-500 ms first-word latency)
  • _receiver_loop split into 4 handler functions + _ReceiverContext

Known limits

  • Use headphones, not external speakers. With speakers, the meeting audio gets re-captured by your mic and re-translated back to the peer (acoustic feedback loop). Every video conferencing tool hits this — they ship built-in AEC; we don't yet.
  • End-to-end latency floor ≈ 2.5 s per the Seed LiveInterpret 2.0 paper.
  • Public AST API is below the Volcengine Console demo (separate BFF endpoint with extra prosody).

Full changelog: CHANGELOG.md