语音活动事件和超时

每当系统在数据流中检测到有语音开始或结束,便会触发语音活动事件。系统会在 Speech-to-Text 检测到语音事件时实时发送事件。如果您在开发需要能够在用户开始或结束输入语音时自动检测到这一活动的应用,那么语音活动事件会非常有用。您也可以将 Speech-to-Text 配置为根据语音活动自动关闭数据流。

语音活动事件仅适用于 StreamingRecognize gRPC 请求。

启用语音活动事件

您可以通过将 streaming_features 消息下的 enable_voice_activity_events 标志设置为 true 来启用接收语音活动响应这一功能。

语音活动事件类型

语音活动事件通常会在 Speech-to-Text 检测到数据流中有语音开始或结束时实时返回。这些事件通常会在相应语音片段的转录结果到达之前返回。此外,对于生成空转录结果的音频,系统可能也会发送语音活动事件。

语音活动开始

在 Speech-to-Text 检测到有语音开始时发送。

{
  "speechEventType": "SPEECH_ACTIVITY_BEGIN",
  "speechEventOffset": "1.070s"
}

语音活动结束

在 Speech-to-Text 检测到有语音结束时发送。

{
  "speechEventType": "SPEECH_ACTIVITY_END",
  "speechEventOffset": "1.070s"
}
如果数据流在语音结束前关闭,则不会发送 SPEECH_ACTIVITY_END 事件。

启用语音活动超时

您可以通过在 streaming_features 中的 voice_activity_timeout 消息上设置值来启用语音活动超时。语音活动超时必须大于 500 毫秒且小于 60 秒。语音开始和结束超时可以单独设置。

语音开始超时

设置语音开始超时后,如果语音未在超时期限内开始,Speech-to-Text 会自动关闭数据流。在系统检测到 SPEECH_ACTIVITY_START 事件并返回该事件后,会取消数据流持续期间的超时。如果您的应用需要用户在给定时间段内开始输入语音,那么此功能会非常有用。

语音结束超时

设置语音结束超时后,如果 Speech-to-Text 在 SPEECH_ACTIVITY_END 事件后的指定超时时长内未检测到进一步的语音输入,则会自动关闭数据流。在系统检测到 SPEECH_ACTIVITY_START 事件并返回该事件后,会取消超时,并在有 SPEECH_ACTIVITY_END 事件再次发送后重新启动超时。

超时的时间计量

所耗用的时间是按向 Speech-to-Text 发出的请求中的已发送音频的字节数(而不是服务器时间)来计量的。该计量方式有助于在数据流传输过程中的各个变体之间确保准确性。在请求中发送非常大的音频块,或快速连续地发送请求,都会降低超时计量的准确性。注意:音频块的大小限制为每个请求 15,360 字节。