A Video of Wilson
Where to Start?
Different projects require different languages to be used. Even if you are really good with VB you still will not be able to use it much for a website! One of my most recent accomplishments was finishing up some of the final touches on a voice recognition program and so I will be focusing a lot on that on this page. So, where/how do you ever come up with the idea to just randomly create an entire voice recognition program?
The idea began when I was teaching myself Basic Stamp and working with robotics. Usually, you find me in my office by myself working on a project. For me, building things and the creative process that takes place is a very personal thing and many times I have the best moments of reasoning when I am alone. Even though I work well on teams I prefer to work by myself when it’s time to hammer out the code so that I am not distracted by the social elements which often times takes my mind away from pure thought. Honestly, I cannot pass a test based on the knowledge of the person sitting next to me and with working through a complex problem it is similar. Teams are very good for comparing notes and bouncing thoughts/ideas/code off of one another but when the assignment needs doing it is very hard if you work the keyboard while someone else works the mouse.
Who wants to work along side someone who is thinking hard while looking at the screen? Not very many. What I was needing was not a person at all but a very functional thing…a robot. So, instead of posting an ad on craigstlist for someone to stand there and wait for me to ask to run a command across the room, I thought it was time to recognize that there was room for improvement in my modus operandi (MO).
I needed to make someone or something so they could aid me in automating tasks around my office.
At first, I figured someone else would have already had the need for a command driven voice recognition program that could do what I was needing. Initially, I went on the search and attempted to simply find and buy a program where someone else had done the work. This would be the most simple route but it was not in the stars. I was able to locate some voice recognition programs such as the following:
Each of these programs are very nice but they had their limitations. These limits were discovered very quickly and after much research I realized that what I was looking for had not been put on the market yet (not saying it wasn’t already in the works somewhere or hadn’t been thought of but it just wasn’t there for the general public). So I began working to create my own customized voice recognition software solution.
During this period I was coding heavily in Visual Basic (VB) so it just seemed natural to start coding in that language. Even though VB was my favorite I was taking a C# class at the time. Many of the databasing questions I had I could not find the answers to online or even through many of my books or sources. I began asking my professor about how I could do this or that. My professor was very helpful in my journey to answer my questions and because of that I converted all of my code over to C# and completed Wilson using C#.
Every project needs a Universal Modeling Language (UML) drawn up to keep things organized, right? Well, I do understand how UML’s work but generally, I do not operate using this sort of method because I simply visualize the finished product and then start working the code to make it happen. Actually, I do not know of very many programmers who are working by themselves that draw up UML’s. Perhaps when I work with large teams I may need a UML. With Wilson I thought of it much like sketching in my artwork I do not sit down and write down small goals such as, “Okay, I’m drawing a face so let’s not forget to put eyeballs on there!” that just seems too natural.
In the beginning, I did have a check list in my head and this would have to do as my official UML. Just from thinking through what I needed to keep working on my robotics I worked up a simple list of things that I needed and then of course things I wanted. As time went on and as I figured out how to do different things with Wilson I would just
check it off the list the things as I got them working. As any programmer knows after all is said and done there is a lot more said than done! My list began small:
All things to include in Voice Recognition program (AKA: Wilson)
- Needed Items
Speech to Text
- Speak to computer and have it understand me.
- Needed Items
- Text to Speech
- Have the computer speak to me (and me understand it :). Must connect to a live database and not use text files or arrays.
Connect to external programs to run things such as my Basic Stamp code for my robotics.
Be quick in response time as well as execution time.
- Text to Speech
- Wanted Items
- Would like to have hundreds or even thousands of commands.
- Wanted Items
- Please have a different voice than Microsoft’s Anna or Sam!
Over time of course the things I wanted to do became larger and largeer and started to take over the project. The list seemed to just grow and grow. This scope creep would never work at a company if there was a deadline to hit of course but I was not constrained to adhere to a schedule so I just enjoyed the growth and went with it. Besides, if I just let the hobby end what would I do for fun? 😉
“Wilson” actually comes from my wife. When I program sometimes I forget to eat, sleep and I let my beard grow out. My wife commented about how I started to become like Tom Hanks from Cast Away. During the programming and testing phase I would be testing my speech to text code (or my code to speech for that matter) and my wife would walk in on my talking to my computer. She expressed to me that it seemed odd to have her husband in his office talking to his computer. Over time this became an inside joke and she started referring to the computer as Wilson and the name stuck.
Summary of Downloads & Extra Links