CWVox Converts "Dah" and "Dit" Speech Into Morse Code with an Arduino
A verbal keyer with no machine learning or fancy FFTs!
Every project these days that involves detecting speech seems built around complicated algorithms: machine learning, pattern matching, and spectrum analysis β to name a few. However, amateur radio operator Kevin Loughin (AKA KB9RLW) created CWVox, a voiced-activated keyer that converts the spoken "dits" and "dahs" into morse code using only an Arduino Nano's ADC!
Morse code, also sometimes called just "CW," is coded symbols (or words) that consist of short and long tones. When written, the short burst is a dot, and the long burst is a dash.
A keyer is a device that creates the short and long tones most people associate with Morse code. Generally, these devices have paddles that the user actuates with their fingers. So, what happens when you cannot use your fingers and, therefore, a keyer? This roadblock is where CWVox comes in.
Radio operators that know Morse code already speak the tones with the words "Dit" (short) and "Dah" (long.) As it turns out, the length of saying these words is slightly different, and that difference is all you need for simple yet practical word detection. At least, when you only care about two words!
An Arduino Nano is CWVox's core. The Nano has a simple eight-bit microcontroller with no DSP capability. However, that board, a couple of transistors, and a few passive components are all you need to convert verbal morse code into electronic tones. On the input side, the discrete parts amplify, bias, and filter the signal for the Nano's positive-only ADC. While on the output side, a BJT buffers the signal before going into the radio's keying input.
KB9RLW provides a real-time demonstration of CWVox in action at 09:45 in the above video. And it is impressive to watch/listen to! Jump to 13:15 in the same video for a detailed explanation of the overall circuit.
You can read the full CWVox write-up here. You can also look at this GitHub Repo for the Arduino Nano code. And you should check out the code to see the elegant simplicity of this design!