Since my last AIPA post, I have added one or two small things to the foundation that are worth mentioning.
First, I got the grammars working as promised. Verbal commands are matched to speech very accurately and I now have a broad range of phrasings for most commands. The ‘say’ command can be followed by any words, which AIPA ideally speaks back. Unfortunately, these recognitions are without rules (the user could say anything), so the accuracy is terrible. It was just a fun command, so I’m not bothered for now.
Secondly, I added confirmations. Each module can register to receive a yes/no/maybe answer (or true/false/unsure, one/two/three, first/second/third, etc), which allows the module to ask a question and act intelligently on a simple response. I originally tried to code this using function pointers and template classes for endless flexibility, but before I finished it I realised it was unnecessarily complicated. I re-wrote it to store two numbers to determine what to do with the yes/no/maybe answer. I then changed the ‘quit’ command to require a confirmation before the program terminates itself.
Finally, I tidied up the code. I made sure that I left useful comments throughout the code, that naming conventions were consistently observed, and there were no remaining ‘TODO’ comments that I’d forgotten.
I enjoy the intellectual challenge, as expected. It’s not quite as much fun when the program works, but I haven’t put any interesting modules in it yet.