NextATC guideNextATC Help & FAQ
Voice & Push-to-Talk
TTS, voice recognition, PTT modes
NextATC has two separate voice features. They are independent and can be turned on or off one at a time:
- TTS (text-to-speech): the controller speaks. You read or listen.
- Voice recognition (STT): you speak. The controller listens.
You can use both, only one, or neither. The Radio Log always works even when both are off. The plugin is fully playable in text mode. If voice gives you any trouble, switch back to text mode (see the last section) and your flight continues normally.
TTS — making the controller speak#
Open Plugins -> NextATC -> Options and turn on:
Read ATC messages (TTS)— the controller speaks instead of just writing in the Radio Log.
In Options -> Voice, choose Speech engine: Operating system (the default), Microsoft Azure, Kokoro (offline) or Piper (offline). Azure requires setup; see Azure Setup. The operating-system path uses installed system voices. Kokoro and Piper synthesize locally after their models have been downloaded.
Disable voice on readback keeps your own pilot voice silent and only voices ATC. Most pilots leave this on.
Local voices: Kokoro and Piper#
NextATC includes its own Kokoro and Piper engines. Unlike X-ATC-Chatter's VoiceBox integration, these voices do not require VoiceBox or any separate app to be running.
- Open
Options -> Voiceand chooseKokoro (offline)orPiper (offline)inSpeech engine. The voice catalog opens; reopen it withVoice roles / Download...whenever needed. - Select the voices marked
Download, then pressDownload selected. Recommended voices are preselected. Downloading needs internet access; speech synthesis afterwards is local.Cancel downloadstops the download; closing the catalog lets the download continue. - Once installed, click a voice to select and preview the pilot voice. The
ATCcheckboxes choose the controller/traffic voice pool. - Use
Test current ATCorTest random ATC, thenSave voice roles. KeepRead ATC messages (TTS)enabled and save Options when finished.
Disable voice on readback also applies to the selected pilot voice. Volume and the radio voice effect work with Azure, Kokoro and Piper, and on Windows also with the operating-system voice; on macOS and Linux operating-system speech uses its native audio path.
Frame rate dips while Kokoro or Piper speaks#
Local voices are generated on the CPU, so each transmission briefly competes with the simulator; busy airports with a lot of traffic chatter make this more noticeable. On macOS and Windows the speech worker already runs at a lower priority than X-Plane. The lightest local voices are Piper voices with Light models enabled in the Piper catalog (the default): they need about eight times less CPU than high-quality Piper models and are marked light. For Kokoro, keep Compact model (114 MB instead of 325 MB) enabled (the default): it needs somewhat less CPU and disk than the standard model, with slightly lower voice quality. Both keep the same voices; make sure the selected models are downloaded with Download selected. Until they are installed, the engine keeps using the model already on disk. Microsoft Azure speech is generated in the cloud and does not use local CPU for synthesis.
What do the two Radio Box activity LEDs mean?#
The two small LEDs beside ATC/Ground Services show the two radio audio sources independently. The green LED nearest the button lights while NextATC owns the radio for TTS playback. The amber LED to its left lights while X-ATC-Chatter reports that a chatter clip is playing. An empty LED means that source is idle; if both LEDs light together, the two sources are overlapping.
Voice recognition — speaking to the controller#
Voice recognition reads what you say and turns it into a readback or an action. This is an experimental AI-assisted feature, but it is not a free-form chatbot. The current pipeline is deliberately narrow:
- An ASR/STT model transcribes your microphone audio into text.
- The plugin compares that text with the current expected readback, pilot message, or action choice.
- The ATC flow accepts it only when the important operational content matches: callsign, runway, altitude, frequency, squawk, heading, and similar items.
That design keeps the flight flow deterministic. It also means that a sentence can be transcribed correctly and still be rejected if the operational content does not match what ATC is waiting for.
It needs:
- A recognition model installed. Open Options and click a missing model under
Voice Modelsto download it. - A working microphone selected in
Options -> Speech. - A bound key or joystick button for
NextATC/voice_push_to_talk.
Bind the key in Settings -> Keyboard in X-Plane. Search for NextATC and assign voice_push_to_talk to a key you can hold comfortably (many users pick the keypad 0, a stick top button, or the Tab key).
Recognition models and expectations#
The Options page lists several speech-recognition model choices so you can pick what works best for your microphone, accent, hardware, and language. The area is still experimental. A larger model can be slower, use more disk space, or behave differently from the baseline model.
Start with Whisper Base English. It is the most predictable option for English ATC readbacks. Try Whisper Small English or Whisper Medium English only if you need better accent handling and can accept slower local transcription. If a selected model is too slow or returns less useful text, switch back to Whisper Base English.
By default, recognition uses English Whisper models. Enable Multilingual model support only if you need better handling of non-English airport names, city names, or local pronunciation. This downloads the matching multilingual variant of the selected model size, separate from the English model. When the selected model finishes downloading, voice recognition is enabled automatically and the push-to-talk notice is shown.
If the selected active model variant is missing when the plugin starts, voice recognition is disabled instead of keeping a stale model selection active.
GPU acceleration speeds up Whisper's processing of your microphone audio; it does not generate the controller's TTS voice. With the same recognition model, enabling CUDA or Metal does not guarantee more accurate transcription. If recognition seems better, check the selected model, microphone and recorded audio too.
When Use GPU acceleration is available in Options, it selects Metal on supported Apple silicon Macs or NVIDIA CUDA on Windows. The Windows package includes the CUDA module and expects CUDA Toolkit 12.8 or 12.9 to be installed on the PC. Restart X-Plane after installing it; Steam and standalone installs work the same way. CUDA runs in an optional module loaded separately from the plugin, so a missing GPU, driver or runtime cannot prevent NextATC from loading. Disable the option to force CPU. Recoverable GPU setup, model-initialization or inference errors retry on CPU; fatal errors inside the upstream GPU runtime cannot be recovered in-process.
Multilingual mode lets Whisper detect the spoken language automatically. It does not turn NextATC into a non-English ATC conversation: the readback terms that NextATC expects remain English.
Voice recognition is best treated as a convenience layer over the normal Radio Log. It is useful for immersion and testing, but the text buttons are always the reliable fallback.
The two PTT modes#
There are two ways to use the PTT key. Pick one and stick to it.
Hold mode (the radio mode)#
- Press and hold the PTT key.
- Speak while holding.
- Release the key when you are done.
This is how a real radio works. It is the default and the most reliable mode for most users.
Toggle mode (press-once / press-again)#
- Press the PTT key once to start listening.
- Speak.
- Press the PTT key a second time to stop listening.
Toggle mode is useful if your PTT key is hard to hold (for example a single stick button you use for something else). The plugin can also auto-stop listening after a few seconds of silence in toggle mode.
The active mode is configured in Options -> Speech. If you change it, test once on the ground before relying on it in flight.
The full readback flow, step by step#
This is the sequence the controller expects:
- ATC says something. It appears in the Radio Log (and is spoken if TTS is on).
- The Radio Log shows
ReadbackandSay Againbuttons. - Press and hold (or toggle) your PTT key.
- Speak the readback. Example: "Climbing flight level two zero zero, AAL67".
- The Radio Log shows a grey preview with the words it recognised.
- Release the PTT key (or press it a second time in toggle mode).
- The preview is submitted. If the readback matches, ATC accepts it and the Radio Log highlights the accepted prompt.
If the readback is not accepted, the controller will ask Say again. See the next section.
"It transcribes correctly but ATC still says Say Again"#
This is the most common confusion. The grey preview means the words were recognised by the microphone. It does not yet mean the controller accepted them.
Causes, in order of likelihood:
- You let go of the PTT key too early or too late. The recogniser stops at release. Try again with a clear pause between your last word and the release.
- You used a different phrase than the readback button expects. The exact required wording is hinted under the
Readbackbutton as a small voice guide. Match it. You do not need to be word-perfect, but the key numbers (callsign, altitude, runway, frequency) must be present. - The transcription dropped a number (for example flight level instead of FL200). Speak digits clearly: "two zero zero", not "two hundred".
- You spoke before the radio was ready. Wait for the
Readbackbutton to appear before pressing PTT. - Background noise or game audio. The plugin uses the microphone selected in Options. On some headset, operating-system and driver combinations, opening a Bluetooth microphone may select a different audio profile; audio quality may then change or clicks may occur. NextATC cannot predict this for every device. If you notice it, try a wired microphone or the computer's built-in microphone.
When in doubt, you can always click Readback with the mouse and skip the voice. The flight continues exactly the same.
"I cannot make voice work. How do I go back to text mode?"#
This is safe and fast. You will not lose your flight.
- Open
Plugins -> NextATC -> Options. - In
Options -> Speech, turn voice recognition off (the input side — the STT). - Optionally turn off
Read ATC messages (TTS)if you do not want the controller to speak either. - Make sure
Radio LogisEnabled. This is the text feed. - Close Options.
The Radio Log now shows every ATC message as text, and you press Readback / Say Again with the mouse or with the NextATC/handoff command. Everything else (clearances, taxi, climbs, landings) works the same.
"I disabled voice and now I see no messages at all"#
Two things are usually off:
Radio Log -> Enabledwas turned off in Options.OSD flash messageswas turned off and TTS is off, so nothing speaks and nothing flashes.
Fix:
- Open Options.
- Set
Radio Log -> Enabledto on. - Set
Max visible linesto at least 4. - Save and close.
The Radio Log re-appears at the next ATC message. You can also click the small anchor dot if Show anchor dot when hidden is enabled to bring it back manually.
If voice recognition keeps failing#
Check, in this order:
- Microphone: a different app (a voice recorder) hears your voice.
- Model installed: the selected recogniser model is downloaded. The Options page shows the download status.
- Language: English Whisper models are the default. Enable multilingual model support only if local, non-English names are causing recognition trouble; the matching multilingual model must be downloaded separately.
- Runtime support: if a larger experimental model produces no text, switch back to
Whisper Base English. - PTT key: the X-Plane command
NextATC/voice_push_to_talkis bound to one key only. - Hold vs Toggle: you are using the mode you configured, not the other one.
If nothing helps, switch to text mode and report the airport and frequency. Use the built-in reporter or attach the affected readable X-Plane/Log.txt to a web bug report; see Bug reports and feature requests.
SAPI5 voices on Windows#
On Windows the Operating system speech engine uses the WinRT speech API and the voices that API reports. NextATC does not use SAPI5. For more local voices without a cloud account, select Kokoro (offline) or Piper (offline): both synthesize locally once their voice models are downloaded.
See also#
- Azure Setup — to make the controller voice less robotic.
- Troubleshooting — for general fixes.
- Options Reference — every voice option explained.