1

If you have ever seen Iron Man or Iron Man 2, you know he has an assistant that can do plenty of things.

This is more of an opinion question(s) than anything.

Would Java be the best language for this, I was thinking that because it's an object oriented language, or should it be something else?

Should I code the speech recognition or should I use a service like Google's Api?

What should I use for home automation?

Should I use face recognition or RFID cards?

Quinton M.
  • 154
  • 1
  • 8
  • 4
    u are at the right place at the wrong time – Raghavan Jan 29 '13 at 01:04
  • 7
    Just so I have this straight, you want to implement an intelligent, autonomous, free-thinking computer personality that can interpret and respond in common and colloquial speech, write its own computer programs, and comment on your personal relationships? You don't have much or any experience in computer programming, and you want to implement this with Java "because it's object oriented"? Welcome to Stack Overflow. Please narrow your question to a specific problem. – paddy Jan 29 '13 at 01:04
  • You might want to look at hacking a Microsoft Kinect. This might help: http://hacknmod.com/hack/voice-controlled-home-automation/ – user829323 Jan 29 '13 at 01:04
  • *"..he has an assistant that can do plenty of things"* You **do** realize that the Iron Man movies are science ***fiction,*** right? – Andrew Thompson Jan 29 '13 at 01:06

1 Answers1

0

I agree that such a system would call for an object oriented language. Keep in mind, however, that just picking an OO language doesn't automatically grant you anything. You'll need to have a pretty well-thought design before even starting implementing, or at least be prepared to make numerous radical revisions of the whole structure as you go (if not both).

Apart from that, I'd pick C# .NET, on one hand because I find it much more expressive (due to its somewhat richer syntax), on the other hand because it has interesting libraries. First and foremost, speech-to-text and text-to-speech are built-in and very easy to use right off the bat. Also, networking is as little pain as networking can get in most modern languages, which can prove useful if you're going to need any communication with your LAN, let's say. The library also gives you easy access to things like a file system observer, system diagnostics etc, if you want to get creative about how the program automates various things on your computer. Also, available for C# is the Touchless SDK, a surprisingly intuitive library for tracking objects through the webcam, which I can easily imagine being useful for your endeavor.

Whatever language you choose, I'd really recommend against reimplementing things for which APIs already exist. Figuring and coding the logic of the core of this program would be a pretty daunting task in itself, so there's really no point in attempting to make half-baked implementations of its (also very complex) parts - and it would probably be frustrating anyway.

Theodoros Chatzigiannakis
  • 28,773
  • 8
  • 68
  • 104
  • 1
    -1: be a fanboy if you like, but it doesn't constitute objective programming advice. Most of the interesting machine learning stuff nowadays seems to be happening in Python or Java (and with Matlab of course for some specialised academic usage) – mikera Jan 29 '13 at 01:31
  • (chuckle) Good edit. ;) – Andrew Thompson Jan 29 '13 at 01:39