Initial report by Zach Eveland, April 24, 2006

The HM2007 is a single-chip voice-recognition system previously manufactured by Hualon. It requires an external array of SRAM, but otherwise provides all necessary components for a voice-recognition system including the analog front-end, voice analysis, recognition processing, and system control. The HM2007 can recognize either 40 0.9-second long words or 20 1.92-second long words or phrases. The recognition technology is of the speaker-dependent discrete type meaning that it can only recognize words spoken in isolation and the speaker must "train" the system with each word to be recognized.

The HM2007 is available in a 48-pin PDIP or 52-pin PLCC package. This report only addresses the PDIP package.

Datasheet and FAQ

Other Information

  • "Talking Toaster" - a project using the HM2007 - contains some notes about the HM2007 itself
  • "Ta(l)king Control" - An article about the HM2007 by Jeff Bachiochi in Computer Applications Journal from 1994


  • Images SI Inc. - in Staten Island but does not do pickup orders. (HM2007 for $10, 64K SRAM for $8, 3.58 MHz crystal for $2.50)


  • Toys
  • Home automation

Electrical Characteristics

  • Supply voltage (Vdd): 5.0 VDC typical (4.0 V min., 5.5 V max.)
  • Operating current (Idd): 6 mA typical (15 mA max.)

Communication between the HM2007 and a host microcontroller is through one unidirectional three-pin bus (the S-bus) and one bidirectional four-pin bus (the K-bus). Signal levels for these lines are 0-Vdd.

The HM2007 is not exactly easy to use with a microcontroller. Communication follows the protocol given below and in the datasheet but is generally of the form:

  1. Microcontroller indicates on the S-bus that it is ready to receive the HM2007's status
  2. HM2007 indicates its status on the K-bus
  3. Microcontroller switches its pins connected to the HM2007's K-bus to inputs and reads status from the K-bus
  4. Microcontroller switches its pins connected to the HM2007's K-bus to outputs and writes a command to the K-bus
  5. Microcontroller indicates on the S-bus that the HM2007 should read the K-bus for a command
  6. HM2007 reads the K-bus for the command
  7. HM2007 responds to the command and places the results on the K-bus
  8. Microcontroller reads the K-bus to determine the result of the command
  9. ad nauseum

Pin Descriptions

Pin NamePin Number(s)Description
S1-S34-6The S-bus read/write control pins - connected to the host microcontroller
K1-K48-11The K-bus bi-directional data bus - connected to the host microcontroller
SA0-SA1217-24, 27-31Memory address bus
D0-D736-43Memory data bus
MR/MW35Memory read / memory write control line
ME34Memory-enable pin
X1 and X22,3Connections for a 3.58 MHz crystal or oscillator
TEST12Never used - pull low for proper operation
LINE45Never used - leave floating
MICin46Microphone input pin - should be connected through a coupling capacitor and a resistor
WLEN13Word-length select pin. Pull high to use 1.92-second words, pull low to use 0.9-second words
CPUM14CPU/manual-mode select pin. Pull low for manual mode, pull high for CPU mode. Pulled high to select CPU mode in this report
Vref44ADC voltage reference pin - connect to Vdd through a 20k-30kohm resistor
Vdd25,47Positive voltage supply - connect 5.0V
Agnd48Analog ground
GND1,26Digital ground
RDY7Ready indicator - can sink current for an LED to indicate when it's time to speak
TEST12Never used - pull low for normal operation
WAIT15Waiting control input - pull high for normal operation
DEN16Data-enable signal - can be used to latch the response on D0-D7 to an external device if desired (not used in this report)
NC32,33No connection

Microcontroller Connections

Sample Code

Typical Behavior

Application Notes