From 5554b2eb5e70773d2462b5102a9dca49afb61b92 Mon Sep 17 00:00:00 2001 From: MasterPhooey Date: Fri, 17 Jul 2026 20:38:18 -0500 Subject: [PATCH] Release NVIDIA WakeWord Trainer v13 --- README.md | 21 ++++--- VERSION | 2 +- WHATS_NEW.md | 3 +- static/index.html | 19 ++++++- tests/test_auto_train.py | 118 ++++++++++++++++++++++++++++++++++++++- trainer_server.py | 94 ++++++++++++++++++++++++++++--- 6 files changed, 235 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 6c3116e..7838b23 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ docker pull ghcr.io/tatertotterson/microwakeword:latest Tagged releases also publish matching immutable image tags: ```bash -docker pull ghcr.io/tatertotterson/microwakeword:v12 +docker pull ghcr.io/tatertotterson/microwakeword:v13 ``` The release tag must match `VERSION`. Update `WHATS_NEW.md` before tagging; the Docker workflow prepends it to GitHub's automatically generated release notes. @@ -32,7 +32,7 @@ Python 3.13 TensorFlow build for `sm_120`: ```bash docker pull ghcr.io/tatertotterson/microwakeword:blackwell -docker pull ghcr.io/tatertotterson/microwakeword:v12-blackwell +docker pull ghcr.io/tatertotterson/microwakeword:v13-blackwell ``` Use the Blackwell image only for RTX 50-series cards. It includes the @@ -53,9 +53,9 @@ docker run -d \ ghcr.io/tatertotterson/microwakeword:latest ``` -Use a version tag such as `ghcr.io/tatertotterson/microwakeword:v12` when you want to pin a known release instead of tracking `latest`. +Use a version tag such as `ghcr.io/tatertotterson/microwakeword:v13` when you want to pin a known release instead of tracking `latest`. For RTX 50-series cards, use `ghcr.io/tatertotterson/microwakeword:blackwell` -or a pinned tag such as `ghcr.io/tatertotterson/microwakeword:v12-blackwell` +or a pinned tag such as `ghcr.io/tatertotterson/microwakeword:v13-blackwell` in the same `docker run` command. The flags: @@ -167,14 +167,21 @@ Starting a new session does not clear samples. Use the clear buttons in `Samples ## Auto Training -`Auto Training` is an opt-in false-positive loop. It is disabled until you enter the exact wake phrase and enable it. +`Auto Training` is an opt-in sample-review and retraining loop. It is disabled until you enter the exact wake phrase and enable it. For each new wake-trigger clip sent to the trainer: 1. Faster Whisper transcribes the audio locally. -2. If the transcript contains the configured wake phrase, the clip stays in `Captured Audio` for manual positive review. +2. If the transcript contains the configured wake phrase, the clip stays in `Captured Audio` for manual review by default. 3. If speech was transcribed but the wake phrase is absent, the clip moves to `/data/negative_samples/` as an auto-reviewed hard negative. -4. Empty transcripts, close misses, VAD-blocked captures, and captures for another wake word stay out of the automatic negative path. +4. Empty transcripts, VAD-blocked captures, and captures for another wake word stay out of the automatic negative path. + +Two optional cleanup rules are available: + +- `Delete confirmed good wakes` removes normal wake-trigger clips after STT confirms the configured phrase. +- `Promote confirmed close misses` checks close misses that passed VAD and moves them to the personal positive samples only when STT confirms the configured phrase. + +A close miss with an empty transcript or without the configured phrase stays in `Captured Audio`; it is never turned into a negative automatically. Saving Auto Training settings also scans existing eligible captures. Enabling close-miss promotion reviews previous unreviewed close misses, while enabling cleanup removes previously confirmed good wakes without transcribing them a second time. The default `small.en` model uses CUDA with `float16` when CTranslate2 can see an NVIDIA GPU, and falls back to CPU with `int8`. Choose a multilingual Faster Whisper model such as `small` when the wake phrase is not English. Downloaded STT models are cached in `/data/auto_train_models/`. diff --git a/VERSION b/VERSION index 48082f7..b1bd38b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -12 +13 diff --git a/WHATS_NEW.md b/WHATS_NEW.md index b37f98c..f85259a 100644 --- a/WHATS_NEW.md +++ b/WHATS_NEW.md @@ -1,5 +1,6 @@ - Added opt-in Auto Training for false-positive wake triggers, using Faster Whisper with automatic CUDA/float16 selection and CPU/int8 fallback. -- Wake triggers whose transcripts do not contain the configured phrase can now become hard negatives automatically; close misses, empty transcripts, and phrase matches remain available for manual review. +- Wake triggers whose transcripts do not contain the configured phrase can now become hard negatives automatically; empty transcripts and phrase matches remain available for manual review unless optional cleanup is enabled. +- Added optional confirmed-good-wake cleanup and conservative close-miss recovery that promotes only VAD-approved, STT-confirmed phrase matches to positive samples. - Added scheduled retraining with a minimum-new-negatives threshold and automatic Tater Native satellite refresh after a successful model build. - Wake-word download links now advertise a LAN-reachable trainer URL instead of `127.0.0.1`. - Tightened detector calibration defaults to favor fewer ambient false accepts while preserving candidates within 0.5 percentage points of the best recall. diff --git a/static/index.html b/static/index.html index ddd4191..3bea4ce 100644 --- a/static/index.html +++ b/static/index.html @@ -1288,7 +1288,7 @@
False-Positive Loop

Auto Training

-

Transcribe real wake triggers, turn confirmed phrase-misses into hard negatives, retrain on your schedule, and ask Tater to refresh connected satellites.

+

Sort false wakes into negatives, recover spoken close misses as positives, clean up confirmed wakes, retrain on your schedule, and refresh connected satellites.

1 Transcribe wakes 2 Collect negatives @@ -1305,13 +1305,21 @@ 1

Review Rules

-

Only wake-trigger clips are reviewed automatically. Close misses, empty STT results, and clips containing the wake phrase remain in the inbox.

+

False-wake sorting is always conservative. Cleanup and close-miss promotion remain optional, and empty STT results stay in the inbox.

+ +