In a similar vein, in 1982, I made a speech recognition program for the TI 99/4 home computer using a non-linear predictive algorithm to extract parameters from the cassette tape port.
Buoyed by earlier success with a 1-bit oversampling algorithm for recording and playback of speech, I tried parameter extraction in a univector phase space, with a single-bit quantized value. I introduced a primitive operator into Logo to extract this parameter using a sample-and-hold algorithm. The algorithm sampled the cassette input port, and held until the extracted parameter reached a "1" state, and then returned. The next level of decoding logic used a genetically-developed Hidden Markov Model with a single-level probability chain. Upon return from the sample-and-hold, the Turtle would execute the next command in sequence, starting with "Forward 100" followed by "right 90", followed by "clearscreen" and then "square." In training, I would speak the commands "forward," "right", "clearscreen," and "square." the experimental subject would then issue the next command, which would unfortunately fail due to the lack of node probabilities assigned to this state in the HMM. Through testing, I found that high probability could be assigned to "clearscreen" so I extended the HMM with a single node for clearscreen. On a hunch, I added "square" as the terminal node. I demonstrated the results to one of my professors, and every time I spoke, it would execute the command flawlessly. At the end, I said, "clearscreen," and professor nodded sagely, but with tongue in cheek. Then he said, "Now make it draw a square again." I said "square," and the turtle performed flawlessly, and earning me the grudging respect of my betters. Never underestimate the power of a Hidden Markov Model, even one with no branches. Leigh/WA5ZNU