# 调整通话音量 (/zh-CN/realtime-media/rtc/build/audio/volume)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<_PlatformTabsGroup>
<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="android" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `adjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `setInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `adjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `adjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法]

### 调整播放音量 [#调整播放音量]

调用  `adjustPlaybackSignalVolume` 或 `adjustUserPlaybackSignalVolume` 调整音频播放信号的音量。

```java
int volume = 50;
int uid = 123456;
// 设置本地播放的所有远端用户音量
mRtcEngine.adjustPlaybackSignalVolume(volume);
// 设置本地播放的指定远端用户的音量，例如用户 123456
mRtcEngine.adjustUserPlaybackSignalVolume(uid, volume);
```

### 调整耳返音量 [#调整耳返音量]

在音频采集、混音、播放的整个过程中，你都可以调用 `setInEarMonitoringVolume` 调整耳返的音量。

```java
// 开启耳返功能
rtcEngine.enableInEarMonitoring(true);
int volume = 50;
// 调整耳返音量
rtcEngine.setInEarMonitoringVolume(volume);
```

### 获取用户音量（回调） [#获取用户音量回调]

在音频采集、混音、播放的整个过程中，你都可以通过 `onAudioVolumeIndication` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量。返回的 `uid` 为 0 表示本地用户。

:::warning[注意]
你需要开启 `enableAudioVolumeIndication` 方法才能收到该回调。
:::

  ```java
  private final IRtcEngineEventHandler mRtcEventHandler = new IRtcEngineEventHandler() {

        ...

        @override
        public void onAudioVolumeIndication(AudioVolumeInfo[] speakers, int totalVolume) {
        // 获取瞬时说话音量最高的三个用户（即说话者）的用户 ID、他们的音量及本地用户是否在说话
        }
  };

  ...

  // 启用 onAudioVolumeIndication 回调
  mRtcEngine.enableAudioVolumeIndication(1000, 3, true);
  ```

### 调整采集音量 [#调整采集音量]

调用 `adjustRecordingSignalVolume` 调整音频采集信号的音量。

```java
ChannelMediaOptions options = new ChannelMediaOptions();
options.clientRoleType = Constants.CLIENT_ROLE_BROADCASTER;
mRtcEngine.joinChannel(token, channelName, 1234, options);
int volume = 50;
// 调整采集信号音量
rtcEngine.adjustRecordingSignalVolume(volume);
```

## 注意事项 [#注意事项]

使用采集设备采集音频信号时，SDK 默认使用采集设备音量为 85。音量 0 代表静音，音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低，SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求，你可以通过调节麦克风或声卡采集的信号幅度，从而调节采集音量。

## 参考信息 [#参考信息]

### 示例项目 [#示例项目]

声网提供了调整采集、播放、耳返音量的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">JoinChannelAudio</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/blob/main/Android/APIExample/app/src/main/java/io/agora/api/example/examples/basic/JoinChannelAudio.java" />
  <Card title={<RepositoryCardTitle provider="github">JoinChannelAudio</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/blob/main/Android/APIExample/app/src/main/java/io/agora/api/example/examples/basic/JoinChannelAudio.java" />
</Cards>

### 参考文档 [#参考文档]

实现调整通话音量过程中，你还可以参考如下文档：

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考]

