In TidBITS-544, I wrote about continuous speech recognition on the Mac using IBM’s ViaVoice, which enables you to dictate sentences and have the computer type them. ViaVoice also does some discrete speech recognition, meaning you can say certain predefined commands to it, such as to select the next word, paste text, or turn off the microphone. But if you only want to give your computer spoken commands, you probably can, right now, for free – with Apple’s own system-level discrete speech recognition feature, PlainTalk.
What Day Is It? PlainTalk’s first rumblings were felt in 1990, when speech recognition labs complained of a sudden "brain drain." Apple, sparing no expense, was hiring every researcher it could find. After about a year of intensive work, Apple began demonstrating the fruits of its labors, code-named Casper, which became publicly available as PlainTalk in the AV Macs of 1993; it was then made standard in 1994 as part of System 7.1.2, with the emergence of the PowerPC-based Macs. Since then, all PowerPC Macs, and even some 68K machines, have been awaiting your spoken orders. Yet, many users are unaware of this, because speech recognition isn’t present by default – you must specify it explicitly when you do a system installation. To install it, insert your Mac OS CD-ROM, launch Mac OS Install, and when you get to the Install Software screen, click the Customize button, select English Speech Recognition, and deselect everything else before continuing with the installation process.
Open Speech Help — PlainTalk speech recognition appears as four software components. The Speech control panel must be present. The Speech Recognition extension enables any program to do speech recognition; but of itself it does nothing, so Apple also provides an interface, the Speakable Items extension that lets you open any item in your Speakable Items folder (which is in your Apple Menu Items folder) by saying the item’s name.
There is also a hardware component – the microphone. Apple designed a special microphone for speech recognition, called the PlainTalk microphone, recognizable by its longer jack and unusual shape. This almost killed speech recognition on the Mac, because people didn’t know how to use the microphone (and Apple, as usual, provided no instructions), so they thought it was broken. You do not speak into the "face" of the microphone; you lay the microphone on top of your monitor with the "face" upwards, and speak into the "top" of the microphone, which faces you. Some recent machines with built-in microphones don’t need this external one; but iMacs do require it despite the built-in microphone, and the situation is confusing for other machines as well – if in doubt, perform an Apple Tech Info Library search on "plaintalk and microphone" and pray for clarification. Snazzy noise-cancelling speech recognition headsets work too.
With speech recognition installed, go into the Speech control panel and set up Listening options: do you want to have to hold down a key, such as Escape, all during each command, or do you want to leave recognition on constantly, perhaps prefixing your commands by some introductory expression (such as "Computer" or "Yo!")? Next, turn on Speakable Items. A "helper" floating window appears, showing that Speakable Items is running, and you can give commands; "show me what to say" is a good first command. Depending on your choice of animated icon, you’ll see various images suggesting that speech recognition is sleeping, listening, obeying, or confused.
Make This Speakable — PlainTalk doesn’t need training for your voice, but before you can say anything the system must have a complete list of everything you are allowed to say; recognition consists of finding the best match from that list. In the Speakable Items interface, the list is precisely the contents of the Speakable Items folder. Unfortunately, as the list grows, PlainTalk becomes less confident and more likely to execute a mismatch or report no match at all. You should remove from the Speakable Items folder every command you’re not likely to use; and you should take advantage of an important feature, new in Mac OS 9, that lets you associate a command with a specific application, by putting it in a folder with that application’s name inside the Application Speakable Items folder.
What sort of thing can a command be? Basically, it’s anything you can open from the Finder. If the command is an alias, it opens a file or a folder, or starts up an application. If the command is a stand-alone AppleScript, it runs the script. Many such scripts are included (don’t forget to look in the cleverly concealed More Speakable Items folder), and you can of course write your own, so you can do whatever AppleScript can do. A particularly cool feature in Mac OS 9 is that speech recognition is itself scriptable, so you can write an AppleScript script that provides its own list of things the user can say, responding to each in some custom manner; to learn more, download the Scripting Speech help module.
Speak in Macro — AppleScript, however, has its limits: it can drive only programs that are scriptable. If this falls short of your needs, consider version 5 of QuicKeys, which appeared a few months ago. I’ve discussed QuicKeys extensively in TidBITS, and version 5’s support for speech recognition is significant. QuicKeys, as you know, is a macro program, meaning that it can type, push buttons, choose menu items, and click the mouse; now, through speech recognition, a QuicKeys action can be triggered by your voice.
QuicKeys’ speech interface is simple but clever. The command phrase that triggers an action is up to you: it can be the action’s name, but it needn’t be. Moreover, although QuicKeys is independent of Speakable Items (because they provide two different interfaces to Speech Recognition), the two can coexist, and can be turned on and off individually; the "helper" floating window is present if either is on. As with Speakable Items, you can specify an introductory expression as a prefix to command phrases; you can thus channel your command to the correct listener. For example, in the Speech Control panel, I specified that Escape must be held down during a command, with no prefix; but in QuicKeys I specified that commands must be prefixed by "QuicKeys". Now "What time is it?" works, and "QuicKeys press Home" works too.
Turn Speakable Items Off — Another discrete speech-recognition offering is MacSpeech’s ListenDo, a Speakable Items replacement. The two are not compatible, but that’s okay, because ListenDo is better; indeed, it’s what Apple should have done in the first place. Speakable Items is clumsy to operate and maintain: you toggle it off and on in a control panel, view commands as items in the Finder, and edit scripts in some third place (such as Apple’s Script Editor). But ListenDo provides a single centralized interface: it’s an application, so recognition is on when it’s running and off when it’s not, and its windows let you view and organize commands and edit their scripts. Also, every item in Speakable Items is an application, so each time you perform a command, you add it to your Recent Applications list under the Apple menu, which is maddening; with ListenDo, that doesn’t happen.
Furthermore, like QuicKeys, ListenDo is a macro program, with native commands for typing, pushing buttons, choosing menu items, and clicking the mouse. But ListenDo improves upon QuicKeys in two important ways. First, it’s free. Second, it provides a completely dynamic interface to choosing from menus: you say a menu’s name, that menu pops down and holds, you say an item in that menu, and the menu item is chosen. Where both AppleScript and ListenDo’s native macro abilities fall short, you can supplement them with another scriptable macro program; for example, when I say "Close all but the front window," ListenDo tells OneClick to perform this action.
Tell Me a Joke — With all this rich choice of options for ordering my computer about, which do I personally use on a daily basis? ListenDo is my favorite, but the real answer is none, because I find PlainTalk speech recognition technology to be flaky and undependable. It’s a toss-up whether a command will be understood at all; even worse, PlainTalk has an unaccountable habit of going deaf. This happens on both my computers, so I tend to feel that the problem lies at system level, not in some extension conflict or machine-specific shortcoming (though I’d be happy to be proven wrong). And because the problem is systemic, it doesn’t matter which interface I use, because they all rely on Speech Recognition, which is what isn’t working. The only solution is to reinitialize PlainTalk by toggling Speakable Items, QuicKeys speech, or ListenDo off and on; and that’s too much trouble
However, if you’re among the many people longing for speech recognition on the Mac, and you haven’t yet tried Apple’s own speech recognition technology, don’t turn a deaf ear to the easy availability of PlainTalk and the improvements on it offered by QuicKeys 5 and ListenDo.