跳到主要内容

如何使用插件

Runtime Speech Recognizer 插件旨在从传入的音频数据中识别单词。它使用 whisper.cpp 的一个稍微修改版本来与引擎配合工作。要使用该插件,请按照以下步骤:

编辑器端

  1. 根据此处的描述,为您的项目选择合适的语言模型。

运行时部分

  1. 创建一个语音识别器并设置必要的参数(CreateSpeechRecognizer,有关参数请参见此处)。
  2. 绑定到所需的委托(OnRecognitionFinishedOnRecognizedTextSegmentOnRecognitionError)。
  3. 启动语音识别(StartSpeechRecognition)。
  4. 处理音频数据并等待来自委托的结果(ProcessAudioData)。
  5. 在需要时停止语音识别器(例如,在 OnRecognitionFinished 广播后)。

该插件支持输入音频为浮点32位交错PCM格式。虽然它与 Runtime Audio Importer 配合良好,但并不依赖于它。

识别参数

该插件支持流式和非流式音频数据的识别。要根据您的特定用例调整识别参数,可以调用 SetStreamingDefaultsSetNonStreamingDefaults。此外,您还可以灵活地手动设置个别参数,例如线程数、步长、是否将输入语言翻译为英语,以及是否使用先前的转录。请参考 Recognition Parameter List 获取可用参数的完整列表。

提高性能

请参考 How to improve performance 部分,获取如何优化插件性能的建议。

语音活动检测 (VAD)

在处理音频输入时,特别是在流式场景中,建议使用语音活动检测 (VAD) 以在到达识别器之前过滤掉空白或仅噪音的音频段。这种过滤可以在可捕获声音波形端使用 Runtime Audio Importer 插件启用,这有助于防止语言模型出现幻觉——在噪音中尝试寻找模式并生成错误的转录。如需详细的 VAD 配置说明,请参阅 Voice Activity Detection documentation

在插件附带的演示项目中,默认启用了 VAD。您可以在 Demo Project 中找到关于演示实现的更多信息。

示例

插件的 Content -> Demo 文件夹中包含一个好的项目演示,可以用作实现的示例

这些示例展示了如何使用 Runtime Speech Recognizer 插件处理流式和非流式音频输入,并使用 Runtime Audio Importer 作为示例来获取音频数据。请注意,需要单独下载 RuntimeAudioImporter 才能访问示例中展示的同一套音频导入功能(例如,可捕获声波和 ImportAudioFromFile)。这些示例仅用于展示核心概念,不包括错误处理。

流式音频输入

此示例从麦克风中流式捕获音频数据,并使用可捕获声波将其传递给语音识别器。可复制节点

注意: 在 UE 5.3 和可能的其他版本中,您可能会遇到在您的Blueprint中缺少已复制节点的情况。这可能是由于不同引擎版本之间节点的序列化/反序列化差异所致。为了确保一切正常工作,请仔细检查所有节点是否连接正确。

更详细的示例

非流式音频输入

此示例将音频数据导入到已导入的声波中,并在完全导入后识别整个音频数据。可复制节点