logo
Video Call
Other Features
On this page

Voice Changer/Reverb/Stereo

2026-03-12

Feature Overview

In live streaming, audio chat room, and Karaoke room scenarios, to increase fun and interactivity, users can use voice changers for entertainment, use reverb to enhance the atmosphere, and use stereo to make sound more three-dimensional. ZegoExpress SDK provides various preset voice changer, reverb, reverb echo, and stereo effects. Developers can flexibly set the desired sound. If you need to preview, you can enable headphone monitor for testing.

  • Voice Changer: By changing the user's pitch, the output sound is perceptually different from the original sound, achieving various effects such as male to female voice.
  • Reverb: Through special processing of sound, create reverb effects of different environments, making the sound as if it were emitted in concert halls, cathedrals, and other scenes.
  • Reverb Echo: Through special processing of sound, can be combined with voice changer and reverb to achieve various custom sound effects, such as ethereal, robot sounds.
  • Virtual Stereo: Through deep use of dual-channel technology, virtually create various position angles of sound sources, achieving stereo, 3D surround sound, sound positioning, and other effects.

You can experience the SDK's preset vocal effects through the Audio Effects DEMO provided by ZEGO.

Note

This function only applies to sounds captured by the SDK. Developers can dynamically adjust voice changer, reverb, reverb echo, and virtual stereo during calls or live streaming.

Prerequisites

Before using voice changer/reverb/stereo, please ensure that you have implemented basic audio/video publishing and playing functions in your project. For details, please refer to Quick Start - Integration.

Usage Steps

Voice Changer

There are two ways to set voice changer: preset voice changer and custom voice changer.

Set Preset Voice Changer

Note

If you need to set custom voice changer, please refer to Set Custom Voice Changer.

Call the setVoiceChangerPreset method to use SDK's preset voice changer effects.

ZegoVoiceChangerPreset preset voice changer effects are as follows. Developers can choose according to needs:

Type NamePreset ValueDescriptionVoice Changer Type
NONE0No voice changer-
MEN_TO_CHILD1Male to child voiceVoice changer
MEN_TO_WOMEN2Male to female voiceVoice changer
WOMEN_TO_CHILD3Female to child voiceVoice changer
WOMEN_TO_MEN4Female to male voiceVoice changer
FOREIGNER5Foreigner sound effectVoice changer
OPTIMUS_PRIME6Optimus Prime sound effectVoice changer
ANDROID7Robot sound effectVoice changer
ETHEREAL8Ethereal sound effectTimbre transformation
MALE_MAGNETIC9Magnetic maleRoom beautification
FEMALE_FRESH10Fresh femaleRoom beautification
MAJOR_C11C major electronic musicElectronic music effect
MINOR_A12A minor electronic musicElectronic music effect
HARMONIC_MINOR13Harmonic minor electronic musicElectronic music effect
FEMALE_ENERGETIC14Energetic female effectRoom beautification
RICH_NESS15Rich effectRoom beautification
MUFFLED16Muffled effectRoom beautification
ROUNDNESS17Round effectRoom beautification
FALSETTO18Falsetto effectRoom beautification
FULLNESS19Full effectRoom beautification
CLEAR20Clear effectRoom beautification
HIGHLY_RESONANT21High-pitched effectRoom beautification
LOUD_CLEAR22Loud and clear effectRoom beautification
MINIONS23Minions sound effectVoice changer
AUTOBOT30Autobot sound effectVoice changer
OUT_OF_POWER31Out of power effectVoice changer
Note

To use the Autobot and OutOfPower voice changer effects, please contact technical support for custom SDK packaging.

The following example code uses male to child voice as an example:

ZegoExpressSDK::getEngine()->setVoiceChangerPreset(ZEGO_VOICE_CHANGER_PRESET_MEN_TO_CHILD);

Set Custom Voice Changer

Note

If you need to set preset voice changer, please refer to Set Preset Voice Changer.

If the SDK's preset voice changer effects cannot meet requirements, developers can call the ZegoVoiceChangerParam method and set custom voice changer through the pitch parameter pitch. The value range of this parameter is [-12.0, 12.0]. The larger the value, the sharper the sound. The default value is "0.0" (i.e., no voice changer).

Warning

For version 2.18.0 and earlier, the value range is [-8.0, 8.0].

ZegoVoiceChangerParam param;
param.pitch = 2.0f;
ZegoExpressSDK::getEngine()->setVoiceChangerParam(param);

Reverb

There are two ways to set reverb: preset reverb and custom reverb.

Set Preset Reverb

Note

If you need to set custom reverb, please refer to Set Custom Reverb.

Call setReverbPreset to set reverb through preset enumeration.

