NextATC Unicom

NextATC 指南NextATC 帮助与 FAQ

语音与一键通话(Push-to-Talk)

NextATC 有两个相互独立的语音功能。它们彼此独立,可以分别开启或关闭:

NextATC 有两个相互独立的语音功能。它们彼此独立,可以分别开启或关闭:

  • TTS(文本转语音):管制员说话。您阅读或聆听。
  • 语音识别(STT):您说话。管制员聆听。

您可以同时使用两者、只使用其中之一,或都不使用。即使两者均关闭,Radio Log 仍能正常工作。插件在纯文本模式下完全可玩。如果语音功能出现任何问题,请切换回文本模式(见最后一节),您的飞行可以正常继续。

TTS —— 让管制员说话#

打开 Plugins -> NextATC -> Options,启用:

  • Read ATC messages (TTS) —— 管制员会说话,而不仅在 Radio Log 中显示文字。

这就是您所需的全部设置。默认使用本地 X-Plane/操作系统语音。自定义语音(Azure、自定义 Windows 语音)需要单独配置。云端语音选项请参阅 Azure Setup。

在 Options -> Voice 中选择 Speech engine:Operating system(默认),Microsoft Azure,Kokoro (offline) 或 Piper (offline)。Azure 需要额外的设置,请参见 Azure 设置。Operating system 使用已安装的系统语音。Kokoro 与 Piper 在下载模型后可在本地合成语音。

Disable voice on readback 让您自己的飞行员语音保持静音,仅由 ATC 发声。大多数飞行员都保持启用。

本地语音:Kokoro 和 Piper#

NextATC 内置 Kokoro 和 Piper 语音引擎。与 X-ATC-Chatter 通过 VoiceBox 使用这些语音的方式不同,NextATC 不需要运行 VoiceBox 或其他独立应用。

  1. 打开 Options -> Voice 并在 Speech engine 中选择 Kokoro (offline) 或 Piper (offline)。语音目录会弹出;需要时可再次使用 Voice roles / Download... 打开。
  2. 勾选标记为 Download 的语音,然后点击 Download selected。推荐的语音已预先选中。下载需要网络连接,下载完成后合成在本地进行。若想取消下载可使用 Cancel download,关闭目录后下载仍会继续。
  3. 安装完成后,点击任意语音即可选择并预览飞行员语音。ATC 复选框用于选择控制员/交通的语音池。
  4. 使用 Test current ATC 或 Test random ATC 进行试听,然后点击 Save voice roles 保存。保持 Read ATC messages (TTS) 开启并在完成后保存 Options。

Disable voice on readback 同样适用于已选的飞行员语音。音量和无线电语音效果在 Azure、Kokoro 与 Piper 中均可调,在 Windows 上也适用于操作系统语音;在 macOS 和 Linux 上,操作系统语音则使用其原生音频通道。

Kokoro 或 Piper 发声时帧率下降#

本地语音在 CPU 上生成,因此每次通话都会短暂地与模拟器争用资源;在交通通话较多的繁忙机场,这一点更加明显。在 macOS 和 Windows 上,语音工作进程已经以低于 X-Plane 的优先级运行。最轻量的本地语音是在 Piper 目录中启用 Light models(默认设置)的 Piper 语音:它们所需的 CPU 约为高质量 Piper 模型的八分之一,并标记为 light。对于 Kokoro,请保持启用 Compact model (114 MB instead of 325 MB)(默认设置):与标准模型相比,它需要稍少的 CPU 和磁盘空间,语音质量略低。两者的语音都保持不变;请确保已使用 Download selected 下载所选模型。在安装完成之前,引擎会继续使用磁盘上已有的模型。Microsoft Azure 语音在云端生成,合成时不占用本地 CPU。

Radio Box 的两个活动 LED 表示什么?#

ATC/Ground Services 旁边的两个小 LED 分别显示两种无线电音频源。靠近按钮的绿色 LED 在 NextATC 占用无线电播放 TTS 时亮起。其左侧的琥珀色 LED 在 X-ATC-Chatter 报告正在播放语音片段时亮起。空心 LED 表示相应音源处于空闲状态;如果两个 LED 同时亮起,则表示两种音频正在重叠播放。

语音识别 —— 对管制员说话#

