Voice Recognition Ready for Consumer Devices
This looks like the year that voice recognition finally reaches the mainstream. Motorola unveiled “Mya, the 24-hour talking Internet” at the Oscars. Tellme.com and other startups are deploying voice portals that accept speech commands and read web content over a standard telephone. The latest Jaguar allows drivers to adjust the climate and sound systems using their voice.
Most of these services run on remote servers or PCs where plenty of processing power is available. But the Jaguar example is telling: CPU performance has reached the point that even an inexpensive embedded processor can perform useful voice recognition. Over the next few years, voice will become a common interface in a variety of non-PC devices, many of which will be running Linux.
Until recently, voice recognition required each user to train the system to recognize his or her particular speech patterns. Like most other software, however, voice recognition improves given faster processors and more memory. Recent products reduce training time dramatically. Speaker-independent software eliminates training entirely. To achieve highly accurate speaker-independent recognition with moderate processing requirements, designers must limit the context and vocabulary of the application. For example, a car needs to recognize only a few dozen words, including “temperature”, “radio”, and the numbers needed to select a station.
Lernout & Hauspie (http://www.lhsl.com/), a leading supplier of voice software, supplies speech engines for applications as simple as these, as well as far more complex ones. According to Klaus Schleicher, a director of product management at L&H, the simplest speech engine provides speaker-independent recognition of up to 100 words, but requires less than 200K of memory. L&H offers a more-powerful speech engine that can recognize up to 1,000 words, again without training. This engine requires 2MB of memory and can run on a 200MHz processor. This hardware costs a bit more, but is still easily obtainable for $30 today, and that price will drop over time. The larger vocabulary is suitable for applications such as a TV set-top box that can be programmed by speaking the name of a show or a hand-held PDA that can manage calendars and address books via voice.
Composing arbitrary text, such as an e-mail message, requires a much larger vocabulary. For this purpose, L&H has a speech engine with a 20,000-word vocabulary—twice as large as the average adult's. This engine requires some training, but only about five minutes per user. Even this large vocabulary doesn't require a full-blown PC or server; the company has demonstrated it using a 200MHz StrongArm processor and 32MB of memory. This speech engine could be incorporated into a webpad, allowing users to compose e-mail and other documents without using a keyboard.
One problem is that these speech engines are still not 100% reliable. The smaller the vocabulary, the smaller the error rate—after all, there are fewer words to confuse. In addition, a “command and control” application has natural opportunities to seek clarification. For example, if the user says “Turn off the TV” in a noisy room, the system might respond “I didn't understand that; please try again” or “Do you want the TV off?” In these limited-domain applications, the software actually interprets the voice input to determine its meaning, in this case, to turn off the TV. One possible interpretation of the input phonemes might be “turnips are meaty”, but the software would quickly discard this possibility as irrelevant in the context of controlling the television. This intelligent interpretation is called natural language processing (NLP). The combination of good voice recognition and a well-programmed NLP back end can produce a reliable system.
A working example is MIT's Jupiter system, a conversation interface for weather information built by the university's Spoken Language Systems group. You can call it (1-888-573-8255, but it is often busy) and ask about the weather anywhere in the U.S. or around the world. It uses a 500MHz Pentium III PC running Linux, but it hasn't been optimized to reduce CPU overhead. Jupiter has a vocabulary of about 2,000 words and is very usable. Text dictation, however, has a much larger vocabulary and an unbounded content domain: an e-mail message could have any subject matter, even turnips. NLP for this application is much harder and generally limited to putting nouns and verbs in the right places. After dictating a few hundred words into even the best speech engine, a user is likely to have to go back and correct at least a dozen errors.
Thus, for applications where a keyboard is available and the user can type reasonably well, typing is likely to be the most efficient interface for the foreseeable future. But L&H's Schleicher says, “the human voice is the most natural user interface for communication and computing on a variety of devices.” For command and control applications in cars, information appliances, set-top boxes and even PCs, voice recognition is an excellent interface. The hardware just needs the right programming—and the sound of your voice.
Getting Started with DevOps - Including New Data on IT Performance from Puppet Labs 2015 State of DevOps Report
August 27, 2015
12:00 PM CDT
DevOps represents a profound change from the way most IT departments have traditionally worked: from siloed teams and high-anxiety releases to everyone collaborating on uneventful and more frequent releases of higher-quality code. It doesn't matter how large or small an organization is, or even whether it's historically slow moving or risk averse — there are ways to adopt DevOps sanely, and get measurable results in just weeks.
Free to Linux Journal readers.Register Now!
- Hacking a Safe with Bash
- Secure Server Deployments in Hostile Territory, Part II
- Product of the Day: JReport, Java-Based Reporting for the Linux Environment
- Build Your Own Arcade Game Player and Relive the '80s!
- Alien - Use Any Package On Any Distribution
- Django Models and Migrations
- Graphics Tools for Linux
- Network Buffers and Memory Management
- The Death of Xenix
- Programming with GNU Software