The difference between a universal prebuilt model and a custom tailored model can be a noisy WER (Word Error Rate) difference of almost 30%.
Marvin is used in that project purely because Atomic choose to use the 1 second ‘Marvin’ samples for a KW, but as said the ‘Google command set’ is a benchmark dataset that contains up to 10% bad and has an extremely high proportion of non native speakers.
Its a dataset to test the metal of the best state-of-art KWS models to give a datum that no KWS will manage 100% as we would not be able to differentiate accuracy.
You do not build keywords as keywords are just a collection of 1 second samples of the keyword being spoken and you record keywords.
If you want existing keywords then that has to encompass all regional variation, gender and age profiles and all noise profiles and microphone response and the difference in end WER to a custom model using the conditions of use is absolutely massive.
That is what I am saying as you can do what raven does but create highly noise resilient. extremely accurate lite-weight KWS that scale voice actors without extra load.
You record approx 20 - 40 KWs in a web boutique that merely asks you to emphasise a pause between words and silence strip a spoken recording into 1 second samples.
They are then augmented with pitch, tempo, volume and padding to create small variations to create a larger number of samples because the 10% validation and testing parts of the dataset expect a minimum of 100 so we need a minimum 1000 which is automated from the initial 20-40 extracted words of a recorded sentence (the different samples of noise mixed greatly varies sample and creates noise resilience).
Its also better to record twice @near & @far usually (0.3m & 3m from your mic but whatever the far sensitivity allows) the natural room reverberation and proximity effects will be recorded to create more accuracy but you can just do near as the accuracy increase is only fractional compared to the huge increases of a model based on the voices of actual use.
For tensorflow Tensorflow give examples in fact they have created a MFCC front end for microcontrollers specifically for KWS whilst Atomic just uses the casual introduction tutorial to audio spectrograms.
Its documented here and I have posted this now a plethora of times to even have it deleted.
TensorFlow Lite for Microcontrollers step by step it shows the simple procedure for taking a tflite model Get started with microcontrollers
The info and procedures have been there for 2 years but the recent introduction of the Audio “frontend” TensorFlow operations for feature generation was obviously a stumbling block so they now provide the microcontroller code.
From code to tutorials to training framework its all provided 100% by Google and its state-of-the-art and all it needs is a Web GUI to record and review KW, !KW & Silence.
Its so simple that a brain damaged MS sufferer with no Python experience can hack together extremely accurate working models that surely any Rhasspy dev can automate as example proof of concept have been forwarded by a community member above.
If you can not work it out for your self I can help and tell you how as maybe my confusion why this hasn’t been implemented and why code is just being copied rebranded whilst the likes of Google have opensource already provided.
You just have to read what they have provided like I have done and keep posting here to no avail.
The more custom a model goes from all voice to native speaking, to regional accent, to own voice are massive steps in accuracy as a model becomes more defined as the reality is they are little more than highly evolved tensor classification filters and the less cross entropy in the dataset means more clear cut classification and higher accuracy and its that simple.
sox -m noise.mp3 voice.wav mixed.flac what is so confusing about that in terms of a dev providing a solution?
All I am stressing is that the noise samples need to be volume matched to dataset samples otherwise the noise may become the foreground audio turning the dataset sample into a garbage entry.
Check volumes and adjust before mixing and this is just simple code that has been missing for some time (always mix in noise at a lower volume than the sample or the sample will be overwritten) as the Precise training methodology is broken and introduces large proportions of garbage and cross entropy.
It shouldn’t end there because we are on a local private VoiceAI we should be able to easily capture KW and command sentences to create datasets of use and a KWS that ships out models OTA that increase in accuracy by use by using the recorded samples of use automatically in a 2 stage firmware like delivery.