Morse ICR Trainer
Instant Character Recognition training for Morse Code
Morse ICR Trainer is a Flutter-based Morse code training app for iOS and Android, built around a "beat the computer" mechanic: the app plays a Morse code character, then gives you a short window to answer it — by speaking or simply recognizing it — before the app's own computer voice announces the character out loud for you. Answering correctly before the computer is "beating the computer," the app's core training loop.
It's free! Download the iOS (iPad/iPhone) version here! The Android version is in beta test, and coming soon.
Features
- Adjustable Character Speed, Recognition Time, and Extra Gap to tune session difficulty
- Pause and Resume a running session without losing your place
- Background operation
- Sub-millisecond Recognition Time accuracy
- Character Set selection (A-Z, 0-9, punctuation), or a custom Focus practice list
- Focus keyboard to quickly tag your difficult characters
- On-device Speech Recognition that credits you for speaking the right answer in time (Experimental. Apple iOS only)
- Per-character heat-map accuracy coloring with "X% Correct" summary (Apple iOS only with speech recognition enabled)
- Three-memory countdown Timers that auto-stop your session
- Count-up session duration timer (auto-captured in log)
- Persistent automatic Training Log with editable per-session notes, cumulative training time, and CSV export
- Configurable punctuation speaking ("." as Period/Dot, "/" as Slash/Stroke), Morse tone pitch/volume, and voice volume
- All settings persist across app restarts
- In-app Help page with a jump-to-section table of contents
Getting Started
Morse ICR Trainer plays a Morse code character, then gives you a short window to answer — by speaking it — before the computer's voice announces the character out loud. Answering correctly before the computer does is "beating the computer," this app's core training mechanic.
Tap Start on the main screen to begin a session. Tap Stop, or let an active Timer memory count down to zero, to end a session.
Once a session is running, a Pause button appears next to Stop. Pause holds the session exactly where it is — character set, Timer countdown, and elapsed time all stay put — until you tap Resume to continue, or Stop to end the session from there.
Character Speed, Recognition Time & Extra Gap
- Character Speed (WPM): how fast each Morse character is played, in words per minute.
- Recognition Time: how long you have to answer before the computer announces the character for you. Shorter times make training harder.
- Extra Gap: extra silence inserted before the next morse character starts.
All three can be changed mid-session and take effect starting with the next character, never interrupting one already playing.
Character Set & Focus
The Character Set chips (A-Z, 0-9, Punct) choose which characters are trained. Multiple chips can be selected at once.
The Focus button opens a full keyboard of every common Morse character. Tap characters on or off to build a custom practice list, then tap Done. The Focus characters can be changed before each session. Pressing Clear, then Done resets the focus selection to no characters.
Apple iOS Only: On the Focus keyboard, each character is colored by your session performance with it: red means it's mostly been missed, green means mostly correct, with everything in between scaled against your best-performing character. A character with no color at all has never come up in a session yet. Additional sessions continue to add to the character tally. The Focusizer slider automatically selects your lowest scoring elements, from worst to best as you slide to the right.
Timer
The Timer row stores three duration memories and lets you select one as the active countdown for your next session. When the active timer reaches zero, the session stops automatically, the same as tapping Stop yourself.
Tap the Timer row (only available when not training) to edit any memory's duration or change which one, if any, is selected. Selecting none turns the timer off.
Training Log
The clock-with-arrow icon at the top left opens the Training Log: every completed session, with its date, time, duration, and the character set or Focus list that was active.
Each entry can be given free-form notes. The log also shows your cumulative training time, and can be cleared or exported as a CSV file via the share sheet.
Voice & Speech Recognition (Experimental - iOS only)
Voice controls whether the computer speaks each character's answer out loud once your Recognition Time expires.
Speech Recognition listens for you speaking the answer and credits you if it hears you say it in time. It requires headphones (wired or Bluetooth). If Speech Recognition is on and no headphones are connected, the app will ask you to connect them or turn the toggle off.
Speech Recognition is an experimental feature. It relies on your device's on-board speech recognizer and voice-activity detection, both of which are inherently imperfect — expect occasional false credit for an answer you didn't actually say in time, occasional missed credit for one you did, and letters that sound alike (B/P, M/N, and similar pairs) being confused for each other. Background noise, microphone placement, and accent all affect accuracy, and behavior can vary between iOS devices. See "Getting the Best Recognition Accuracy" below for ways to reduce these errors. Some baseline error rate is inherent to the technology - thus the experimental designation.
Punctuation Speaking
Choose how the computer announces two punctuation characters: "." as either "Period" or "Dot", and "/" as either "Slash" or "Stroke".
Morse & Voice Audio
- Morse Pitch: the tone frequency of the Morse code sidetone, in Hz.
- Morse Volume: playback volume of the Morse tone.
- Voice Volume: playback volume of the computer's spoken answer, independent of Morse Volume.
Random Character Order
When on (the default), characters are drawn randomly from the active set. Turning it off instead plays the active set's characters in sequential order — used mainly for app diagnostics.
Apple iOS: Getting the Best Speech Recognition Accuracy
- A quiet room helps. Recognition timing is judged from the moment your speech first rises above the room's background noise, so a noisy room can delay real detection or trigger a false one.
- Speak clearly and promptly, at a consistent distance from the mic.
- Faster settings (short Recognition Time, high Character Speed) leave less margin for error — an on-time answer can occasionally miss by a few tens of milliseconds. That's an inherent tradeoff of fast settings.
A few limits are inherent to any speech recognizer and not fixable through settings: some letters simply sound alike when spoken in isolation (B/P, M/N, and similar pairs), and a letter occasionally gets missed entirely rather than misheard. If recognition ever stops working entirely for a whole session, that is worth reporting — these smaller misses are not.
Voice Quality
The computer's spoken voice comes from your device's own text-to-speech system, not from Morse ICR Trainer itself — so its clarity depends on which voice your device has installed and selected.
- iOS: open Settings > Accessibility > Spoken Content > Voices > English, tap Samantha, then tap the ⓘ info button next to it and download the Enhanced (or Premium, if offered) quality. Morse ICR Trainer automatically speaks with the highest-quality English voice it finds installed, so there is nothing to select inside the app itself — once Samantha (Enhanced) finishes downloading, the app starts using it right away.
- Android: open Settings > System > Languages & input > Text-to-speech output (the exact path varies a bit by device) and tap the gear icon next to the preferred engine, usually Google Text-to-speech Engine. Under Language, choose English (United States), then preview the available voices and pick the clearest one — favor a voice labeled Network over Local, since Network voices use higher-quality neural synthesis closer to Samantha (Enhanced)'s naturalness. Android has no single named voice equivalent to Samantha, and unlike iOS, Morse ICR Trainer does not pick a voice for you here — whichever voice you set as the system default is the one it speaks with.
Created by K3CDY, Cody Cabana Productions, LLC.
Acknowledgments
Morse ICR Trainer was inspired by the Instant Character Recognition training methodology taught by CW Innovations and by the Morse Code training resources available at Morse Code World.
Morse ICR Trainer is an independent application and is not affiliated with or endorsed by CW Innovations or Morse Code World.
CW Innovations — https://cwinnovations.net
Morse Code World — https://morsecode.world
☕ Enjoying Morse ICR Trainer?
If you find the app useful, consider buying me a coffee. It helps support continued development.
