音量调节

本文将解释如何:

检测音量大小

调用 enableAudioVolumeEvaluation 启用音量大小提示,开启此功能后,SDK 会在 TRTCCloudListener 中的 onUserVoiceVolume 回调中反馈本地或远端用户的音频音量评估信息,包括音量大小、人声检测、音频频谱等。
Android
iOS
Mac
Windows
private TRTCCloud mCloud;
mCloud = TRTCCloud.sharedInstance(getApplicationContext());
mCloud.setListener(new TRTCCloudListener() {
// 通过 onUserVoiceVolume 回调获得音频音量评估信息 @Override public void onUserVoiceVolume(ArrayList<TRTCCloudDef.TRTCVolumeInfo> userVolumes, int totalVolume) { super.onUserVoiceVolume(userVolumes, totalVolume);
// 在这里更新 UI,例如更新音柱的高度 } });

// 设置 TRTCAudioVolumeEvaluateParams 参数
TRTCCloudDef.TRTCAudioVolumeEvaluateParams audioVolumeEvaluateParams = new TRTCCloudDef.TRTCAudioVolumeEvaluateParams(); audioVolumeEvaluateParams.enablePitchCalculation = false; // 是否开启本地人声频率计算 audioVolumeEvaluateParams.enableSpectrumCalculation = false; // 是否开启声音频谱计算 audioVolumeEvaluateParams.enableVadDetection = false; // 是否开启本地人声检测 audioVolumeEvaluateParams.interval = 100; // 设置 onUserVoiceVolume 回调的触发间隔为 100 ms

// 开启音量大小提示 mNewCloud.enableAudioVolumeEvaluation(true, audioVolumeEvaluateParams);

// 关闭音量大小提示 mNewCloud.enableAudioVolumeEvaluation(false, audioVolumeEvaluateParams);
// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate, TRTCCloudDelegate> // 添加 TRTCCloudDelegate 接口声明

@property (nonatomic, strong) TRTCCloud *trtcCloud; // 声明 trtcCloud 实例

// AppDelegate.m
_trtcCloud = [TRTCCloud sharedInstance];
_trtcCloud.delegate = self;

// 设置 TRTCAudioVolumeEvaluateParams 参数
TRTCAudioVolumeEvaluateParams *trtcAudioVolumeEvaluateParams = [[TRTCAudioVolumeEvaluateParams alloc] init];
trtcAudioVolumeEvaluateParams.enablePitchCalculation = NO; // 是否开启本地人声频率计算
trtcAudioVolumeEvaluateParams.enableSpectrumCalculation = NO; // 是否开启声音频谱计算
trtcAudioVolumeEvaluateParams.enableVadDetection = NO; // 是否开启本地人声检测
trtcAudioVolumeEvaluateParams.interval = 100; // 设置 onUserVoiceVolume 回调的触发间隔为 100 ms

// 开启音量大小提示
[self.trtcCloud enableAudioVolumeEvaluation:YES withParams:trtcAudioVolumeEvaluateParams];

// 实现 TRTCCloudDelegate 回调方法
- (void)onUserVoiceVolume:(NSArray<TRTCVolumeInfo *> *)userVolumes totalVolume:(NSInteger)totalVolume {
// 处理用户音量信息
for (TRTCVolumeInfo *volumeInfo in userVolumes) {
NSLog(@"User ID: %@, Volume: %ld", volumeInfo.userId, (long)volumeInfo.volume);
// 在这里更新 UI,例如更新音柱的高度
}
}

// 关闭音量大小提示
[self.trtcCloud enableAudioVolumeEvaluation:NO withParams:trtcAudioVolumeEvaluateParams];
// AppDelegate.h
@interface AppDelegate : NSObject <NSApplicationDelegate, TRTCCloudDelegate> // 添加 TRTCCloudDelegate 接口声明

@property (nonatomic, strong) TRTCCloud *trtcCloud; // 声明 trtcCloud 实例

// AppDelegate.m
_trtcCloud = [TRTCCloud sharedInstance];
_trtcCloud.delegate = self;

// 设置 TRTCAudioVolumeEvaluateParams 参数
TRTCAudioVolumeEvaluateParams *trtcAudioVolumeEvaluateParams = [[TRTCAudioVolumeEvaluateParams alloc] init];
trtcAudioVolumeEvaluateParams.enablePitchCalculation = NO; // 是否开启本地人声频率计算
trtcAudioVolumeEvaluateParams.enableSpectrumCalculation = NO; // 是否开启声音频谱计算
trtcAudioVolumeEvaluateParams.enableVadDetection = NO; // 是否开启本地人声检测
trtcAudioVolumeEvaluateParams.interval = 100; // 设置 onUserVoiceVolume 回调的触发间隔为 100 ms

// 开启音量大小提示
[self.trtcCloud enableAudioVolumeEvaluation:YES withParams:trtcAudioVolumeEvaluateParams];

// 实现 TRTCCloudDelegate 回调方法
- (void)onUserVoiceVolume:(NSArray<TRTCVolumeInfo *> *)userVolumes totalVolume:(NSInteger)totalVolume {
// 处理用户音量信息
for (TRTCVolumeInfo *volumeInfo in userVolumes) {
NSLog(@"User ID: %@, Volume: %ld", volumeInfo.userId, (long)volumeInfo.volume);
// 在这里更新 UI,例如更新音柱的高度
}
}

// 关闭音量大小提示
[self.trtcCloud enableAudioVolumeEvaluation:NO withParams:trtcAudioVolumeEvaluateParams];
// .h 文件
public:
ITRTCCloud* trtc_cloud_;
public:
virtual void onUserVoiceVolume(TRTCVolumeInfo* userVolumes, uint32_t userVolumesCount, uint32_t totalVolume) override;

// .cpp 文件
trtc_cloud_ = getTRTCSharedInstance();
trtc_cloud_ -> addCallback(this);

TRTCAudioVolumeEvaluateParams trtcAudioVolumeEvaluteParams;
trtcAudioVolumeEvaluateParams.enablePitchCalculation = false; // 是否开启本地人声频率计算
trtcAudioVolumeEvaluateParams.enableSpectrumCalculation = false; // 是否开启声音频谱计算
trtcAudioVolumeEvaluateParams.enableVadDetection = false; // 是否开启本地人声检测
trtcAudioVolumeEvaluateParams.interval = 100; // 设置 onUserVoiceVolume 回调的触发间隔为 100 ms

// 开启音量大小提示
trtc_cloud_ -> enableAudioVolumeEvaluation(true, trtcAudioVolumeEvaluateParams);

// 实现 TRTCCloudDelegate 回调方法,将 CLASSNAME 替换为自己的类名
void CLASSNAME::onUserVoiceVolume(TRTCVolumeInfo* userVolumes, uint32_t userVolumesCount, uint32_t totalVolume) {
// 在这里更新 UI,例如更新音柱的高度
}

// 关闭音量大小提示
trtc_cloud_ -> enableAudioVolumeEvaluation(false, trtcAudioVolumeEvaluateParams);

检测静音后远端用户是否在讲话

Android
iOS
Mac
Windows
private TRTCCloud mCloud;
mCloud = TRTCCloud.sharedInstance(getApplicationContext());
mCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_SPEECH); // 打开麦克风

mCloud.muteLocalAudio(true); // 关闭麦克风

// 创建新的 TRTC 实例,用来检测麦克风音量
private TRTCCloud mNewCloud;
mNewCloud = TRTCCloud.sharedInstance(getApplicationContext());
mNewCloud.setListener(new TRTCCloudListener() {
// 通过 onUserVoiceVolume 回调获得 mCloud 的音频音量评估信息 @Override public void onUserVoiceVolume(ArrayList<TRTCCloudDef.TRTCVolumeInfo> userVolumes, int totalVolume) { super.onUserVoiceVolume(userVolumes, totalVolume);
// 在这里更新 UI,例如更新音柱的高度 } });

// 设置 TRTCAudioVolumeEvaluateParams 参数
TRTCCloudDef.TRTCAudioVolumeEvaluateParams audioVolumeEvaluateParams = new TRTCCloudDef.TRTCAudioVolumeEvaluateParams(); audioVolumeEvaluateParams.enablePitchCalculation = false; // 是否开启本地人声频率计算 audioVolumeEvaluateParams.enableSpectrumCalculation = false; // 是否开启声音频谱计算 audioVolumeEvaluateParams.enableVadDetection = false; // 是否开启本地人声检测 audioVolumeEvaluateParams.interval = 100; // 设置 onUserVoiceVolume 回调的触发间隔为 100 ms

// 开启音量大小提示 mNewCloud.enableAudioVolumeEvaluation(true, audioVolumeEvaluateParams);
// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate, TRTCCloudDelegate> // 添加 TRTCCloudDelegate 接口声明

@property (nonatomic, strong) TRTCCloud *trtcCloud; // 声明 trtcCloud 实例
@property (nonatomic, strong) TRTCCloud *newTRTCCloud; // 声明 newTRTCCloud 实例


// AppDelegate.m
_trtcCloud = [TRTCCloud sharedInstance];
_trtcCloud.delegate = self;
[self.trtcCloud startLocalAudio:TRTCAudioQualitySpeech]; // 打开麦克风

[self.trtcCloud muteLocalAudio:YES]; // 关闭麦克风

// 初始化新的 TRTC 实例
_newTRTCCloud = [TRTCCloud sharedInstance];
_newTRTCCloud.delegate = self;

// 设置 TRTCAudioVolumeEvaluateParams 参数
TRTCAudioVolumeEvaluateParams *trtcAudioVolumeEvaluateParams = [[TRTCAudioVolumeEvaluateParams alloc] init];
trtcAudioVolumeEvaluateParams.enablePitchCalculation = NO; // 是否开启本地人声频率计算
trtcAudioVolumeEvaluateParams.enableSpectrumCalculation = NO; // 是否开启声音频谱计算
trtcAudioVolumeEvaluateParams.enableVadDetection = NO; // 是否开启本地人声检测
trtcAudioVolumeEvaluateParams.interval = 100; // 设置 onUserVoiceVolume 回调的触发间隔为 100 ms

// 开启音量大小提示
[self.newTRTCCloud enableAudioVolumeEvaluation:YES withParams:trtcAudioVolumeEvaluateParams];

// 实现 TRTCCloudDelegate 回调方法
- (void)onUserVoiceVolume:(NSArray<TRTCVolumeInfo *> *)userVolumes totalVolume:(NSInteger)totalVolume {
// 处理用户音量信息
for (TRTCVolumeInfo *volumeInfo in userVolumes) {
NSLog(@"User ID: %@, Volume: %ld", volumeInfo.userId, (long)volumeInfo.volume);
// 在这里更新 UI,例如更新音柱的高度
}
}
// AppDelegate.h
@interface AppDelegate : NSObject <NSApplicationDelegate, TRTCCloudDelegate> // 添加 TRTCCloudDelegate 接口声明

@property (nonatomic, strong) TRTCCloud *trtcCloud; // 声明 trtcCloud 实例
@property (nonatomic, strong) TRTCCloud *newTRTCCloud; // 声明 newTRTCCloud 实例


// AppDelegate.m
_trtcCloud = [TRTCCloud sharedInstance];
_trtcCloud.delegate = self;
[self.trtcCloud startLocalAudio:TRTCAudioQualitySpeech]; // 打开麦克风

[self.trtcCloud muteLocalAudio:YES]; // 关闭麦克风

// 初始化新的 TRTC 实例
_newTRTCCloud = [TRTCCloud sharedInstance];
_newTRTCCloud.delegate = self;

// 设置 TRTCAudioVolumeEvaluateParams 参数
TRTCAudioVolumeEvaluateParams *trtcAudioVolumeEvaluateParams = [[TRTCAudioVolumeEvaluateParams alloc] init];
trtcAudioVolumeEvaluateParams.enablePitchCalculation = NO; // 是否开启本地人声频率计算
trtcAudioVolumeEvaluateParams.enableSpectrumCalculation = NO; // 是否开启声音频谱计算
trtcAudioVolumeEvaluateParams.enableVadDetection = NO; // 是否开启本地人声检测
trtcAudioVolumeEvaluateParams.interval = 100; // 设置 onUserVoiceVolume 回调的触发间隔为 100 ms

// 开启音量大小提示
[self.newTRTCCloud enableAudioVolumeEvaluation:YES withParams:trtcAudioVolumeEvaluateParams];

// 实现 TRTCCloudDelegate 回调方法
- (void)onUserVoiceVolume:(NSArray<TRTCVolumeInfo *> *)userVolumes totalVolume:(NSInteger)totalVolume {
// 处理用户音量信息
for (TRTCVolumeInfo *volumeInfo in userVolumes) {
NSLog(@"User ID: %@, Volume: %ld", volumeInfo.userId, (long)volumeInfo.volume);
// 在这里更新 UI,例如更新音柱的高度
}
}
// .h 文件
public:
ITRTCCloud* trtc_cloud_;
ITRTCCloud* new_trtc_cloud;
public:
virtual void onUserVoiceVolume(TRTCVolumeInfo* userVolumes, uint32_t userVolumesCount, uint32_t totalVolume) override;

// .cpp 文件
trtc_cloud_ = getTRTCSharedInstance();
trtc_cloud_ -> addCallback(this);

trtc_cloud_ -> startLocalAudio(TRTCAudioQualitySpeech); // 打开麦克风

trtc_cloud_ -> muteLocalAudio(true); // 关闭麦克风

// 创建新的 TRTC 实例,用来检测麦克风音量
new_trtc_cloud_ = getTRTCSharedInstance();
new_trtc_cloud_ -> addCallback(this);

TRTCAudioVolumeEvaluateParams trtcAudioVolumeEvaluteParams;
trtcAudioVolumeEvaluateParams.enablePitchCalculation = false; // 是否开启本地人声频率计算
trtcAudioVolumeEvaluateParams.enableSpectrumCalculation = false; // 是否开启声音频谱计算
trtcAudioVolumeEvaluateParams.enableVadDetection = false; // 是否开启本地人声检测
trtcAudioVolumeEvaluateParams.interval = 100; // 设置 onUserVoiceVolume 回调的触发间隔为 100 ms

// 开启音量大小提示
new_trtc_cloud_ -> enableAudioVolumeEvaluation(true, trtcAudioVolumeEvaluateParams);

// 实现 TRTCCloudDelegate 回调方法,将 CLASSNAME 替换为自己的类名
void CLASSNAME::onUserVoiceVolume(TRTCVolumeInfo* userVolumes, uint32_t userVolumesCount, uint32_t totalVolume) {
// 在这里更新 UI,例如更新音柱的高度
}

调节音量大小

本地音频:本地麦克风采集音量大小默认为100,可以调用 setAudioCaptureVolume 设定本地音频的采集音量。
Android
iOS
Mac
Windows
// 将本地麦克风采集音量减小到50
mCloud.setAudioCaptureVolume(50);

// 将本地麦克风采集音量增大到100
mCloud.setAudioCaptureVolume(100);
// 将本地麦克风采集音量减小到50
[self.trtcCloud setAudioCaptureVolume:50];

// 将本地麦克风采集音量增大到100
[self.trtcCloud setAudioCaptureVolume:100];
// 将本地麦克风采集音量减小到50
[self.trtcCloud setAudioCaptureVolume:50];

// 将本地麦克风采集音量增大到100
[self.trtcCloud setAudioCaptureVolume:100];
// 将本地麦克风采集音量减小到50
trtc_cloud_ -> setAudioCaptureVolume(50);

// 将本地麦克风采集音量增大到100
trtc_cloud_ -> setAudioCaptureVolume(100);
远端音频:远端用户音量播放大小默认为100,可以调用 setRemoteAudioVolume 设定某一个远端用户的声音播放音量。
Android
iOS
Mac
Windows
// 将 Tom 的播放音量减小到50
mCloud.setRemoteAudioVolume("Tom", 50);

// 将 Tom 的播放音量增大到100
mCloud.setRemoteAudioVolume("Tom", 100);
// 将 Tom 的播放音量减小到50
[self.trtcCloud setRemoteAudioVolume:@"Tom" volume:50];

// 将 Tom 的播放音量增大到100
[self.trtcCloud setRemoteAudioVolume:@"Tom" volume:100];
// 将 Tom 的播放音量减小到50
[self.trtcCloud setRemoteAudioVolume:@"Tom" volume:50];

// 将 Tom 的播放音量增大到100
[self.trtcCloud setRemoteAudioVolume:@"Tom" volume:100];
// 将 Tom 的播放音量减小到50
trtc_cloud_ -> setRemoteAudioVolume("Tom", 50);

// 将 Tom 的播放音量增大到100
trtc_cloud_ -> setRemoteAudioVolume("Tom", 100);
注意:
volume 的推荐取值大小为0 - 100,如果将 volume 设置成100之后感觉音量还是太小,可以将 volume 最大设置成150,但超过100的 volume 会有爆音的风险,请谨慎操作。

联系我们

如果有任何需要或者反馈,您可以联系:info_rtc@tencent.com。