I think you're being a little harsh.
1. Train it using the training dataset but change all word labels that aren't in your 10 word list to "OTHER_WORD" or whatever. There's probably not much point doing this. Alternatively I guess you can restrict the beam search to only look for your 10 words. Yes this is really complicated - it's a speech recognition engine - they are really complicated!
2. The API docs look pretty clear to me:
> createStream()[source]
> Create a new streaming inference state. The streaming state returned by this function can then be passed to feedAudioContent() and finishStream().
> feedAudioContent(args, kwargs)[source]
> Feed audio samples to an ongoing streaming inference.
> intermediateDecode(args, kwargs)[source]
> Compute the intermediate decoding of an ongoing streaming inference. This is an expensive process as the decoder implementation isn’t currently capable of streaming, so it always starts from the beginning of the audio.
Huh well that's a flaw the neglected to mention! I guess you can't really do what you want yet.