语音识别读取您说的内容,并将其转换为复诵或动作。这是一项实验性的 AI 辅助功能,但不是自由聊天机器人。当前流程被有意设计得很窄:

  • ASR/STT 模型把麦克风音频转写成文本。
  • 插件把这些文本与当前 ATC 流程正在等待的复诵、飞行员消息或动作选项进行比较。
  • 只有重要的运行内容匹配时,ATC 流程才接受输入:呼号、跑道、高度、频率、应答机码、航向及类似项目。

这种设计让飞行流程保持确定性。它也意味着一句话即使被正确转写,如果运行内容不符合 ATC 当前等待的内容,仍然会被拒绝。

它需要:

  1. 已安装识别模型。打开 Options,在 Voice Models 下点击缺失的模型进行下载。
  2. 在 Options -> Speech 中选择一个可用的麦克风。
  3. 已为 NextATC/voice_push_to_talk 绑定按键或操纵杆按钮。

在 X-Plane 的 Settings -> Keyboard 中绑定按键。搜索 NextATC,将 voice_push_to_talk 分配给一个您能舒适按住的键(许多用户选择小键盘 0、摇杆顶部按钮或 Tab 键)。

识别模型与预期#

Options 页面列出多个语音识别模型,方便你根据麦克风、口音、硬件和语言选择合适模型。这个区域仍处于实验阶段。较大的模型可能更慢、占用更多磁盘空间,或与基准模型表现不同。

请从 Whisper Base English 开始。对于英语 ATC readback,它是最可预期的选择。只有在需要更好的口音处理且可以接受更慢的本地转写时,再尝试 Whisper Small English 或 Whisper Medium English。如果所选模型运行太慢或返回的文本可用性较低,请切回 Whisper Base English。

默认情况下,识别使用英语 Whisper 模型。只有在需要更好识别非英语机场名、城市名或本地发音时,才启用 Multilingual model support。这会下载与当前模型大小匹配的多语言版本,并与英语模型分开保存。所选模型下载完成后,语音识别会自动启用,并显示 push-to-talk 提示。

如果下次启动插件时找不到当前选中的有效模型版本,语音识别会被禁用,而不会保留一个不存在的模型选择。

GPU 加速让 Whisper 更快地处理麦克风音频;它不负责生成管制员的 TTS 语音。使用相同的识别模型时,启用 CUDA 或 Metal 不保证转写更准确。如果识别似乎有所改善,也请检查所选模型、麦克风和录制的音频。

当 Options 中 Use GPU acceleration 可用时,它会在受支持的 Apple silicon Mac 上选择 Metal,在 Windows 上选择 NVIDIA CUDA。Windows 安装包包含 CUDA 模块,并要求 PC 安装 CUDA Toolkit 12.8 或 12.9。安装后请重启 X-Plane;Steam 版和独立版的工作方式相同。CUDA 作为单独的可选模块加载,因此缺少 GPU、驱动程序或运行时不会阻止 NextATC 启动。关闭此选项可强制使用 CPU。GPU 设置、模型初始化或推理发生可恢复错误时会改用 CPU 重试;上游 GPU 运行时内部的致命错误无法在同一进程内恢复。

多语言模式会让 Whisper 自动检测说话语言。它不会把 NextATC 变成非英语的 ATC 对话:NextATC 所期待的复诵用语仍然是英语。

最好把语音识别视为普通 Radio Log 之上的便利层。它有助于沉浸感,但文本按钮始终是可靠的 fallback。

两种 PTT 模式#

PTT 键有两种使用方式。请选一个并坚持使用。

Hold(按住)模式(电台模式)#

  • 按住PTT 键。
  • 在按住期间讲话。
  • 讲完后释放按键。

这就是真实电台的工作方式。它是默认模式,对大多数用户而言也最可靠。

Toggle(切换)模式(按一次/再按一次)#

  • 按一次 PTT 键开始监听。
  • 讲话。
  • 再按一次 PTT 键停止监听。

如果您的 PTT 键不便于按住(例如某个单一摇杆按钮还有其他用途),Toggle 模式很有用。在 Toggle 模式下,插件还可以在数秒静默后自动停止监听。

当前模式在 Options -> Speech 中配置。如果修改了模式,请在地面先测试一次,再在飞行中依赖它。

完整复诵流程,分步说明#

