Voice Recognition with C#

So been playing for the last 6 months on and off with Voice Recognition with C# for a personal home automation project I have named Jasmine.

The solution works well, however I have had to go through quite a few API’s to get find the best approach.  I initially tried to use Microsoft Speech Recognition to achieve what I wanted, however I found that even with limited dictionary word lists the solution would miss recognise speech I said (or worse the dawn chorus – I had found out that my home office lights had activated due to the birds singing outside).

I also tried a server based approach, with audio being analysed on a server like how Apple Siri works, and Cortana.  This proved to be problematic from a perspective that I could not find a cost-effective way to be monitoring for audio constantly, and there is no API available for free.

I have lately ended up using Nuance Dragon Naturally Speaking 13 Professional, which came with a hefty price tag.  However the results have been very good.  Their API is not very well documented, unless you specifically buy their SDK, however the ActiveX controls come bundled in the Professional edition of the software.

I can now control the following through voice commands:

  • Main Lights – the lights in my home office
  • Security Lights – the lights outside my home office in the garden
  • Individual Sockets – individual sockets in the house

To control the electronics within my home automation project, I am also using 2 WiFi connected sockets, and 3 x Brainchild boards (1 x Digital Input / Digital Output board, 1 x Thermocouple board, 1 x Digital Input Board) connected over a Serial to Ethernet controller using ModBus commands.

The next stage is to wire up my house with a network of microphones, so that I can broadcast commands to my home automation server, and control the house.

I have already developed an iPhone application in Xamarin which has linked my network of controls with my phone, and provides full control from Voice or Phone.