open-standards/.gitignore
Transaction Science 186c887f72
Some checks failed
standards workspaces build + test / jouleclaw-rs (push) Successful in 1m51s
standards workspaces build + test / aac-rs (push) Successful in 59s
standards workspaces build + test / joule-code-rs (push) Successful in 39s
standards workspaces build + test / joulecontract-rs (push) Successful in 35s
standards workspaces build + test / map-rs (push) Successful in 32s
standards workspaces build + test / mesh-rs (push) Successful in 24s
standards workspaces build + test / openpay (push) Successful in 1m48s
no-vanity-metrics / Scan committed Markdown for vanity metrics (push) Has been cancelled
standards workspaces build + test / arl-rs (push) Has been cancelled
standards workspaces build + test / eoc-rs (push) Has been cancelled
standards workspaces build + test / jcp-rs (push) Has been cancelled
standards workspaces build + test / joule-ui-rs (push) Has been cancelled
standards workspaces build + test / jouledesk-rs (push) Has been cancelled
standards workspaces build + test / joulehook-rs (push) Has been cancelled
standards workspaces build + test / proof-rs (push) Has been cancelled
standards workspaces build + test / sandbox-rs (push) Has been cancelled
standards workspaces build + test / sense-rs (push) Has been cancelled
standards workspaces build + test / smart-byte-rs (push) Has been cancelled
standards workspaces build + test / macOS energy backend (jcp-energy) (push) Has been cancelled
feat(aac-web): better voices, on the device, in 11 languages
The device's own voice is all most people get, and on many devices in
many languages it is poor or missing. A person can now download a
neural voice for their language, once, and it speaks their words on
the device, offline, with nothing sent anywhere.

- neural_voice.rs, neural_tts.js: the catalogue (aac-voice-index/1:
  runtimes, shared components, per-language packs, each file by size
  and SHA-256, read once per content-named catalogue and kept for
  offline use); downloads into the model store, one at a time, only
  with room for them, verified, and never left half-finished; a record
  of what each voice installed, so it keeps speaking from its own files
  whatever a later catalogue says (a newer version is an update to
  choose), read afresh before any change so another tab of the app
  never deletes a voice it installed; remove keeps what other voices
  need and takes the engine with the last voice.
- Speaking: taps never wait while the device has a voice for the
  language (a voice not ready in 1.2 s gives the words to the device
  voice); with none, the words wait for the downloaded voice rather
  than go unsaid. Words the person moved past (a newer utterance, Stop)
  are never said by either voice, and words no voice could say are
  reported. Sentences are split by the runtime's own splitter, so
  "1.5 mg", "1.000 Euro" and "Dr. Smith" stay whole. The chosen voice
  is loaded when the app opens and after a change of language, speed
  or voice; every call site speaks at the same speed.
- third_party/moonshine-wasm: the Moonshine WASM 0.1.5 runtime (the
  latest), vendored and pinned like MediaPipe, with its worker (one
  voice in memory at a time), revision aac2.
- Settings > Better voices: each voice rated in plain words (sounds
  natural / clear, though less natural / experimental), named in its
  radio button, with its size, licence and credits; downloads that
  outlive the panel and say when they finish; Remove asks first; focus
  stays in place; one quiet live region; plain errors. Settings > Voice
  names the better voice when one is chosen. A language without one
  says so plainly, with the recorded reason one click away.
- tools/voices: the pinned, reproducible pack builder (every source
  pinned by commit, version and SHA-256; byte-identical rebuilds; the
  pointer written last), a smoke test that synthesizes with every pack,
  and check_packs.py, which every static build runs so packs that are
  missing, stale or incomplete never ship (AAC_VOICES=none builds
  without them on purpose). Voices: en, es, fr, pt, it, ja, hi and zh
  (experimental) on Kokoro-82M; de (experimental), nl and uk on Piper.
  Nothing non-commercial or GPL. A voice that says something other than
  the word chosen is withheld: en-piper-norman turns "more" into
  seconds of babble. 32 languages record why they have no voice yet;
  ha and yo are planned.
- data/voices: the committed catalogue and LICENSES.md.
- prerender-static.sh ships the runtime and the checked packs with the
  static app.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-30 18:23:13 -04:00

48 lines
607 B
Text

# Rust build artifacts
/target/
**/target/
**/*.rs.bk
Cargo.lock.bak
# Node / web tooling
**/node_modules/
**/dist/
**/.astro/
**/build/
# IDE / editor
.idea/
.vscode/
*.iml
*.swp
*.swo
*~
# macOS
.DS_Store
**/.DS_Store
# Secrets / env
.env
.env.*
!.env.example
*.pem
*.key
!*.pub.key
# Logs / scratch
*.log
.scratch/
tmp/
# wasm-pack build output (regenerable)
arl/arl-rs/crates/arl-wasm/pkg/
arl/arl-rs/crates/arl-wasm/pkg-node/
# Python bytecode
**/__pycache__/
# Neural voice packs (built and deployed outside git; see aac voices plan)
.scratch-voices/
/voice-packs/
aac/aac-rs/data/voices-out/