Computer users employ a number of mechanisms to provide input to their computing devices. Keyboards are common input devices, and they typically include single-digit numbers (e.g., in a cellular telephone) each of the letters in the alphabet, and some characters (e.g., in Qwerty or Dvorak keyboards). On mobile devices, keyboards are frequently “virtual” in form, and are displayed on a touch screen of a device. Such keyboards may be made available to various different applications running on a device, using a program known as an Input Method Editor, or IME, so that the IME receives the user input and then passes it to whatever application is currently active on the device. An IME can also translate user input, such as when a user enters Roman characters in a written language like Pinyin, and the IME generates Chinese characters that correspond to the typed Pinyin. Where the Pinyin corresponds to multiple possible characters, the IME can display all such characters, the user can tap the intended character, and the IME can pass that character to the operating application.
Users of computer devices, and particularly of mobile computing devices, may be constrained in their use of a keyboard. For example, the keyboard itself may be constrained in size because mobile device displays are small, so that only a sub-set of relevant characters can be displayed or the keys may be too small to press accurately. Also, the user may be constrained, in that they cannot easily type on a keyboard while walking through a crowded airport or driving a car. In such situations, spoken input may be preferred over typed input. However, speech-to-text conversion or translation typically requires lots of computer processing power, and mobile devices typically do not have much processing power. Also, such conversion often requires a particular user to “train” the system so that it better understands the user's voice and speech patterns.