I read through the W3C docs on this and I'm thinking that custom words come from custom grammar, but I tried going to this demo and in the console entered the following javascript:
recognition.grammars.addFromString('foo');
Which ran fine and recognition.grammars[0].src
returns: "data:application/xml,foo"
Note: 'foo' is not the word I'm interested in, but the word I'm interested in isn't an english word, using 'foo' for the example. When I speak my custom word normally, it thinks I'm saying something else (which makes sense). I'm using 'foo' here to protect my brand :)
So what I want is to be able to say "Hey, foo" similar to how "Ok, Google" works. But my "foo" word is not an actual word so the SpeechRecognitionResult
doesn't have my custom word.
Am I misunderstanding how to add custom words, or is this not possible today?
When I speak my custom word normally, it thinks I'm saying something else (which makes sense).
Google provides very limited implementation of speech API without support for grammars, see the question about that:
Grammar in Google speech API
Morever, even the original specification is not complete in terms of grammars and their handling.
So what I want is to be able to say "Hey, foo" similar to how "Ok, Google" works. But my "foo" word is not an actual word so the SpeechRecognitionResult doesn't have my custom word.
This task is not a speech recognition task so it couldn't be solved effectively by a speech recognition engine, it requires keyword spotting because it need to filter all the speech except your keyword.
You could try to implement this using Pocketsphinx javascript library (http://cmusphinx.sourceforge.net/2013/06/voice-enable-your-website-with-cmusphinx/). With pocketsphinx, it's easier to debug pronunciation issues there too.
See also Web Speech API - SpeechGrammar which specifically describes support for grammars.