跳到主要内容

如何使用该插件

Runtime Speech Recognizer 插件旨在从传入的音频数据中识别词语。它使用了稍作修改的 whisper.cpp 版本以适配引擎。要使用该插件,请按照以下步骤操作:

编辑器端

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

运行时端

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

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

识别参数

该插件支持流式和非流式音频数据识别。要为特定用例调整识别参数,可调用 SetStreamingDefaultsSetNonStreamingDefaults。此外,您还可以手动设置单个参数,如线程数、步长、是否将输入语言翻译为英语,以及是否使用过往转录内容。完整参数列表请参阅识别参数列表

提升性能

有关如何优化插件性能的技巧,请参考如何提升性能章节。

语音活动检测 (VAD)

在处理音频输入时,特别是在流式场景中,建议使用语音活动检测(VAD)在音频段到达识别器之前过滤掉空白或仅含噪声的片段。这种过滤可以通过 Runtime Audio Importer 插件在可捕获声波端启用,有助于防止语言模型产生幻觉——即在噪声中寻找模式并生成错误的转录。

为了获得最佳语音识别效果,我们推荐使用Silero VAD 提供程序,它具有出色的噪声容忍度和更准确的语音检测能力。Silero VAD 作为 Runtime Audio Importer 插件的扩展提供。有关 VAD 配置的详细说明,请参阅语音活动检测文档

备注

以下示例中的可复制节点出于兼容性考虑使用了默认的VAD提供器。如需提升识别准确率,您可以轻松切换至Silero VAD:

  1. 按照Silero VAD扩展章节所述安装Silero VAD扩展
  2. 启用Toggle VAD节点后,添加Set VAD Provider节点并从下拉菜单中选择"Silero"

插件自带的演示项目中默认启用了VAD功能。您可以在演示项目中查看具体实现详情。

示例

插件Content -> Demo文件夹中包含完整的项目演示,可作为实现参考

这些示例展示了如何配合流式/非流式音频输入使用Runtime Speech Recognizer插件,其中音频数据获取以Runtime Audio Importer为例。请注意要实现示例中展示的完整音频导入功能(如可捕获声波和ImportAudioFromFile),需要单独下载RuntimeAudioImporter。这些示例仅用于演示核心概念,不包含错误处理逻辑。

流式音频输入示例

注意: 在UE 5.3及其他版本中,复制蓝图后可能出现节点丢失问题。这是由于不同引擎版本间的节点序列化差异导致的。请始终在实现时验证所有节点连接是否正常。

1. 基础流式识别

此示例演示了使用可捕获声波从麦克风获取音频流并传递给语音识别器的基本设置。它会录制约5秒语音后进行识别处理,适合快速测试和简单实现。可复制节点

该配置的核心特点:

  • 固定5秒录制时长
  • 单次触发式识别
  • 最简设置要求
  • 非常适合测试和原型开发

2. 可控流式识别

此示例在基础流式配置上增加了手动控制识别过程的功能。允许按需启动/停止识别,适用于需要精确控制识别时机的场景。可复制节点

该配置的核心特点:

  • 手动启停控制
  • 支持持续识别
  • 灵活录制时长
  • 适用于交互式应用场景

3. 语音激活命令识别

此示例针对命令识别场景进行了优化。它将流式识别与语音活动检测(VAD)相结合,在用户停止说话时自动处理语音。识别器仅在检测到静音时才开始处理累积的语音数据,非常适合基于命令的交互界面。可复用的节点蓝图

该配置的关键特性:

  • 手动启动/停止控制
  • 启用语音活动检测(VAD)来检测语音片段
  • 检测到静音时自动触发识别
  • 最适合短命令识别
  • 仅识别实际语音,降低处理开销

4. 自动初始化语音识别与最终缓冲区处理

此示例是语音激活识别方法的另一种变体,具有不同的生命周期处理方式。它会在初始化时自动启动识别器,在反初始化时停止识别器。关键特性是在停止识别器前会处理最后累积的音频缓冲区,确保当用户想要结束识别过程时不会丢失任何语音数据。这种配置特别适用于需要捕获完整用户话语(即使在说话中途停止)的应用程序。可复用的节点蓝图

该配置的关键特性:

  • 初始化时自动启动识别器
  • 反初始化时自动停止识别器
  • 在完全停止前处理最终的音频缓冲区
  • 使用语音活动检测(VAD)实现高效识别
  • 确保停止时不会丢失语音数据

非流式音频输入

此示例将音频数据导入到Imported sound wave中,并在完整导入后一次性识别全部音频数据。可复用的节点蓝图