调整通话音量
本文介绍如何设置音频采集和播放、音乐文件播放的音量。
技术原理
声网 SDK 支持对 SDK 采集和播放的音频音量进行调整,以满足用户实际应用场景。例如,进行双人通话时,需要静音远端用户,可以通过调整播放音量的方法将音量设置为 0。
如果使用调整信号音量的方法将音量设置过大,在某些设备上可能会出现音频失真。
下图展示了调整音量的工作流程。
播放
播放是指音频信号从发送端进入到接收端,然后使用播放设备进行播放的过程。
采集
采集是指音频信号由采集设备采集,然后传输到发送端的过程。
前提条件
在实现调整通话音量前,请确保已在你的项目中实现基本的实时音视频功能。详见实现音视频互动。
实现方法
调整播放音量
本小节介绍如何调用 AdjustPlaybackSignalVolume
调整音频播放信号的音量。
1. 创建 UMG
创建一个 Slider (滑块) 控件,命名为 Slider_PlaybackSignalVolume,供用户拖动音量条调节播放音量。在本示例中,设置最小值为 0 (静音),最大值为 100 (原始音量)。如下图所示:
![图片](/assets/images/volume-playback-umg-23de83dc7be173d2a6120dcf419583cf.png)
2. 绑定 UI 事件
创建 Bind Event to On Value Changed 节点,分别连接 Slider_PlaybackSignalVolume 控件和 OnPlaybackSignalVolumeValChanged 回调。当用户拖动音量条调节音频播放信号时,会触发 OnPlaybackSignalVolumeValChanged 回调。如下图所示:
![图片](/assets/images/volume-playback-bind-85a8250cc243a917841a8f3c47f262c8.png)
3. 实现回调函数
创建 OnPlaybackSignalVolumeValChanged 回调函数,配置以下参数:
输入参数 | 数据类型 | 参数描述 |
---|---|---|
Value | Float | 播放音量。 |
触发该回调后,会获取并处理用户指定的播放音量、将该音量赋值给 Adjust Playback Signal Volume 的 Volume 参数,并调用 Adjust Playback Signal Volume 方法调节播放音量。如下图所示:
![图片](/assets/images/volume-playback-callback-e7b19065accd500f2a2f5167137d7208.png)
调整采集音量
本小节介绍如何调用 AdjustRecordingSignalVolume
调整音频采集信号的音量。
1. 创建 UMG
创建一个 Slider (滑块) 控件,命名为 Slider_RecordingSignalVolume,供用户滑动音量条调节采集音量。在本示例中,设置最小值为 0 (静音),最大值为 100 (原始音量)。如下图所示:
![图片](/assets/images/volume-recording-umg-caede514879665f3c15b6db231b4c46f.png)
2. 绑定 UI 事件
创建 Bind Event to On Value Changed 节点,分别连接 Slider_RecordingSignalVolume 控件和 OnRecordingSignalVolumeValChanged 回调。当用户拖动音量条调节音频采集信号时,会触发 OnRecordingSignalVolumeValChanged 回调。如下图所示:
![图片](/assets/images/volume-recording-bind-771c27cb8e942b93c13a46fc48c12f33.png)
3. 实现 UI 事件
创建 OnRecordingSignalVolumeValChanged 回调函数,配置以下参数:
输入参数 | 数据类型 | 参数描述 |
---|---|---|
Value | Float | 采集音量。 |
触发该回调后,会获取并处理用户指定的采集音量、将该音量赋值给 Adjust Recording Signal Volume 的 Volume 参数,并调用 Adjust Recording Signal Volume 方法调节采集音量。如下图所示:
![图片](/assets/images/volume-recording-callback-4fa015858c8ba95046d211eb02b9a3ee.png)
获取用户音量(回调)
在音频采集、混音、播放的整个过程中,你都可以通过 FOnAudioVolumeIndication
回调获取频道内瞬时音量最高的三个用户(即说话者)的用户 ID 及他们的音量,返回的 uid
为 0 表示本地用户。你需要调用 EnableAudioVolumeIndication
方法开启人声检测功能才能收到该回调。
1. 创建 UMG
创建一个 Button (按钮) 控件,命名为 Btn_EnableAudioIndication,用户可以通过该按钮控制是否启用用户音量提示。如下图所示:
![图片](/assets/images/volume-indication-umg-8a0c90560baea6f18cbfe82035e18105.png)
2. 绑定 UI 事件
创建 Bind Event to On Clicked 节点,分别连接 Btn_EnableAudioIndication 控件和 OnVolumeIndicationClick 回调。当用户按下按钮开启音量提示时,会触发 OnVolumeIndicationClick 回调。如下图所示:
![图片](/assets/images/volume-indication-bind-f70d174412fc6d42300cecccb839fa0b.png)
3. 实现 UI 事件
创建 OnVolumeIndicationClick 回调函数。触发该回调后,会调用 Enable Audio Volume Indication 方法启用用户音量提示。在本示例中,设置音量提示的时间间隔 (Interval) 为 200 毫秒、平滑系数 (Smooth) 为 3 并勾选 Report Vad 开启人声检测功能。如下图所示:
![图片](/assets/images/volume-indication-callback-2ef647c9d39c589e75de0d21af24baf3.png)
4. 添加回调事件
-
创建 OnAudioVolumeIndication 回调函数,配置以下参数:
输入参数 数据类型 参数描述 speakers
Structure 用户音量信息,详见 FAudioVolumeInfo
。totalVolume
Integer 混音后的总音量。 -
添加对 OnAudioVolumeIndication 回调的监听,如下图所示:
-
按指定的时间间隔触发 OnAudioVolumeIndication 回调时,打印监听到的用户音量信息。如下图所示:
参考信息
本节提供在实现调整通话音量时可能需要的信息。
示例项目
声网在 GitHub 上提供了开源的 Blueprint 示例项目供你参考。如需了解如何实现调整通话音量,详见示例项目中的 JoinChannelAudio。
注意事项
使用采集设备采集音频信号时,SDK 默认使用采集设备音量为 85。音量 0 代表静音,音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低,SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求,你可以通调节麦克风或声卡采集的信号幅度,从而调节采集音量。