监测发言者音量

更新时间: 2024/03/15 17:25:04

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

文本

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

功能介绍

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

V5.3.0 及之后版本,子房间支持调用 IRtcChannel#enableAudioVolumeIndication 监测子房间用户的实时音量。

注意事项

配置步骤

  1. 调用 enableAudioVolumeIndication 方法,启用发言者的人声监测。

    音量提示的时间间隔值必须设置为 100 毫秒的整数倍,建议设置为 200 毫秒及以上。

  2. 成功启用人声监测功能后,SDK 返回以下回调通知:

示例代码

c++//启用说话者音量提示,在 onRemoteAudioVolumeIndication 和 onRemoteAudioVolumeIndication 回调中每隔 200ms 返回音量提示  
rtc_engine_->enableAudioVolumeIndication(enable, 200, enable);   

//提示房间内本地用户瞬时音量以及是否检测到人声的回调
void onLocalAudioVolumeIndication(int volume, bool enable_vad)
{
    printf("AudioVolume: volume: %d\n", volume);
}

//提示房间内谁正在说话及说话者瞬时音量的回调,包括主流音量 volume 和辅流音量 subStreamVolume
void onRemoteAudioVolumeIndication(const NERtcAudioVolumeInfo *speakers, unsigned int speaker_number, int total_volume)
{
    for (unsigned int i = 0; i < speaker_number; i++)
    {
        nertc::NERtcAudioVolumeInfo stats = speakers[i];
        printf("uid:%lld, AudioVolume: volume: %d\n",
            stats.uid, stats.volume, stats.subStreamVolume);
    }
}

API 参考

方法 功能描述
enableAudioVolumeIndication 启用发言者的人声监测。
onLocalAudioVolumeIndication 房间内本地用户瞬时音量的回调,及提示是否检测到人声。
onRemoteAudioVolumeIndication 房间内正在发言的用户 ID 及用户瞬时音量的回调。
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 注意事项
  • 配置步骤
  • 示例代码
  • API 参考