跳到主要内容

流音波

语音活动检测 (VAD),请参阅此页面

流音波是一种支持动态添加音频数据的导入音波类型,即使在播放过程中也是如此。它提供与导入音波相同的功能,例如回放,并可用于 SoundCues 等。

创建流音波

首先,您应该创建一个流音波。请注意,应将其视为强引用以防止过早销毁(例如,通过在蓝图中将其分配给单独的变量,或在 C++ 中使用 UPROPERTY())。

创建流音波节点

播放声波

然后,您可以播放该声波。不过,现在不必立即播放,您可以稍后开始播放声波。

播放声波的各种示例

预分配音频数据

可选择预分配音频数据(字节)以避免每次附加新音频数据时重新分配整个 PCM 缓冲区。

预分配音频数据节点

添加音频数据

要在现有缓冲区末尾添加音频数据,请使用适当的函数动态追加音频数据。播放将遵循这些追加的队列顺序。

Append Audio Data node

避免加速音频播放

通常,当您需要流式传输音频数据并同时播放时,您应该在播放前稍作延迟,以避免由于缓冲区填充过快导致的音频加速。通常建议延迟大约半秒。

示例用法

最终,您的实现可能如下所示:

使用流音波的示例

关于 Populate Audio State

OnPopulateAudioState 委托功能类似于 OnPopulateAudioData,但不广播已填充的音频数据。这在您希望跟踪音频数据何时被填充而不传递填充的音频数据数组时非常有用,这可以提高性能。

On Populate Audio State delegate

使用PCM数据

要在播放过程中实时访问PCM数据,请参阅PCM数据处理