这是管制员期望的顺序:

  1. ATC 说了一句话,出现在 Radio Log 中(如启用 TTS 还会发声)。
  2. Radio Log 显示 Readback 与 Say Again 按钮。
  3. 按住(或切换)您的 PTT 键。
  4. 念出复诵。例如:「Climbing flight level two zero zero, AAL67」。
  5. Radio Log 显示灰色预览,其中是识别到的词。
  6. 释放 PTT 键(在 Toggle 模式下则再按一次)。
  7. 预览会被提交。如果复诵匹配,ATC 会接受它,Radio Log 会高亮已接受的提示。

如果复诵未被接受,管制员会要求 Say again。请参阅下一节。

「转写正确,但 ATC 仍然 Say Again」#

这是最常见的混淆。灰色预览只表示麦克风识别到了那些词。它还不意味着管制员接受了它们。

可能的原因,按可能性顺序排列:

  • 您过早或过晚释放了 PTT 键。识别器在释放时停止。请在最后一个字与释放之间留一个清晰的停顿后再试一次。
  • **您使用的措辞与 Readback 按钮期望的不同。**所需的精确措辞会以小提示形式出现在 Readback 按钮下方作为语音指南。请尽量匹配。无需逐字一致,但关键的数字(呼号、高度、跑道、频率)必须存在。
  • 转写漏掉了一个数字(例如说 flight level 而不是 FL200)。请清晰地念出每一位数字:「two zero zero」,而非「two hundred」。
  • 您在电台准备好之前就开口了。请等待 Readback 按钮出现后再按 PTT。
  • 背景噪音或游戏声音。插件使用在 Options 中选择的麦克风。在某些耳机、操作系统和驱动程序组合中,启用蓝牙麦克风可能会选择另一种音频配置;音质可能因此发生变化,也可能出现咔嗒声。NextATC 无法预测每种设备的这种行为。如果遇到此现象,请尝试有线麦克风或电脑内置麦克风。

如有疑问,您可以随时用鼠标点击 Readback 跳过语音。飞行会以完全相同的方式继续。

「我没法让语音工作。如何切换回文本模式?」#

这是安全且快捷的方式。您不会丢失飞行进度。

  1. 打开 Plugins -> NextATC -> Options。
  2. 在 Options -> Speech 中关闭语音识别(输入端 —— STT)。
  3. 如果您也不想让管制员发声,可选关闭 Read ATC messages (TTS)。
  4. 确保 Radio Log 为 Enabled。这就是文本通信流。
  5. 关闭 Options。

Radio Log 现在以文字形式显示每一条 ATC 消息,您可以用鼠标或 NextATC/handoff 命令点击 Readback / Say Again。其余所有内容(放行、滑行、爬升、着陆)的工作方式保持不变。

「我关闭了语音,现在完全看不到任何消息」#

通常有两项被关闭:

  • Options 中 Radio Log -> Enabled 被关闭。
  • OSD flash messages 被关闭且 TTS 也关闭,因此既不会发声也不会闪烁。

修复方法:

  1. 打开 Options。
  2. 将 Radio Log -> Enabled 设为开。
  3. 将 Max visible lines 设为至少 4。
  4. 保存并关闭。

下一条 ATC 消息出现时,Radio Log 会重新显示。如果启用了 Show anchor dot when hidden,您也可以点击小锚点将其手动调出。

如果语音识别一直失败#

按以下顺序检查:

  • 麦克风:另一个应用(例如语音录音机)能听到您的声音。
  • 已安装模型:所选识别模型已经下载。Options 页面会显示下载状态。
  • 语言:默认使用英语 Whisper 模型。只有本地的非英语名称导致识别问题时,才启用多语言模型支持;必须另行下载对应的多语言版本。
  • Runtime 支持:如果较大的实验模型不产生文本,请切回 Whisper Base English。
  • PTT 键:X-Plane 命令 NextATC/voice_push_to_talk 只绑定到一个键。
  • Hold 或 Toggle:您使用的是您所配置的模式,而非另一种。

如果以上都无效,请切换到文本模式并报告机场和频率。使用内置报告器或将受影响的可读 X-Plane/Log.txt 附件随 Web 问题报告提交;详见 错误报告与功能请求。

Windows 上的 SAPI5 语音#

在 Windows 上,Operating system 语音引擎使用 WinRT 语音 API 以及该 API 报告的语音。NextATC 不使用 SAPI5。如需更多无需云账户的本地语音,请选择 Kokoro (offline) 或 Piper (offline):两者在下载语音模型后均在本地合成。

另见#