ZegoReverbPreset preset reverb effects are as follows. Developers can choose according to needs:

Type NamePreset ValueDescriptionReverb Type
NONE0None-
SOFT_ROOM1Small roomSpatial shaping
LARGE_ROOM2Large roomSpatial shaping
CONCERT_HALL3Concert hallSpatial shaping
VALLEY4ValleySpatial shaping
RECORDING_STUDIO5Recording studioSpatial shaping
BASEMENT6BasementSpatial shaping
KTV7KTV, suitable for users with obvious sound quality flawsSpatial shaping
POPULAR8PopularMusic style
ROCK9RockMusic style
VOCAL_CONCERT10Vocal concertSpatial shaping
GRAMO_PHONE11GramophoneSpatial shaping
ENHANCED_KTV12Enhanced KTV, more focused and brighter KTV vocal effects, suitable for ordinary and professional usersSpatial shaping

The following example code uses large room mode as an example:

ZegoExpressSDK::getEngine()->setReverbPreset(ZEGO_REVERB_PRESET_LARGE_ROOM);

Set Custom Reverb

Note

If you need to set preset reverb, please refer to Set Preset Reverb.

If the SDK's preset reverb types cannot meet requirements, developers can call the ZegoReverbAdvancedParam method and set relevant parameters in combination to achieve the reverb effects developers need (for detailed parameter descriptions, please refer to the API documentation).

ZegoReverbAdvancedParam reverbParam;
reverbParam.damping = 50.0; // Reverb damping
reverbParam.reverberance = 50.0; // Reverberation
reverbParam.roomSize = 50.0; // Room size
reverbParam.wetOnly = false; // Wet signal only
reverbParam.wetGain = 5.0; // Wet signal gain(dB), value range [-20.0, 10.0]
reverbParam.dryGain = 5.0; // Dry signal gain(dB), value range [-20.0, 10.0]
reverbParam.toneLow = 80.0; // Low frequency attenuation, default is no attenuation (100%)
reverbParam.toneHigh = 80.0; // High frequency attenuation, default is no attenuation (100%)
reverbParam.preDelay = 20.0; // Initial delay time(ms). Value range [0, 200]
reverbParam.stereoWidth = 0.0; // Stereo width (percentage), default value is 0%
ZegoExpressSDK::getEngine()->setReverbAdvancedParam(reverbParam);
Warning

After setting custom reverb parameters, the preset reverb effect set when enabling reverb will become invalid. If you want to use SDK preset parameters again, you can use the setReverbPreset preset enumeration method to set.

Reverb Echo

Call the setReverbEchoParam method and set relevant parameters in combination to achieve the reverb echo effects developers need (for detailed parameter descriptions, please refer to the API documentation).

The following example code uses achieving ethereal effect as an example:

ZegoReverbEchoParam echoParamEthereal;
echoParamEthereal.inGain = 0.8; // Gain of input audio signal, value range [0.0, 1.0]
echoParamEthereal.outGain = 1.0; // Gain of output audio signal, value range [0.0, 1.0]
echoParamEthereal.numDelays = 7; // Number of echoes, value range [0, 7]
echoParamEthereal.delay = {230, 460, 690, 920, 1150, 1380, 1610}; // Delays of echo signals respectively
echoParamEthereal.decay = {0.41f, 0.18f, 0.08f, 0.03f, 0.009f, 0.003f, 0.001f}; // Decay coefficients of echo signals respectively
ZegoExpressSDK::getEngine()->setReverbEchoParam(echoParamEthereal);

Virtual Stereo

Set Publish Stream Audio Channel Count

If you need to enable virtual stereo functionality, you must call the setAudioConfig method before publishing stream to set audio encoding channels to Stereo dual channel (default is Mono single channel).

The following example uses preset enumeration to construct ZegoAudioConfig and sets it to dual channel:

ZegoAudioConfig audioConfig = ZegoAudioConfig(ZEGO_AUDIO_CONFIG_PRESET_STANDARD_QUALITY_STEREO);
ZegoExpressSDK::getEngine()->setAudioConfig(audioConfig);

Set Virtual Stereo Parameters

After setting audio encoding channels to dual channel, call the enableVirtualStereo method and set the sound source angle of virtual stereo through the enable parameter to have stereo effect. The angle range is 0 ~ 180. Generally, it can be set to 90 degrees (i.e., straight ahead).

The following example enables virtual stereo and sets the angle to 90 degrees:

ZegoExpressSDK::getEngine()->enableVirtualStereo(true, 90);

Previous

Headphone Monitor and Sound Channel Settings

Next

Audio Mixing

On this page

Back to top