File size: 4,569 Bytes
cfc6103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
---
  license: apache-2.0
  tags:
    - voice
    - wake-word
    - tts
    - piper
    - openwakeword
    - signed
  ---

  # WCPDR-AI / voice-models

  Signed voice-model artifacts for the wcpdr-agent Windows desktop assistant. The agent fetches models from this repo at first run via `huggingface_hub`; every artifact is verified against the Ed25519
  signature below before it touches the runtime.

  ## Asset layout

  ```
  voice-models/
  β”œβ”€β”€ README.md                   # this file
  β”œβ”€β”€ manifest.json               # canonical asset list (signed)
  β”œβ”€β”€ manifest.json.sig           # Ed25519 signature over manifest.json
  β”œβ”€β”€ wake/
  β”‚   β”œβ”€β”€ hey_jarvis_v1.onnx      # mirrored from openWakeWord v0.5.1 stock model
  β”‚   β”œβ”€β”€ hey_jarvis_v1.onnx.sig
  β”‚   β”œβ”€β”€ hey_alex_v1.onnx        # custom-trained variants land here
  β”‚   β”œβ”€β”€ hey_alex_v1.onnx.sig
  β”‚   └── ...
  └── piper/
      β”œβ”€β”€ en_US-amy-medium.onnx
      β”œβ”€β”€ en_US-amy-medium.onnx.sig
      β”œβ”€β”€ en_US-amy-medium.onnx.json   # Piper voice metadata
      β”œβ”€β”€ es_MX-claude-high.onnx
      β”œβ”€β”€ es_MX-claude-high.onnx.sig
      └── es_MX-claude-high.onnx.json
  ```

  ## Signing key

  All artifacts in this repo are signed with a single Ed25519 key dedicated to voice models. The key is **separate from the MSI installer-update signing key** so the two rotation calendars don't have to
  coordinate, and a leak of one has narrower blast radius.

  **Public key fingerprint** (SHA-256 of `VOICE_MODEL_PUBLIC_KEY_B64`, hex):

  ```
  716f3bfefd5b887e735adc198231d8c58b4917257f401eee3ce930b79cc4feb1
  ```

  The matching public key value (base64-encoded raw 32 bytes):

  ```
  KO8A6pii2YrmgFcTtGMX0cltdWjyfgo+vdB/VJTvyMk=
  ```

  The wcpdr-agent build pipeline stamps this same value into the agent's signing module at compile time. Operators can verify their installed agent's bundled key matches by checking the agent's
  `--print-voice-pubkey` output (when available); the printed value should hash to the fingerprint above. If it doesn't, the agent is from a different rotation cycle than the artifacts in this repo and won't
  trust them β€” either re-sign artifacts with the agent's expected key (operators) or upgrade the agent (users).

  ## Verification chain

  Top-down chain of trust for any artifact in this repo:

  1. Agent is built with `VOICE_MODEL_PUBLIC_KEY_B64` baked into its signing module.
  2. Agent fetches `manifest.json` + `manifest.json.sig` from this repo.
  3. Agent verifies `manifest.json.sig` against the bundled public key β€” failure = refuse all artifacts in this manifest.
  4. Agent reads asset entries from `manifest.json` (each entry has `repo_path`, `sha256`, `signature_filename`).
  5. For each artifact the agent needs, it fetches the artifact + its `.sig` companion file.
  6. Agent verifies SHA-256 against the manifest entry, then verifies the per-artifact Ed25519 signature.
  7. Verified artifact gets atomically renamed into the agent's local cache and loaded into the runtime (Whisper / openWakeWord / Piper).

  A failure at any step surfaces as `voice_error{code: model_signature_invalid}` IPC to the tray; voice mode stays off; no silent "load anyway" fallback.

  ## License

  This repo's contents are individually licensed:

  - `wake/hey_jarvis_v1.onnx` β€” bit-identical mirror of openWakeWord v0.5.1's `hey_jarvis_v0.1.onnx` (Apache-2.0).
  - `piper/en_US-amy-medium.onnx` and `piper/es_MX-claude-high.onnx` β€” upstream Piper TTS voices (MIT). Voice attribution lives in each `.json` metadata companion.
  - Custom-trained wake-word variants (e.g. `hey_alex_v1.onnx`) β€” Apache-2.0 (matches openWakeWord training pipeline output).
  - This README and `manifest.json` β€” Apache-2.0.

  Re-distributable under the terms of each artifact's individual license.

  ## Reporting a compromised key

  If you have evidence the signing key has leaked, contact the wcpdr-agent maintainers directly. Do **not** include the leaked key value in any message β€” describe the suspected leak vector (where you saw it,
  when, who has access) and we'll initiate the rotation procedure.

  The wcpdr-agent source repository is private; if you don't have access, route the report through your wcpdr point of contact. Once a leak is confirmed, the maintainers rotate per the agent's internal
  voice-models runbook and re-sign every artifact in this repo within 24 hours. A new agent release tag (with the new public key baked in) follows on the same day.