Cool Tool Friday: Devices Talking to Each Other. Literally.

Before two devices can “talk” to each other (by “talk”, I mean in some way integrate with each other, or exchange data), they have to have some sort of protocol in common. Some examples include:

  • Networked computers talking over TCP/IP.
  • My phone talking to my PDA via infrared and/or bluetooth.
  • My PDA talking to my PC via WiFi talking to another PC via WiFi sending a signal to my stereo via RCA and playing MP3s through iTunes.
  • Tapping on a button on my PDA which makes an HTTP request through GPRS to a web server which executes an OS level command which relays a message to the device plugged into the serial port which sends a radio signal to an X10 device plugged into an electrical socket which uses the X10 protocol to turn a light on downstairs. (Yes, it really works!)

Anyway, you get the point. As long as two devices have a protocol in common, they can usually “talk” and be integrated in some way, and you can even chain devices together through multiple protocols to achieve something very unusual like a PDA “talking” to a lamp through the Internet.

I bought a digital voice recorder the other day, and I was surprised by how feature rich it was. One of the most interesting features is the ability to set an arbitrary time and date in the future for a recording to be played. Essentially, it’s an alarm clock with a custom alarm. Since my Mac has very impressive voice recognition built-in, I figured it would be kind of interesting to use the voice recorder as a kind of cron or scheduled tasks application. All I have to do is record the commands to make my Mac perform an operation, set a date and time, and leave the recorder near my Mac’s microphone.

I downloaded a bunch of iTunes speakable items scripts to make iTunes “speakable”, and recorded the following:

  1. “Wednesday, switch to iTunes.”
  2. “Wednesday, play random music.”

(“Wednesday” is the name of my computer, which is required before giving it a command.)

I had to make the recordings a couple of different times to get the timing and the clarity right, but now it works perfectly. That night, I configured the recording to play at 7:00 AM the next morning, and I woke up to a random iTunes track playing. The nice thing about the speakable items scripts I downloaded is that there’s one entitled “silence” and “shut up” so I was then able to stop the music by yelling at my computer, and then go back to sleep.

Admittedly, the end result wasn’t earth-shattering. I’m sure there are several other ways I could have woken up to a random iTunes track that would have been faster and easier to set up. But it’s not the end result that interests me. What interests me is that it was the first time I had every integrated two devices using the protocol of human speech, and it worked wonderfully. Using human speech as a protocol between devices allows us to easily eavesdrop, and even participate in the “conversation”, or intervene in ways bluetooth and infrared obviously don’t allow. Rather than dialing my cell phone with my PDA via bluetooth, maybe some day my PDA can speak instructions (my cell phone already allows for voice dialing) which means I can catch any mistakes that were made (maybe I tapped on a home number rather than cell phone number), and I could also use the exact same mechanism to dial my phone automatically myself. Or any other device capable of talking could use the same “protocol” as well. I can imagine in the future robots talking to each other in plain English so that we can be certain they aren’t conspiring behind our backs (just in time for the opening of “I, Robot”!), or at least about to perform some function that we would rather they didn’t.

Ok, well, this conversation is getting pretty off-topic, even for a Cool Tool Friday post, so I’ll end it here, and let you pick it up in the comments section. Can you think of any other cool scenarios for using the human voice as a machine protocol?