监测发言者音量

更新时间: 2024/03/15 17:26:15

在语音连麦、视频会议等场景中,开发者应用层常常需要了解到发言者的人声相关信息,从而做出 UI 上的音量展示或根据发言者的音量大小进行视图布局的动态调整。

文本

NERTC SDK 提供监听房间内用户发送的音量值的功能,同时监听本端用户的音频数据中是否存在有效的人声信息。

功能介绍

NERTC SDK 支持根据您设置的时间间隔,定期通过回调返回本端发流用户的瞬时音量值以及是否存在人声,同时返回最多三位瞬时音量最高的远端用户的相关音量信息,即当前正在发言的用户 ID 和用户音频主流及辅流的瞬时音量值。

注意事项

  • 成功启用人声监测功能后,无论房间内是否有人发言,SDK 都会按指定的时间间隔触发 onLocalAudioVolumeIndicationonRemoteAudioVolumeIndication 回调。
  • 返回的 onRemoteAudioVolumeIndication 回调中,若 speakers 数组为空,则表示此时远端没有上行的音频主流或辅流数据;若上次返回的数组中出现的 uid 不在本次返回的数组中,则默认该 uid 对应的远端用户没有发言。

配置步骤

  1. 调用 enableAudioVolumeIndication 方法,启用发言者的人声监测。
    • 音量提示的时间间隔值必须设置为 100 毫秒的整数倍,建议设置为 200 毫秒及以上。
    • 如果离开房间后再重新进入房间,需要重新调用 enableAudioVolumeIndication 接口,否则会无法收到onRemoteAudioVolumeIndication 回调。
  2. 成功启用人声监测功能后,SDK 返回以下回调通知:

示例代码

//设置间隔为500ms的人声音量提示
this.engine.enableAudioVolumeIndication({
    enable: true,
    interval: 500,
    enableVad: false
});
// 启用说话者音量提示,在 onRemoteAudioVolumeIndication 和 onRemoteAudioVolumeIndication 回调中每隔 500ms 返回音量提示
/**
 * 在NERtcCallback中实现以下回调
 */

this.engine.addEventListener("onLocalAudioVolumeIndication", (volume, vadFlag) => {
    const message = `onLocalAudioVolumeIndication通知:userID = ${volume}, vadFlag = ${vadFlag}`
    console.log(message)
});


this.engine.addEventListener("onRemoteAudioVolumeIndication", (userID,videoStreamType) => {
    const message = `onRemoteAudioVolumeIndication通知:总音量totalVolume = ${totalVolume}`
    console.log(imessage)
    userList.forEach((user)=>{
        console.log(`用户 ${user.uerID} 的音频音量为: ${user.volume},音频辅流的音量为: ${user.subStreamVolume} `)
    })
});

API 参考

方法 功能描述
enableAudioVolumeIndication 启用发言者的人声监测。
onLocalAudioVolumeIndication 房间内本地用户瞬时音量的回调,及提示是否检测到人声。
onRemoteAudioVolumeIndication 房间内正在发言的用户 ID 及用户瞬时音量的回调。

常见问题

为什么离开房间前可以收到 onRemoteAudioVolumeIndication 回调,离开后重新加入房间,无法收到 onRemoteAudioVolumeIndication 回调?

enableAudioVolumeIndication 接口的配置在离开房间后会复位,所以用户离开房间后再重新进入房间,需要重新调用 enableAudioVolumeIndication 接口,否则会无法收到onRemoteAudioVolumeIndication 回调。

此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 注意事项
  • 配置步骤
  • 示例代码
  • API 参考
  • 常见问题