Skip to content

Releases: arcosoph/nanowakeword

v3.0.1

Choose a tag to compare

@muhammadabidPro muhammadabidPro released this 28 Aug 01:02

Reduced 🤏 augmentation_rounds in E2E model training notebook because it takes a lot of time to generate data

Full Changelog: v3.0.0...v3.0.1

v3.0.0

Choose a tag to compare

@muhammadabidPro muhammadabidPro released this 19 Aug 13:33

[3.0.0] - 2026-08-19

🚀 Major Update: End-to-End (E2E) Model Training

Added

  • End-to-End (E2E) Training - train wake word models directly on raw PCM audio waveforms. The model learns its own feature extraction internally, eliminating the need for pre-computed mel-spectrogram embeddings or a separate embedding model.

    • Three E2E architectures available via model_type:
      • e2e_dnn - Lightweight DNN with a RawAudioFrontend (fastest, smallest)
      • e2e_cnn - CNN with a RawAudioFrontend and RawAudioBackbone (balanced accuracy/size)
      • e2e_quartznet - QuartzNet-style blocks with configurable e2e_quartznet_config (most expressive)
    • E2E-specific config parameters: mode: "e2e", clip_samples (fixed audio length in samples), e2e_frontend_channels, e2e_frontend_depth, e2e_quartznet_config
    • E2E data pipeline uses data_generation_manifest (augmented WAV clips) and data_manifest (WAV directories) instead of feature_generation_manifest / .npy files
    • E2E ONNX export includes a mode: "e2e" metadata tag and patches MelSpectrogram layers for ONNX-safe STFT
    • Colab notebook: notebooks/Train_Your_First_E2E_Wake_Word_Model.ipynb
    • Example config: examples/e2e_training_config.yaml
  • E2E Inference in NanoInterpreter - E2E models are auto-detected via the mode metadata tag in the ONNX file. When an E2E model is loaded, the interpreter sets preprocessor = None (no mel-spectrogram extraction needed), accumulates raw audio in an internal buffer, and runs inference directly on raw PCM clips of clip_samples length once enough audio is collected. This means E2E models require zero external dependencies - no embedding model, no mel-spectrogram model, nothing. A single .onnx file is fully self-contained.

  • Custom E2E Architectures - model_type: "custom" now works in E2E mode. Provide a custom_model_config with module_path and class_name pointing to any PyTorch nn.Module that accepts raw waveform input and returns an embedding. The custom class receives input_shape, embedding_dim, dropout_prob, activation_fn, config, and frontend_channels kwargs (with signature-based filtering).

  • E2E Cascade Support - E2E models can be used in 2-stage cascade mode just like embedding models. The gate model can be an E2E model or a lightweight embedding model; the interpreter automatically detects each model's type.

  • E2E Remote Verifier - the WebSocket server supports a new e2e pipeline mode (--pipeline e2e). The edge device sends raw PCM audio and the server runs the full E2E model directly. Also added _TAG_AUDIO = 0x03 wire protocol tag for raw audio transmission in both full and e2e pipeline modes.

  • E2E Distillation - distill_model_e2e() trains a tiny e2e_dnn student model from an E2E teacher, producing a compact _lite.onnx gate model. Configurable via distillation: block (student_layer_size, student_n_blocks, student_embedding_dim, student_dropout_prob).

Changed

  • NanoInterpreter now accepts vad_threshold and enable_noise_reduction as kwargs on load_model(), in addition to the existing constructor parameters.
  • predict_clip() auto-detects E2E models via self.preprocessor is None and routes raw audio directly to predict() without chunking for feature extraction.
  • ONNX export now writes mode metadata ("e2e" or "embedding") to the model file for reliable detection at inference time.

v2.1.4

Choose a tag to compare

@muhammadabidPro muhammadabidPro released this 25 May 15:29

Full Changelog: v2.1.3...v2.1.4

v2.1.3

Choose a tag to compare

@muhammadabidPro muhammadabidPro released this 18 May 09:12

Full Changelog: v2.1.2...v2.1.3

v2.1.2

Choose a tag to compare

@muhammadabidPro muhammadabidPro released this 15 May 10:28

Full Changelog: v2.1.1...v2.1.2

v2.1.0

Choose a tag to compare

@muhammadabidPro muhammadabidPro released this 13 May 15:40

Full Changelog: v2.0.5...v2.1.0

v2.0.5

Choose a tag to compare

@muhammadabidPro muhammadabidPro released this 08 May 14:42

Full Changelog: v2.0.4...v2.0.5

v2.0.4

Choose a tag to compare

@muhammadabidPro muhammadabidPro released this 18 Apr 00:30

Full Changelog: v2.0.3...v2.0.4

v2.0.3

Choose a tag to compare

@muhammadabidPro muhammadabidPro released this 05 Apr 08:31
Update v2.0.3 - Improve model performance

v2.0.2

Choose a tag to compare

@muhammadabidPro muhammadabidPro released this 09 Mar 18:04
64159e5

What's Changed

  • Please see full Changelog

New Contributors

Full Changelog: v2.0.1...v2.0.2