For the complete documentation index, see llms.txt. This page is also available as Markdown.

语音活动检测

了解 Convai Unity SDK 如何在连接时一次性解析用户语音活动检测设置,使用 Convai 的默认值或你的自定义值。

语音活动检测(VAD)是 Convai 判断从用户麦克风传入的音频是否包含语音的方式。Convai Unity SDK 提供 UserVadSettings 因此场景可以调整这一判断——置信度、时序和音量阈值——而不必总是依赖 Convai 内置默认值。SDK 只会在会话连接的那一刻解析一次这些设置,并将其作为连接请求的一部分发送。

UserVadSettings 适用于 Convai 的离散式 LLM/STT 处理路径。它不会影响实时提供方自身的语音活动检测,也不会影响按住说话如何决定一轮何时结束——这些路径使用各自的轮次结束逻辑,详见 轮流发言模式.


为什么语音活动检测是连接时设置

UserVadSettings 它调节的是 Convai 的音频管线,而不是场景需要逐时刻更改的值。带有背景噪声的工厂车间培训模拟需要更高的 MinVolumeConfidence 阈值,而安静的家庭办公室场景则不需要这么高的阈值,但这两种场景都不需要在对话进行中更改该阈值。SDK 也体现了这一点:它会读取 UserVadSettings 一次,就在它为会话构建连接请求之前,而且不提供任何 API 将更新后的值推送到一个已经 已连接.

这也意味着 UserVadSettings 的行为与 TurnTakingOptions. RoomSessionConnectOptions ——传递给连接调用的每次调用覆盖对象——携带一个 TurnTaking 字段,因此每次连接尝试都可以覆盖轮次处理行为。它没有针对以下内容的对应字段: UserVadSettings. ConvaiRoomManagerProfile SDK 读取的唯一来源是 ConvaiRoomManager 资产,或位于……上的等效内联字段


UserVadSettings 字段参考

字段
类型
默认值
有效范围
描述

UseServerDefault

bool

true

启用后,SDK 会省略 vad_params ,使其完全不出现在连接请求中,而由 Convai 应用其自身的默认值。禁用它后,改为发送下面这四个字段。

Confidence

float

0.7

01

Convai 的语音活动检测器在将传入音频视为语音之前所要求的置信度阈值。

StartSecs

float

0.2

≥ 0

在 Convai 将用户的语音视为已开始之前所需的连续语音时长。

StopSecs

float

0.2

≥ 0

在 Convai 将用户的语音视为已停止之前所需的静音时长。Convai 可能会将其限制为 0.2 秒,当免提智能轮次检测处于启用状态时。

MinVolume

float

0.6

01

Convai 的语音活动检测器在将音频视为语音候选项之前所要求的最小输入音量。

这四个数值默认值与 Convai 在服务器端应用的默认值一致,因此保留 UseServerDefault 启用并省略 vad_params ,其检测行为与显式发送这些精确值相同。


连接时的服务器默认值与自定义值

每次会话连接时,SDK 都会解析 UserVadSettings 其配置来源,并决定发送什么。

UseServerDefaulttrue,连接请求的 vad_params 字段保持 null,SDK 的请求序列化器会省略 null 字段—— vad_params 根本不会出现在发送给 Convai 的有效载荷中。当 UseServerDefaultfalse,SDK 会发送 vad_params 作为一个对象,包含 confidence, start_secs, stop_secs,以及 min_volume.

SDK 会在每次连接尝试时记录已解析的决定:

  • 服务器默认值: 使用服务器默认的 vad_params(字段已从连接有效载荷中省略)。

  • 自定义值: 发送自定义 vad_params:confidence=<value>, start_secs=<value>, stop_secs=<value>, min_volume=<value>

这些日志行来自 SDK 的内部日志器,并且只有在你的项目日志级别显示 调试- 和 信息- 严重级别消息时才会出现。


使用以下方式编写自定义值: ConvaiRoomManagerProfile

ConvaiRoomManagerProfile 是一个 ScriptableObject 用于存储已序列化的 UserVadSettings 字段,默认值为 UseServerDefault = true。其公开的 UserVadSettings 属性会返回该字段的克隆,因此读取它时,调用方永远无法通过引用修改资产中存储的值。

若要发送自定义检测阈值而不是 Convai 的默认值,请打开 ConvaiRoomManagerProfile 在 Inspector 中的资产,禁用 使用服务器默认值,并设置 Confidence, Start Secs, Stop Secs,以及 Min Volume 为场景所需的值。任何 ConvaiRoomManager 将此配置文件作为其配置来源的……会在下一次连接时发送这些值。这些相同字段也以内联形式存在于 ConvaiRoomManager 本身上,适用于直接在组件上配置房间设置而不是通过共享配置文件资产的场景。


下一步

你现在已经了解 UserVadSettings 它控制什么、SDK 如何在 Convai 的默认值与自定义值之间做出选择,以及在哪里进行配置。阅读“轮次处理模式”了解语音活动检测与免提轮次结束行为之间的关系,然后阅读“事件系统”以在运行时订阅会话和角色事件。

轮替模式事件系统

最后更新于

这有帮助吗?