The purpose of the project is to build uncomplicated voice recognition system based on M32C/84 microcontroller. The main part consists of telephone, some amplifiers, and development board.
The project used to operational amplifiers in the analog part, the first one, provide amplification to the signal of 220mV p-p generated by signal transducer (a microphone electret) and the preamplifier, in this case a telephone handset. The second stage translate signal 2.5V over to avoid the negative part and thus adapt it to the A/D converter input. The project used LMC6084 and LMC6484 Op Amp, but it can be done with a LM324 or similar.
The program has two tasks, acquire the signal and search the equivalent word, write to the LCD controller and control output pins for some useful application. The first step through the process of recognizes a word is the A/D block. It is configured for a sample rate of 8 KHz. An interruption routine is configured using the timer A0, each 125us the function read the AN2 register; it is store until fill the command buffer. This buffer is used by the search algorithm or to be stored in virtual EEPROM (EEPROM emulation by FLASH) if the program is in training mode.
For search algorithm, the system used algorithm based on sequential searching also named linear search with some modifications. The search function compare vectors, using the Euclidean distance, that contain the frame of voice sampled with the vectors already stored in flash in the training mode and moved to RAM. This algorithm is used due to the limited list of commands or “vocabulary” that the project handle if would be necessary more commands maybe a statistical model like HMM (hidden Markov Model) would be more efficient.
Project Firmware, Schematic and Documentation