如何使用该插件
Runtime Speech Recognizer 插件设计用于从输入的音频数据中识别词语。它使用了稍作修改的 whisper.cpp 版本以适配引擎。使用该插件请遵循以下步骤:
编辑器端
- 根据此处的说明为项目选择合适的语言模型。
运行时端
- 创建语音识 别器并设置必要参数(CreateSpeechRecognizer,参数说明见此处)。
- 绑定所需的委托(OnRecognitionFinished、OnRecognizedTextSegment 和 OnRecognitionError)。
- 启动语音识别(StartSpeechRecognition)。
- 处理音频数据并等待委托返回结果(ProcessAudioData)。
- 在需要时停止语音识别器(例如在 OnRecognitionFinished 广播后)。
该插件支持输入的音频格式为 32位浮点交错PCM格式。虽然它能与 Runtime Audio Importer 良好协作,但并不直接依赖后者。
识别参数
该插件支持流式和非流式音频数据识别。要为特定用例调整识别参数,可调用 SetStreamingDefaults
或 SetNonStreamingDefaults
。此外,您还可以手动设置单个参数,如线程数、步长、是否将输入语言翻译为英语,以及是否使用过往转录内容。完整参数列表请参阅识别参数列表。
提升性能
有关如何优化插件性能的技巧,请参考如何提升性能部分。
语音活动检测 (VAD)
在处理音频输入时,特别是在流式场景中,建议使用语音活动检测(VAD)在音频段到达识别器之前过滤掉空白或仅含噪声的部分。这种过滤可以通过 Runtime Audio Importer 插件在可捕获声波端启用,有助于防止语言模型产生幻觉——即在噪声中寻找模式并生成错误的转录。
为了获得最佳语音识别效果,我们推荐使用Silero VAD 提供程序,它具有更好的噪声容忍度和更准确的语音检测能力。Silero VAD 作为 Runtime Audio Importer 插件的扩展提供。有关 VAD 配置的详细说明,请参阅语音活动检测文档。
下方示例中的可复制节点出于兼容性考虑使用了默认的 VAD 提供程序。要提升识别准确率,您可以轻松切换至 Silero VAD:
- 按照Silero VAD 扩展部分的说明安装扩展
- 在启用 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 中,并在导入完成后一次性识别全部音频数据。可复制节点。