Abstract
Due to the advancement of modern technologies, more and more digital devices are capable of recognizing speech for various applications, such as voice dialing on cell phones, voice commands on PDAs and voice-based telephone operators. However, the lack of floating-point arithmetic and the limited computing power of these mobile devices constrain the domain of speech-based applications. This study proposes some methods to overcome these constraints. We have also implemented a recognition system on a 32-bit processor to show the feasibility of the proposed approach. In general, the process of speech recognition could be divided into three steps, including feature extraction, acoustic model construction (training), and Viterbi search for the most-likely path (recognition). Since all of these time-consuming steps are floating-point operations, one straightforward way to reduce computation time is to use fixed-point operations instead. Moreover, we also built look-up tables to speed up the evaluation of some mathematical functions. The feature extraction is about 6.7 times faster and Viterbi decoding is about 4.1 times faster than their floating-point counterparts, while the recognition rate only drops about 3%. We have also discussed the effects of several recognition parameters on the recognition results. For example, we have tried several values of the pruning beam-width in order to achieve a balance between the recognition rate and the computation time. We have also explored the scaling factor at various stages, which affects the occurrence of overflow. For better debugging, we have designed a new C++ class that can be used to detect overflows and handle the situation correctly. We sincerely hope that these proposed methods can pave a road to a better and more convenient world of speech-based applications.