Skip to content

Question about End-to-End (waveform → score) export and Android feature matching #12

Description

@alipas777-afk

Hi 👋
First of all, thank you for NanoWakeWord — it’s a very well-designed project.
The data generation, augmentation, and training pipeline work great and I’m getting very good accuracy in Python.

I’m currently trying to deploy a trained NanoWakeWord model on Android (ONNX Runtime, low-power SoC) and I’d like to clarify the intended deployment path.

My current understanding

From reading the code and issues, it seems that:

The exported wakeword.onnx does NOT accept raw waveform

The model expects precomputed features with shape similar to (1, 8, 96)

The actual wake-word system relies on:

streaming ring buffers

MelSpectrogram ONNX

embedding ONNX

temporal feature stacking

reset / state / patience logic

So NanoWakeWord is effectively:

PCM → streaming features → embedding → stacked features → wakeword model

and not an end-to-end waveform → score model.

The problem

On Android, if I directly feed:

raw PCM

or even a fixed 1.38s waveform window

into wakeword.onnx, I get:

constant zeros

or false positives

or input shape errors

Which makes sense if feature matching is required.

Questions

Is it intentionally not supported to export an end-to-end ONNX model (waveform → score)?

Is the recommended approach to:

re-implement the feature pipeline (AudioFeatures, streaming melspec, embedding, stacking) on the target platform?

Is there any official or planned:

E2E export

reference Android / Kotlin implementation

or feature-exact spec for third-party ports?

Context / Motivation

I fully understand why feature logic may not be embedded into ONNX (state, control flow, buffers).

I’m not asking for magic auto-export — just clarity on:

what is guaranteed to match training

what is expected from downstream deployments

NanoWakeWord’s data generation and training quality is excellent, and I want to keep using it rather than switching to a simpler but less accurate wake-word stack.

Thanks again for the great work,
and I’d really appreciate any guidance on the intended production deployment path 🙏

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions