You might now be asking: If speech isn't perfect, how can I use it for my application? After all, speech is replacing the keyboard and mouse, and the keyboard never makes a mistake.
Don't worry.
Speech recognition will not replace the keyboard and the mouse, nor will text-to-speech eliminate text. Speech recognition and text-to-speech are just two more user interface "devices" available to an application developer. Speech recognition can be added to an already long list of user-interface "devices" such as the keyboard, mouse, joystick, and pen. Likewise, text-to-speech can be added to text, graphics, animated videos, and sound. Very few applications will use speech as their sole means of communication with users. Most will mix and match according to the strengths of each device.
If you think about it, applications already use several user-interface devices to communicate with users. A game makes use of both a joystick and keyboard. Users manipulate the joystick to "tell" the computer which direction they want their character to move. The keyboard is used to type in commands, such as "Say 'Hello.'" The joystick is a better input device for movement, while the keyboard is better for entering text. The game's choice of output "devices" works the same way. The application uses a combination of pictures, text, and sound to communicate with users. When an enemy aircraft blows up, a game doesn't draw "Boom!" in large letters. Instead, the game plays a recording of an explosion.
Speech is just another "device." As such, it has its place among other widely used devices.