Computer, lights - low.
July 24, 2007 3:14 PM   Subscribe

Whole-room voice control of lights using open-source software. Can it be done? Has it been done?

Currently, I'm controlling multiple room lights via a relay board hooked up to a Linux server. I've got a LIRC remote setup to use a script to control the status of individual lights, as well as a microphone that responds to a clap by running the same script to toggle the status of a specific subset of lights.

What I'm looking to do next is implement something like this product, but in software. In other words, I want to be able to say, "Computer, switch desk lamp on" and have it Do The Right Thing - that is, run a script under Linux with the appropriate command line.

I am specifically looking for a solution that:
  • can run under Linux, not Windows
  • is compatible with my existing solution
  • doesn't require a microphone directly in front of the face
  • isn't too expensive - preferably free
  • is preferably open-source
Can it be done? Has it been done? Or should I go back to watching Babylon 5 and forget about it?
posted by ArbiterOne to Technology (8 answers total) 8 users marked this as a favorite
This page describes a couple different speech recognition software options for linux.

"CVoiceControl (which stands for Console Voice Control) started its life as KVoiceControl (KDE Voice Control). It is a basic speech recognition system that allows a user to execute Linux commands by using spoken commands."
posted by rancidchickn at 3:21 PM on July 24, 2007

One issue with whole room voice recognition is the quality of the incoming signal. Even with an excellent mike, there may be ambient noise, echos, etc. I don't know, but I would guess that most of the open source voice command packages that rancidchickn pointed to were probably optimized for situations where the incoming signal is well isolated because the user is either using a nearby directional mike, or a headset.

You might see about using a microphone array to get a better input.
posted by Good Brain at 4:35 PM on July 24, 2007

The input quality won't matter as much if the vocabulary is small. The inputs should only need to be differentiated from each other.
posted by rhizome at 5:24 PM on July 24, 2007

misterhouse -- It Knows Kung-Fu
posted by kc8nod at 5:44 PM on July 24, 2007

cmu's sphinx (listed on rancidchickn's link) is about the best I could recommend.

lumenvox is not free, but you can use it thru asterisk (which will allow you to do all manner of x10 / serial / other device control...)

also I would recommend ibm's viavoice. but again, not-free and not-foss.

I feel your pain. sigh.
posted by dorian at 6:00 PM on July 24, 2007

My experience with voice recognition in loud ambient conditions is that training it to recognize a series of loud whistles is optimal if you have relatively consistent pitch. On my cell phone I use a wolf whistle to dial my wife, and a Star Trek style bosun's whistle to call up a geek buddy of mine. I've tried more complicated tunes like "Rule Britannia" with somewhat less success, as I'm far from pitch perfect.
posted by BrotherCaine at 7:20 PM on July 24, 2007

Note that I'm talking about matching a sample you put in rather than speech to text. I'm not sure what's optimal in that instance.
posted by BrotherCaine at 7:21 PM on July 24, 2007

Too bad you can't use Windows -- not only did Vista ship with a pretty decent voice recognizer, but it handles multiple microphone filtering.

Linux speech recognition has sort of died. You used to be able to get ViaVoice free, but IBM took it off the market. This is one extreme path of getting your hands on it.

Some packages are here:

Apologies, this field has sort of died down quite a bit.
posted by effugas at 2:07 AM on July 25, 2007

« Older Lemon Verbena   |   Best way to travel from NYC to DC? Newer »
This thread is closed to new comments.