Syntiant TinyML board

Hi,

I recently bought a Syntiant TinyML board and started exploring the edge impulse ecosystem.
Unfortunately, I couldn’t find any documentation on the posterior parameters in the deployment section.
Can anyone give me some more information on the parameters?

{
    "states": [
        {
            "timeout": 0,
            "classes": [
                {
                    "label": "go",
                    "phwin": 5,
                    "phth": 0.95,
                    "phbackoff": 20,
                    "phaction": 0,
                    "phaction_arg": 0,
                    "smoothing_queue_size": 1
                }
            ]
        }
    ],
    "quantization_arguments": [
        null,
        [
            "uniform",
            4,
            "min"
        ],
        null,
        [
            "uniform",
            4,
            "min"
        ],
        null,
        [
            "uniform",
            4,
            "min"
        ],
        null,
        [
            "uniform",
            4,
            "max"
        ],
        null
    ],
    "audio_pdm_gain": 12
}

I am especially interested in the phwin, phth, parameters etc. As well as the quantization_arguments and audio_pdm_gain.

Cheers,

Matt

Hi Matthais,

So these refer to the Syntiant maintained parameters that, at a high level, determine how sensitive the continuous monitoring engine will be when determining if a class is active.

There’s a tradeoff between false negatives and false positives when monitoring a continuous stream of audio, so the Syntiant platform lets this be calibrated independently from the model itself.

Specifically, the params define the threshold (phthresh), which needs to be matched for a give number of windows (phwin) to consider the result valid. These thresholds can optionally be smoothed via a moving average filter (smoothing_queue_size).

The backoff and action params are a bit more opaque but basically are enums defining how the system behaves after an initial activation. For instance, you can define more states that alter the sensitivity after a first word is detected, or wait some number of windows before activating again.

phaction value definitions:
0: Report an activation, phaction_arg is the class to report
1: Change state, phaction_arg is the index of the new state
2: Stay in current state

The PDM gain is pretty straightforward through all this, just the digital gain applied to the microphone input. This, for instance, may change how sensitive the mic is to speakers who are further away.

The quantization arguments define how the network is quantized to 8-bit weights, as Syntiant supports different quantization schemes on device.

I don’t have all the exact quantization options available, but when you run the posterior calibration process, this runs Syntiant’s procedures to search through all the quantization options, as well as for optimal smoothing, window, and threshold settings for each class.

The automatic search is generally going to be way to go over manually tweaking these, but hopefully this helps provide some context.

Best,
David

1 Like