- [`adjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/android/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`adjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/android/audio/audio-basic#api_irtcengine_adjustplaybacksignalvolume)
- [`adjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/android/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`adjustAudioMixingPlayoutVolume`](/zh-CN/api-reference/rtc/android/play/audio-mixing#api_irtcengine_adjustaudiomixingplayoutvolume)
- [`enableInEarMonitoring`[2/2]](/zh-CN/api-reference/rtc/android/audio/audio-capture#api_irtcengine_enableinearmonitoring2)
- [`setInEarMonitoringVolume`](/zh-CN/api-reference/rtc/android/audio/audio-capture#api_irtcengine_setinearmonitoringvolume)
- [`onAudioVolumeIndication`](/zh-CN/api-reference/rtc/android/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="ios" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理-1]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `adjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `setInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `adjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `adjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件-1]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-1]

### 调整播放音量 [#调整播放音量-1]

调用 `adjustPlaybackSignalVolume` 或 `adjustUserPlaybackSignalVolume` 调整音频播放信号的音量。

```objc tab="Objective-C"
// 设置本地播放的所有远端用户音量
[agoraKit adjustPlaybackSignalVolume: 50];
// 设置本地播放的指定远端用户的音量
[agoraKit adjustUserPlaybackSignalVolume: uid, volume: 50];
```

```swift tab="Swift"
// 设置本地播放的所有远端用户音量
agoraKit.adjustPlaybackSignalVolume(50)
// 设置本地播放的指定远端用户的音量
agoraKit.adjustUserPlaybackSignalVolume(uid, volume: 50)
```

### 调整耳返音量 [#调整耳返音量-1]

在音频采集、混音、播放的整个过程中，你都可以调用 `setInEarMonitoringVolume` 调整耳返的音量。

```objc tab="Objective-C"
// 开启耳返功能
[agoraKit enableInEarMonitoring(true)];
// 调整耳返音量
[agoraKit setInEarMonitoringVolume: 50];
```

```swift tab="Swift"
// 开启耳返功能
agoraKit.enableInearMonitoring(true)
// 调整耳返音量
agoraKit.setInEarMonitoringVolume(50)
```

### 获取用户音量（回调） [#获取用户音量回调-1]

在音频采集、混音、播放的整个过程中，你都可以通过 `reportAudioVolumeIndicationOfSpeakers` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量。返回的 `uid` 为 0 表示本地用户。

:::warning[注意]
你需要开启 `enableAudioVolumeIndication` 方法才能收到该回调。
:::

```objc tab="Objective-C"
// 获取瞬时说话音量最高的三个用户（即说话者）的用户 ID、他们的音量及本地用户是否在说话
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine   reportAudioVolumeIndicationOfSpeakers:(NSArray<AgoraRtcAudioVolumeInfo*> *_Nonnull)  speakers totalVolume:(NSInteger)totalVolume {
}
```

```swift tab="Swift"
// 获取瞬时说话音量最高的三个用户（即说话者）的用户 ID、他们的音量及本地用户是否在说话
func rtcEngine(_ engine: AgoraRtcEngineKit, reportAudioVolumeIndicationOfSpeakers speakers:
[AgoraRtcAudioVolumeInfo], totalVolume: Int) {
}

// 启用用户音量提示
agoraKit.enableAudioVolumeIndication(200, smooth: 3, reportVad: true)
```

### 调整采集音量 [#调整采集音量-1]

调用 `adjustRecordingSignalVolume` 调整音频采集信号的音量。

```objc tab="Objective-C"
// 调整采集信号音量
[agoraKit adjustRecordingSignalVolume: 50];
```

```swift tab="Swift"
// 调整采集信号音量
agoraKit.adjustRecordingSignalVolume(50)
```

## 注意事项 [#注意事项-1]

使用采集设备采集音频信号时，SDK 默认使用采集设备音量为 85。音量 0 代表静音，音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低，SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求，你可以通过调节麦克风或声卡采集的信号幅度，从而调节采集音量。

## 参考信息 [#参考信息-1]

### 示例项目 [#示例项目-1]

声网提供了调整采集、播放、耳返音量的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">JoinChannelAudio</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/iOS/APIExample/APIExample/Examples/Basic/JoinChannelAudio" />
  <Card title={<RepositoryCardTitle provider="github">JoinChannelAudio</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/tree/main/iOS/APIExample/APIExample/Examples/Basic/JoinChannelAudio" />
</Cards>

如需调整混音或音效文件的播放音量，可以参考以下示例项目。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">AudioMixing</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/iOS/APIExample/APIExample/Examples/Advanced/AudioMixing" />
  <Card title={<RepositoryCardTitle provider="github">AudioMixing</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/tree/main/iOS/APIExample/APIExample/Examples/Advanced/AudioMixing" />
</Cards>

### 参考文档 [#参考文档-1]

实现调整通话音量过程中，你还可以参考如下文档：

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考-1]

- [`adjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/ios/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`adjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/ios/audio/audio-basic#api_irtcengine_adjustplaybacksignalvolume)
- [`adjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/ios/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`adjustAudioMixingPlayoutVolume`](/zh-CN/api-reference/rtc/ios/play/audio-mixing#api_irtcengine_adjustaudiomixingplayoutvolume)
- [`enableInEarMonitoring`[2/2]](/zh-CN/api-reference/rtc/ios/audio/audio-capture#api_irtcengine_enableinearmonitoring2)
- [`setInEarMonitoringVolume`](/zh-CN/api-reference/rtc/ios/audio/audio-capture#api_irtcengine_setinearmonitoringvolume)
- [`reportAudioVolumeIndicationOfSpeakers`](/zh-CN/api-reference/rtc/ios/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="macos" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理-2]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `adjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `setInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `adjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `adjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件-2]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-2]

### 调整播放音量 [#调整播放音量-2]

- 调用 `setDeviceVolume` 调整播放设备音量。`volume` 的值与 macOS 系统中音频设备属性里的值是一一对应的，255 对应下图中喇叭/耳机的音量值调到最右。

![macOS 播放设备音量设置示意图](https://web-cdn.agora.io/docs-files/1545124651243)

```objc tab="Objective-C"
// 调整播放设备音量为 50
[agoraKit setDeviceVolume: AgoraMediaDeviceTypeAudioPlayout volume: 50];
```

```swift tab="Swift"
// 调整播放设备音量为 50
agoraKit.setDeviceVolume(.audioPlayout, volume: 50)
```

- 调用  `adjustPlaybackSignalVolume` 或 `adjustUserPlaybackSignalVolume` 调整音频播放信号的音量。

```objc tab="Objective-C"
// 设置本地播放的所有远端用户音量
[agoraKit adjustPlaybackSignalVolume: 50];
// 设置本地播放的指定远端用户的音量
[agoraKit adjustUserPlaybackSignalVolume: uid, volume: 50];
```

```swift tab="Swift"
// 设置本地播放的所有远端用户音量
agoraKit.adjustPlaybackSignalVolume(50)
// 设置本地播放的指定远端用户的音量
agoraKit.adjustUserPlaybackSignalVolume(uid, volume: 50)
```

### 获取用户音量（回调） [#获取用户音量回调-2]

在音频采集、混音、播放的整个过程中，你都可以通过 `reportAudioVolumeIndicationOfSpeakers` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量。返回的 `uid` 为 0 表示本地用户。

:::warning[注意]
你需要开启 `enableAudioVolumeIndication` 方法才能收到该回调。
:::

```objc tab="Objective-C"
// 获取瞬时说话音量最高的三个用户（即说话者）的用户 ID、他们的音量及本地用户是否在说话
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine   reportAudioVolumeIndicationOfSpeakers:(NSArray<AgoraRtcAudioVolumeInfo*> *_Nonnull)  speakers totalVolume:(NSInteger)totalVolume {
}
```

```swift tab="Swift"
// 获取瞬时说话音量最高的三个用户（即说话者）的用户 ID、他们的音量及本地用户是否在说话
func rtcEngine(_ engine: AgoraRtcEngineKit, reportAudioVolumeIndicationOfSpeakers speakers:
[AgoraRtcAudioVolumeInfo], totalVolume: Int) {
}

// 启用用户音量提示
agoraKit.enableAudioVolumeIndication(200, smooth: 3, reportVad: true)
```

### 调整采集音量 [#调整采集音量-2]

- 调用 `setDeviceVolume` 调整采集设备音量。`volume` 的值与 macOS 系统中音频设备属性里的值是一一对应的，255 对应下图中麦克风阵列的音量值调到最右。

![macOS 采集设备音量设置示意图](https://web-cdn.agora.io/docs-files/1545124630783)

```objc tab="Objective-C"
// 调整采集设备音量为 50
[agoraKit setDeviceVolume: AgoraMediaDeviceTypeAudioRecording volume: 50];
```

```swift tab="Swift"
// 调整采集设备音量为 50
agoraKit.setDeviceVolume(.audioRecording, volume: 50)
```

- 调用 `adjustRecordingSignalVolume` 调整音频采集信号的音量。

```objc tab="Objective-C"
// 调整采集信号音量
[agoraKit adjustRecordingSignalVolume: 50];
```

```swift tab="Swift"
// 调整采集信号音量
agoraKit.adjustRecordingSignalVolume(50)
```

## 注意事项 [#注意事项-2]

使用采集设备采集音频信号时，SDK 默认使用采集设备音量为 85。音量 0 代表静音，音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低，SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求，你可以通过调节麦克风或声卡采集的信号幅度来调整采集音量。

## 参考信息 [#参考信息-2]

### 示例项目 [#示例项目-2]

声网提供了调整采集、播放、耳返音量的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">JoinChannelAudio</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/blob/main/macOS/APIExample/Examples/Basic/JoinChannelAudio/JoinChannelAudio.swift" />
  <Card title={<RepositoryCardTitle provider="github">JoinChannelAudio</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/blob/main/macOS/APIExample/Examples/Basic/JoinChannelAudio/JoinChannelAudio.swift" />
</Cards>

如需调整混音或音效文件的播放音量，可以参考以下示例项目。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">AudioMixing</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/macOS/APIExample/Examples/Advanced/AudioMixing" />
  <Card title={<RepositoryCardTitle provider="github">AudioMixing</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/tree/main/macOS/APIExample/Examples/Advanced/AudioMixing" />
</Cards>

### 参考文档 [#参考文档-2]

实现调整通话音量过程中，你还可以参考如下文档：

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考-2]

- [`setDeviceVolume`](/zh-CN/api-reference/rtc/macos/device-management/common-device#api_irtcengine_setdevicevolume)
- [`adjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/macos/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`adjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/macos/audio/audio-basic#api_irtcengine_adjustplaybacksignalvolume)
- [`adjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/macos/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`adjustAudioMixingPlayoutVolume`](/zh-CN/api-reference/rtc/macos/play/audio-mixing#api_irtcengine_adjustaudiomixingplayoutvolume)
- [`reportAudioVolumeIndicationOfSpeakers`](/zh-CN/api-reference/rtc/macos/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="web" />
在使用声网 Web SDK 时，你可以对 SDK 采集到的声音及 SDK 播放的声音音量进行调整，以满足产品在声音上的个性化需求。比如进行双人通话时，可以通过这个功能调整麦克风采集音量或者远端用户音量。

## 前提条件 [#前提条件-3]

开始前，请确保你已参考[快速开始](/zh-CN/realtime-media/rtc/get-started/quick-start)在你的项目中实现基本的实时音视频功能。
## 实现方法 [#实现方法-3]

SDK 为本地音频轨道和远端音频轨道对象分别提供 `setVolume` 方法用于调整本地音频的采集音量和远端音频的播放音量。

**调节远端音频的播放音量**

以下示例中 `remoteUser` 是指已订阅的远端用户对象。

```javascript
// 将音量减少一半
remoteUser.audioTrack.setVolume(50);
// 使用原始音量
remoteUser.audioTrack.setVolume(100);
// 将远端音量设置为 0
remoteUser.audioTrack.setVolume(0);
```

**调节本地音频的采集音量**

以下示例中 `localAudioTrack` 是指自己创建的本地音频轨道对象。

```javascript
AgoraRTC.createMicrophoneAudioTrack().then(localAudioTrack => {
  // 麦克风音量减半
  localAudioTrack.setVolume(50);
  // 麦克风音量增大一倍
  localAudioTrack.setVolume(200);
  // 将麦克风音量设置为 0
  localAudioTrack.setVolume(0);
});
```

## 参考信息 [#参考信息-3]
### 开发注意事项 [#开发注意事项]

音量设置太大在某些设备上可能出现爆音现象。

### API 参考 [#api-参考-3]

- [`LocalAudioTrack.setVolume`](/zh-CN/api-reference/rtc/web/interfaces/ilocalaudiotrack#setvolume)
- [`RemoteAudioTrack.setVolume`](/zh-CN/api-reference/rtc/web/interfaces/iremoteaudiotrack#setvolume)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="windows" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理-3]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `adjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `setInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `adjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `adjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件-4]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-4]

### 调整播放音量 [#调整播放音量-3]

调用  `adjustPlaybackSignalVolume` 或 `adjustUserPlaybackSignalVolume` 调整音频播放信号的音量。

```cpp
// 设置本地播放的所有远端用户音量为 50
int vol = 50;
m_rtcEngine->adjustPlaybackSignalVolume(vol);
// 设置本地播放的指定远端用户的音量为 90
m_rtcEngine->adjustUserPlaybackSignalVolume(uid, 90);
```

### 获取用户音量（回调） [#获取用户音量回调-3]

在音频采集、混音、播放的整个过程中，你都可以通过 `onAudioVolumeIndication` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量。返回的 `uid` 为 0 表示本地用户。

:::warning[注意]
你需要开启 `enableAudioVolumeIndication` 方法才能收到该回调。
:::

```cpp
// 获取瞬时说话音量最高的三个用户（即说话者）的用户 ID、他们的音量及本地用户是否在说话
void CAudioVolumeEventHandler::onAudioVolumeIndication(const AudioVolumeInfo * speakers, unsigned int speakerNumber, int totalVolume){
}

// 启用 onAudioVolumeIndication 回调
m_rtcEngine->enableAudioVolumeIndication(1000, 0, true);
```

### 调整采集音量 [#调整采集音量-3]

调用 `adjustRecordingSignalVolume` 调整音频采集信号的音量。

```cpp
// 调整采集信号音量为 50
int vol = 50;
m_rtcEngine->adjustRecordingSignalVolume(vol);
```

## 注意事项 [#注意事项-3]

使用采集设备采集音频信号时，SDK 默认使用采集设备音量为 85。音量 0 代表静音，音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低，SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求，你可以通过调节麦克风或声卡采集的信号幅度来调整采集音量。

## 参考信息 [#参考信息-4]

### 示例项目 [#示例项目-3]

声网提供了调整采集、播放、耳返音量的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">AudioVolume</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/windows/APIExample/APIExample/Advanced/AudioVolume" />
  <Card title={<RepositoryCardTitle provider="github">AudioVolume</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/tree/main/windows/APIExample/APIExample/Advanced/AudioVolume" />
</Cards>

如需调整混音或音效文件的播放音量，可以参考以下示例项目。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">AudioMixing</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/windows/APIExample/APIExample/Advanced/AudioMixing" />
  <Card title={<RepositoryCardTitle provider="github">AudioMixing</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/tree/main/windows/APIExample/APIExample/Advanced/AudioMixing" />

  <Card title={<RepositoryCardTitle provider="gitee">AudioEffect</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/windows/APIExample/APIExample/Advanced/AudioEffect" />
  <Card title={<RepositoryCardTitle provider="github">AudioEffect</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/tree/main/windows/APIExample/APIExample/Advanced/AudioEffect" />
</Cards>

### 参考文档 [#参考文档-3]

实现调整通话音量过程中，你还可以参考如下文档：

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考-4]

- [`adjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`adjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_adjustplaybacksignalvolume)
- [`adjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`adjustAudioMixingPlayoutVolume`](/zh-CN/api-reference/rtc/cpp-all-platforms/play/audio-mixing#api_irtcengine_adjustaudiomixingplayoutvolume)
- [`setInEarMonitoringVolume`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-capture#api_irtcengine_setinearmonitoringvolume)
- [`onAudioVolumeIndication`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="harmonyos" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理-4]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `adjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `setInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `adjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `adjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件-5]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-5]

### 调整播放音量 [#调整播放音量-4]

调用 `adjustPlaybackSignalVolume` 或 `adjustUserPlaybackSignalVolume` 调整音频播放信号的音量。

```arkts
let volume = 50;
let uid = 123456;
// 设置本地播放的所有远端用户音量
this.rtcEngine?.adjustPlaybackSignalVolume(volume);
// 设置本地播放的指定远端用户的音量，例如用户 123456
this.rtcEngine?.adjustUserPlaybackSignalVolume(uid, volume);
```

### 调整耳返音量 [#调整耳返音量-2]

调用 `enableInEarMonitoring` 开启耳返功能后，在音频采集、混音、播放的整个过程中，你都可以调用 `setInEarMonitoringVolume` 调整耳返的音量。

```arkts
// 开启耳返功能
this.rtcEngine?.enableInEarMonitoring(true, 1);
let volume = 50;
// 调整耳返音量
this.rtcEngine?.setInEarMonitoringVolume(volume);
```

### 获取用户音量（回调） [#获取用户音量回调-4]

在音频采集、混音、播放的整个过程中，你都可以通过 `onAudioVolumeIndication` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量。返回的 `uid` 为 0 表示本地用户。

:::warning[注意]
你需要开启 `enableAudioVolumeIndication` 方法才能收到该回调。
:::

```arkts
let config: RtcEngineConfig = new RtcEngineConfig();
config.mEventHandler.onAudioVolumeIndication = (speakers: Array<AudioVolumeInfo>, totalVolume: number) => {
  Logger.info(TAG, `onAudioVolumeIndication totalVolume:${totalVolume} speakers:${JSON.stringify(speakers)}`)
};
this.rtcEngine = RtcEngine.create(config);
this.rtcEngine.enableAudioVolumeIndication(1000, 3, true);
```

### 调整采集音量 [#调整采集音量-4]

调用 `adjustRecordingSignalVolume` 调整音频采集信号的音量。

```arkts
let volume = 50;
// 调整采集信号音量
this.rtcEngine?.adjustRecordingSignalVolume(volume);
```

## 注意事项 [#注意事项-4]

使用采集设备采集音频信号时，SDK 默认使用采集设备音量为 85。音量 0 代表静音，音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低，SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求，你可以通过调节麦克风或声卡采集的信号幅度，从而调节采集音量。

## 相关参考 [#相关参考]

本节提供在实现调整通话音量时可能需要的文档。

### 示例项目 [#示例项目-4]

声网提供了调整采集、播放、耳返音量的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">JoinAudioChannel</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/HarmonyOS/APIExample/entry/src/main/ets/pages/basic/JoinAudioChannel.ets" />
  <Card title={<RepositoryCardTitle provider="github">JoinAudioChannel</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/tree/main/HarmonyOS/APIExample/entry/src/main/ets/pages/basic/JoinAudioChannel.ets" />
</Cards>

### 参考文档 [#参考文档-4]

实现调整通话音量过程中，你还可以参考如下文档：

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考-5]

- [`adjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`adjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/harmonyos/play/audio-mixing#api_irtcengine_adjustplaybacksignalvolume)
- [`adjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`enableInEarMonitoring`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-capture#api_irtcengine_enableinearmonitoring2)
- [`setInEarMonitoringVolume`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-capture#api_irtcengine_setinearmonitoringvolume)
- [`enableAudioVolumeIndication`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-basic#api_irtcengine_enableaudiovolumeindication)
- [`onAudioVolumeIndication`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="electron" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理-5]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `adjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `setInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `adjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `adjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件-6]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-6]

### 调整播放音量 [#调整播放音量-5]

调用 `adjustPlaybackSignalVolume` 或 `adjustUserPlaybackSignalVolume` 调整音频播放信号的音量。

```typescript
//设置播放音量为50
engine.adjustPlaybackSignalVolume(50);
 
//指定uid为12的远端用户，音量设置为50
engine.adjustUserPlaybackSignalVolume(12, 50);
```

### 获取用户音量（回调） [#获取用户音量回调-5]

在音频采集、混音、播放的整个过程中，你都可以通过 `onAudioVolumeIndication` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量。返回的 `uid` 为 0 表示本地用户。

:::warning[注意]
你需要开启 `enableAudioVolumeIndication` 方法才能收到该回调。
:::

```typescript
// 获取瞬时说话音量最高的三个用户（即说话者）的用户 ID、他们的音量及本地用户是否在说话
onAudioVolumeIndication?(
    connection: RtcConnection,
    speakers: AudioVolumeInfo[],
    speakerNumber: number,
    totalVolume: number
  ): void;
```

### 调整采集音量 [#调整采集音量-5]

调用 `adjustRecordingSignalVolume` 调整音频采集信号的音量。

```typescript
// 调整采集信号音量为 50
engine.adjustRecordingSignalVolume(50);
```

## 注意事项 [#注意事项-5]

使用采集设备采集音频信号时，SDK 默认使用采集设备音量为 85。音量 0 代表静音，音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低，SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求，你可以通过调节麦克风或声卡采集的信号幅度，从而调节采集音量。

## 参考信息 [#参考信息-5]

### 示例项目 [#示例项目-5]

声网提供了调整采集、播放、耳返音量的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">JoinChannelAudio</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/Electron-SDK/blob/main/example/src/renderer/examples/basic/JoinChannelAudio/JoinChannelAudio.tsx" />
  <Card title={<RepositoryCardTitle provider="github">JoinChannelAudio</RepositoryCardTitle>} href="https://github.com/AgoraIO-Extensions/Electron-SDK/blob/main/example/src/renderer/examples/basic/JoinChannelAudio/JoinChannelAudio.tsx" />
</Cards>

如需调整混音或音效文件的播放音量，可以参考以下示例项目。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">AudioMixing</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/Electron-SDK/blob/main/example/src/renderer/examples/advanced/AudioMixing/AudioMixing.tsx" />
  <Card title={<RepositoryCardTitle provider="github">AudioMixing</RepositoryCardTitle>} href="https://github.com/AgoraIO-Extensions/Electron-SDK/blob/main/example/src/renderer/examples/advanced/AudioMixing/AudioMixing.tsx" />
</Cards>

### 参考文档 [#参考文档-5]

实现调整通话音量过程中，你还可以参考如下文档：

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考-6]

- [`adjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/electron/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`adjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_adjustplaybacksignalvolume)
- [`adjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`adjustAudioMixingPlayoutVolume`](/zh-CN/api-reference/rtc/electron/play/audio-mixing#api_irtcengine_adjustaudiomixingplayoutvolume)
- [`onAudioVolumeIndication`](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="unity" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理-6]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `AdjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `SetInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `AdjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `AdjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件-7]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-7]

### 调整播放音量 [#调整播放音量-6]

调用  `AdjustPlaybackSignalVolume` 或 `AdjustUserPlaybackSignalVolume` 调整音频播放信号的音量。

```csharp
// 设置本地播放的所有远端用户音量为 50
RtcEngine.AdjustPlaybackSignalVolume(50);

// 指定 uid 为 12 的远端用户在本地播放的音量为 50
RtcEngine.AdjustUserPlaybackSignalVolume(12, 50);
```

### 获取用户音量（回调） [#获取用户音量回调-6]

在音频采集、混音、播放的整个过程中，你都可以通过 `OnAudioVolumeIndication` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量。返回的 `uid` 为 0 表示本地用户。

:::warning[注意]
你需要调用 `EnableAudioVolumeIndication` 方法启用用户音量提示后才能收到该回调。
:::

```csharp
RtcEngine = Agora.Rtc.RtcEngine.CreateAgoraRtcEngine();
UserEventHandler handler = new UserEventHandler(this);
RtcEngineContext context = new RtcEngineContext(
    _appID,
    0,
    CHANNEL_PROFILE_TYPE.CHANNEL_PROFILE_LIVE_BROADCASTING,
    AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_DEFAULT
);
RtcEngine.Initialize(context);

// 设置监听回调
RtcEngine.InitEventHandler(handler);

// 启用用户音量提示
RtcEngine.EnableAudioVolumeIndication(1, 1, true);

class UserEventHandler : IRtcEngineEventHandler
{
    // 该回调会根据你在 EnableAudioVolumeIndication 中设置的时间间隔触发，并报告频道内瞬时音量最高的三个用户
    public override void OnAudioVolumeIndication(
        RtcConnection connection,
        AudioVolumeInfo[] speakers,
        uint speakerNumber,
        int totalVolume
    ) { }
}
```

### 调整采集音量 [#调整采集音量-6]

调用 `AdjustRecordingSignalVolume` 调整音频采集信号的音量。

  ```csharp
// 设置采集信号音量为 50
RtcEngine.AdjustRecordingSignalVolume(50);
  ```

## 注意事项 [#注意事项-6]

使用采集设备采集音频信号时，SDK 默认使用采集设备音量为 85。音量 0 代表静音，音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低，SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求，你可以通过调节麦克风或声卡采集的信号幅度来调整采集音量。

## 参考信息 [#参考信息-6]

### 示例项目 [#示例项目-6]

声网提供了调整采集、播放、耳返音量的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">AudioMixing</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/Agora-Unity-Quickstart/tree/main/API-Example-Unity/Assets/API-Example/Examples/Advanced/AudioMixing" />
  <Card title={<RepositoryCardTitle provider="github">AudioMixing</RepositoryCardTitle>} href="https://github.com/AgoraIO-Extensions/Agora-Unity-Quickstart/tree/main/API-Example-Unity/Assets/API-Example/Examples/Advanced/AudioMixing" />
</Cards>

### 参考文档 [#参考文档-6]

实现调整通话音量过程中，你还可以参考如下示例项目及文档：

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考-7]

- [`AdjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/unity/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`AdjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/unity/audio/audio-basic#api_irtcengine_adjustplaybacksignalvolume)
- [`AdjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/unity/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`AdjustAudioMixingPlayoutVolume`](/zh-CN/api-reference/rtc/unity/play/audio-mixing#api_irtcengine_adjustaudiomixingplayoutvolume)
- [`OnAudioVolumeIndication`](/zh-CN/api-reference/rtc/unity/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="flutter" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理-7]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `adjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `setInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `adjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `adjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件-8]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-8]

### 调整播放音量 [#调整播放音量-7]

调用 `adjustPlaybackSignalVolume` 或 `adjustUserPlaybackSignalVolume` 调整音频播放信号的音量。

```dart
const int volume = 50;
// 设置本地播放的所有远端用户音量为 50
await rtcEngine.adjustPlaybackSignalVolume(volume);
// 设置本地播放的指定远端用户的音量为 50
await rtcEngine.adjustUserPlaybackSignalVolume(uid: 1000, volume: volume);
```

### 获取用户音量（回调） [#获取用户音量回调-7]

在音频采集、混音、播放的整个过程中，你都可以通过 `onAudioVolumeIndication` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量。返回的 `uid` 为 0 表示本地用户。

:::warning[注意]
你需要开启 `enableAudioVolumeIndication` 方法才能收到该回调。
:::

```dart
// 获取瞬时说话音量最高的三个用户（即说话者）的用户 ID、他们的音量及本地用户是否在说话
rtcEngine.registerEventHandler(RtcEngineEventHandler(
onAudioVolumeIndication: (RtcConnection connection,
    List<AudioVolumeInfo> speakers, int speakerNumber, int totalVolume) {
  logSink.log(
    '[onAudioVolumeIndication] speakers: ${speakers.toString()}, speakerNumber: $speakerNumber, totalVolume: $totalVolume');
  }
));
```

### 调整采集音量 [#调整采集音量-7]

调用 `adjustRecordingSignalVolume` 调整音频采集信号的音量。

```dart
// 调整采集信号音量为 50
int vol = 50;
await _rtcEngine->adjustRecordingSignalVolume(vol);
```

## 参考信息 [#参考信息-7]

### 示例项目 [#示例项目-7]

声网提供了调整采集、播放、耳返音量的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">join_channel_audio.dart</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/Agora-Flutter-SDK/blob/main/example/lib/examples/basic/join_channel_audio/join_channel_audio.dart" />
  <Card title={<RepositoryCardTitle provider="github">join_channel_audio.dart</RepositoryCardTitle>} href="https://github.com/AgoraIO-Extensions/Agora-Flutter-SDK/blob/main/example/lib/examples/basic/join_channel_audio/join_channel_audio.dart" />
</Cards>

如需调整混音或音效文件的播放音量，可以参考以下示例项目。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">audio_effect_mixing.dart</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/Agora-Flutter-SDK/blob/main/example/lib/examples/advanced/audio_effect_mixing/audio_effect_mixing.dart" />
  <Card title={<RepositoryCardTitle provider="github">audio_effect_mixing.dart</RepositoryCardTitle>} href="https://github.com/AgoraIO-Extensions/Agora-Flutter-SDK/blob/main/example/lib/examples/advanced/audio_effect_mixing/audio_effect_mixing.dart" />
</Cards>

### 参考文档 [#参考文档-7]

实现调整通话音量过程中，你还可以参考如下文档：

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考-8]

- [`adjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/flutter/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`adjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/flutter/audio/audio-basic#api_irtcengine_adjustplaybacksignalvolume)
- [`adjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/flutter/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`adjustAudioMixingPlayoutVolume`](/zh-CN/api-reference/rtc/flutter/play/audio-mixing#api_irtcengine_adjustaudiomixingplayoutvolume)
- [`onAudioVolumeIndication`](/zh-CN/api-reference/rtc/flutter/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="react-native" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理-8]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `adjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `setInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `adjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `adjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件-9]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-9]

### 调整播放音量 [#调整播放音量-8]

调用 `adjustPlaybackSignalVolume` 或 `adjustUserPlaybackSignalVolume` 调整音频播放信号的音量。

```typescript
//设置播放音量为50
engine.adjustPlaybackSignalVolume(50);
 
//指定uid为12的远端用户，音量设置为50
engine.adjustUserPlaybackSignalVolume(12, 50);
```

### 获取用户音量（回调） [#获取用户音量回调-8]

在音频采集、混音、播放的整个过程中，你都可以通过 `onAudioVolumeIndication` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量。返回的 `uid` 为 0 表示本地用户。

:::warning[注意]
你需要开启 `enableAudioVolumeIndication` 方法才能收到该回调。
:::

```typescript
// 获取瞬时说话音量最高的三个用户（即说话者）的用户 ID、他们的音量及本地用户是否在说话
onAudioVolumeIndication?(
    connection: RtcConnection,
    speakers: AudioVolumeInfo[],
    speakerNumber: number,
    totalVolume: number
  ): void;
```

### 调整采集音量 [#调整采集音量-8]

调用 `adjustRecordingSignalVolume` 调整音频采集信号的音量。

```typescript
// 调整采集信号音量为 50
engine.adjustRecordingSignalVolume(50);
```

## 注意事项 [#注意事项-7]

使用采集设备采集音频信号时，SDK 默认使用采集设备音量为 85。音量 0 代表静音，音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低，SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求，你可以通过调节麦克风或声卡采集的信号幅度来调整采集音量。

## 参考信息 [#参考信息-8]

### 示例项目 [#示例项目-8]

声网提供了调整采集、播放、耳返音量的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">JoinChannelAudio</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/react-native-agora/blob/main/example/src/examples/basic/JoinChannelAudio/JoinChannelAudio.tsx" />
  <Card title={<RepositoryCardTitle provider="github">JoinChannelAudio</RepositoryCardTitle>} href="https://github.com/AgoraIO-Extensions/react-native-agora/blob/main/examples/legacy/src/examples/basic/JoinChannelAudio/JoinChannelAudio.tsx" />
</Cards>

如需调整混音或音效文件的播放音量，可以参考以下示例项目。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">AudioMixing</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/react-native-agora/blob/main/example/src/examples/advanced/AudioMixing/AudioMixing.tsx" />
  <Card title={<RepositoryCardTitle provider="github">AudioMixing</RepositoryCardTitle>} href="https://github.com/AgoraIO-Extensions/react-native-agora/blob/main/examples/legacy/src/examples/advanced/AudioMixing/AudioMixing.tsx" />
</Cards>

### 参考文档 [#参考文档-8]

实现调整通话音量过程中，你还可以参考如下文档：

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考-9]

- [`adjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/react-native/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`adjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/react-native/audio/audio-basic#api_irtcengine_adjustplaybacksignalvolume)
- [`adjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/react-native/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`adjustAudioMixingPlayoutVolume`](/zh-CN/api-reference/rtc/react-native/play/audio-mixing#api_irtcengine_adjustaudiomixingplayoutvolume)
- [`onAudioVolumeIndication`](/zh-CN/api-reference/rtc/react-native/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="unreal" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理-9]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `adjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `setInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `adjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `adjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件-10]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-10]

### 调整播放音量 [#调整播放音量-9]

调用  `adjustPlaybackSignalVolume` 或 `adjustUserPlaybackSignalVolume` 调整音频播放信号的音量。

```cpp
// 设置本地播放的所有远端用户音量为 50
int vol = 50;
m_rtcEngine->adjustPlaybackSignalVolume(vol);
// 设置本地播放的指定远端用户的音量为 90
m_rtcEngine->adjustUserPlaybackSignalVolume(uid, 90);
```

### 获取用户音量（回调） [#获取用户音量回调-9]

在音频采集、混音、播放的整个过程中，你都可以通过 `onAudioVolumeIndication` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量。返回的 `uid` 为 0 表示本地用户。

:::warning[注意]
你需要开启 `enableAudioVolumeIndication` 方法才能收到该回调。
:::

```cpp
// 获取瞬时说话音量最高的三个用户（即说话者）的用户 ID、他们的音量及本地用户是否在说话
void CAudioVolumeEventHandler::onAudioVolumeIndication(const AudioVolumeInfo * speakers, unsigned int speakerNumber, int totalVolume){
}

// 启用 onAudioVolumeIndication 回调
m_rtcEngine->enableAudioVolumeIndication(1000, 0, true);
```

### 调整采集音量 [#调整采集音量-9]

调用 `adjustRecordingSignalVolume` 调整音频采集信号的音量。

```cpp
// 调整采集信号音量为 50
int vol = 50;
m_rtcEngine->adjustRecordingSignalVolume(vol);
```

## 注意事项 [#注意事项-8]

使用采集设备采集音频信号时，SDK 默认使用采集设备音量为 85。音量 0 代表静音，音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低，SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求，你可以通过调节麦克风或声卡采集的信号幅度来调整采集音量。

## 参考信息 [#参考信息-9]

### 示例项目 [#示例项目-9]

声网提供了开源的示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title="Unreal C++ 示例项目" href="https://github.com/AgoraIO-Extensions/Agora-Unreal-RTC-SDK/tree/main/Agora-Unreal-SDK-CPP-Example" />
</Cards>

### 参考文档 [#参考文档-9]

实现调整通话音量过程中，你还可以参考如下文档：

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考-10]

- [`adjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`adjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/unreal-cpp/play/audio-mixing#api_irtcengine_adjustplaybacksignalvolume)
- [`adjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`adjustAudioMixingPlayoutVolume`](/zh-CN/api-reference/rtc/unreal-cpp/play/audio-mixing#api_irtcengine_adjustaudiomixingplayoutvolume)
- [`setInEarMonitoringVolume`](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-capture#api_irtcengine_setinearmonitoringvolume)
- [`onAudioVolumeIndication`](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="blueprint" />
本文介绍如何设置音频采集和播放、以及耳返播放的音量。为了更好地理解这些操作，你需要先了解以下与通话音量相关的基础概念：

- **采集**是指音频信号经由采集设备采集后，传输到发送端的过程。
- **播放**是指音频信号从接收端传输到播放设备后，通过播放设备进行播放的过程。
- **耳返**是指将采集到的音频信号实时回传并通过耳机播放的过程。

## 技术原理 [#技术原理-10]

声网 SDK 支持对 SDK 采集和播放的音频音量进行调整，以满足用户实际应用场景。例如，进行双人通话时，需要静音远端用户，可以通过调整播放音量的方法将音量设置为 0。下图展示了调整音量的工作流程：

<DocsImage alt="调节通话音量" src="https://web-cdn.agora.io/docs-portal/img/rtc/volume.png" displayWidth="90%" />

- ①：调用 `AdjustRecordingSignalVolume` 调节音频采集信号音量。
- ②：调用 `SetInEarMonitoringVolume` 设置耳返音量。
- ③：调用 `AdjustUserPlaybackSignalVolume` 调节本地播放的指定远端用户信号音量。
- ④：调用 `AdjustPlaybackSignalVolume` 调节本地播放的所有远端用户信号音量。

:::warning[注意]
如果使用调整信号音量的方法将音量设置过大，在某些设备上可能会出现音频失真。
:::

## 前提条件 [#前提条件-11]

在实现调整通话音量前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-11]

### 调整播放音量 [#调整播放音量-10]

本小节介绍如何调用 `AdjustPlaybackSignalVolume` 调整音频播放信号的音量。

#### 1. 创建 UMG [#1-创建-umg]

创建一个 **Slider** (滑块) 控件，命名为 **Slider_PlaybackSignalVolume**，供用户拖动音量条调节播放音量。在本示例中，设置最小值为 0 (静音)，最大值为 100 (原始音量)。如下图所示：

![播放音量滑块控件示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-playback-umg.png)

#### 2. 绑定 UI 事件 [#2-绑定-ui-事件]

创建 **Bind Event to On Value Changed** 节点，分别连接 **Slider_PlaybackSignalVolume** 控件和 **OnPlaybackSignalVolumeValChanged** 回调。当用户拖动音量条调节音频播放信号时，会触发 **OnPlaybackSignalVolumeValChanged** 回调。如下图所示：

![播放音量绑定事件示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-playback-bind.png)

#### 3. 实现回调函数 [#3-实现回调函数]

创建 **OnPlaybackSignalVolumeValChanged** 回调函数，配置以下参数：

  | 输入参数 | 数据类型 | 参数描述 |
  |:-------|:--------|:---------|
  | `Value` | Float | 播放音量。 |

触发该回调后，会获取并处理用户指定的播放音量、将该音量赋值给 **Adjust Playback Signal Volume** 的 **Volume** 参数，并调用 **Adjust Playback Signal Volume** 方法调节播放音量。如下图所示：

![播放音量回调处理示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-playback-callback.png)

### 调整采集音量 [#调整采集音量-10]

本小节介绍如何调用 `AdjustRecordingSignalVolume` 调整音频采集信号的音量。

#### 1. 创建 UMG [#1-创建-umg-1]

创建一个 **Slider** (滑块) 控件，命名为 **Slider_RecordingSignalVolume**，供用户滑动音量条调节采集音量。在本示例中，设置最小值为 0 (静音)，最大值为 100 (原始音量)。如下图所示：

![采集音量滑块控件示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-recording-umg.png)

#### 2. 绑定 UI 事件 [#2-绑定-ui-事件-1]

创建 **Bind Event to On Value Changed** 节点，分别连接 **Slider_RecordingSignalVolume** 控件和 **OnRecordingSignalVolumeValChanged** 回调。当用户拖动音量条调节音频采集信号时，会触发 **OnRecordingSignalVolumeValChanged** 回调。如下图所示：

![采集音量绑定事件示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-recording-bind.png)

#### 3. 实现 UI 事件 [#3-实现-ui-事件]

创建 **OnRecordingSignalVolumeValChanged** 回调函数，配置以下参数：

  | 输入参数 | 数据类型 | 参数描述 |
  |:-------|:--------|:---------|
  | `Value` | Float | 采集音量。 |

触发该回调后，会获取并处理用户指定的采集音量、将该音量赋值给 **Adjust Recording Signal Volume** 的 **Volume** 参数，并调用 **Adjust Recording Signal Volume** 方法调节采集音量。如下图所示：

![采集音量回调处理示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-recording-callback.png)

### 获取用户音量（回调） [#获取用户音量回调-10]

在音频采集、混音、播放的整个过程中，你都可以通过 `FOnAudioVolumeIndication` 回调获取频道内瞬时音量最高的三个用户（即说话者）的用户 ID 及他们的音量，返回的 `uid` 为 0 表示本地用户。你需要调用 `EnableAudioVolumeIndication` 方法开启人声检测功能才能收到该回调。

#### 1. 创建 UMG [#1-创建-umg-2]

创建一个 **Button** (按钮) 控件，命名为 **Btn_EnableAudioIndication**，用户可以通过该按钮控制是否启用用户音量提示。如下图所示：

![启用用户音量提示按钮示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-indication-umg.png)

#### 2. 绑定 UI 事件 [#2-绑定-ui-事件-2]

创建 **Bind Event to On Clicked** 节点，分别连接 **Btn_EnableAudioIndication** 控件和 **OnVolumeIndicationClick** 回调。当用户按下按钮开启音量提示时，会触发 **OnVolumeIndicationClick** 回调。如下图所示：

![用户音量提示绑定事件示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-indication-bind.png)

#### 3. 实现 UI 事件 [#3-实现-ui-事件-1]

创建 **OnVolumeIndicationClick** 回调函数。触发该回调后，会调用 **Enable Audio Volume Indication** 方法启用用户音量提示。在本示例中，设置音量提示的时间间隔 (**Interval**) 为 200 毫秒、平滑系数 (**Smooth**) 为 3 并勾选 **Report Vad** 开启人声检测功能。如下图所示：

![启用用户音量提示蓝图示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-indication-callback.png)

#### 4. 添加回调事件 [#4-添加回调事件]

1. 创建 **OnAudioVolumeIndication** 回调函数，配置以下参数：

    | 输入参数 | 数据类型 | 参数描述 |
    |:-------|:--------|:---------|
    | `speakers` | Structure | 用户音量信息，详见 [`FAudioVolumeInfo`](/zh-CN/api-reference/rtc/unreal-blueprint/class-audiovolumeinfo)。 |
    | `totalVolume` | Integer | 混音后的总音量。 |

2. 添加对 **OnAudioVolumeIndication** 回调的监听，如下图所示：

![用户音量回调事件监听示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-indication-event.png)

3. 按指定的时间间隔触发 **OnAudioVolumeIndication** 回调时，打印监听到的用户音量信息。如下图所示：

![用户音量回调日志示意图](https://web-cdn.agora.io/docs-portal/img/rtc/volume-indication-log.png)

## 参考信息 [#参考信息-10]

### 示例项目 [#示例项目-10]

声网提供了开源的示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title="Blueprint 示例项目" href="https://github.com/AgoraIO-Extensions/Agora-Unreal-RTC-SDK/tree/main/Agora-Unreal-SDK-Blueprint-Example" />
  <Card title="JoinChannelAudio" href="https://github.com/AgoraIO-Extensions/Agora-Unreal-RTC-SDK/tree/main/Agora-Unreal-SDK-Blueprint-Example/Content/API-Example/Basic/JoinChannelAudio" />
</Cards>

### 注意事项 [#注意事项-9]

使用采集设备采集音频信号时，SDK 默认使用采集设备音量为 85。音量 0 代表静音，音量 255 代表设备的最大音量。如果 SDK 检测到采集设备音量在当前环境中过低，SDK 会自动提高采集设备音量。采集设备音量影响设备的全局音量。如果采集设备音量无法满足你的需求，你可以通过调节麦克风或声卡采集的信号幅度来调整采集音量。

### 常见问题 [#常见问题]

- [如何处理音量太小问题？](/zh-CN/reference/faq/quality/audio_low)

### API 参考 [#api-参考-11]

- [`AdjustPlaybackSignalVolume`](/zh-CN/api-reference/rtc/unreal-blueprint/play/audio-mixing#api_irtcengine_adjustplaybacksignalvolume)
- [`AdjustRecordingSignalVolume`](/zh-CN/api-reference/rtc/unreal-blueprint/audio/audio-capture#api_irtcengine_adjustrecordingsignalvolume)
- [`AdjustUserPlaybackSignalVolume`](/zh-CN/api-reference/rtc/unreal-blueprint/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume)
- [`AdjustAudioMixingPlayoutVolume`](/zh-CN/api-reference/rtc/unreal-blueprint/play/audio-mixing#api_irtcengine_adjustaudiomixingplayoutvolume)
- [`FOnAudioVolumeIndication`](/zh-CN/api-reference/rtc/unreal-blueprint/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication)
<_PlatformProcessedMarker close="true" />
</_PlatformTabsGroup>
