Skip to main content

Synervoz Voice FX

This guide is provided by Synervoz. Agora is planning a documentation upgrade program for all extensions on the marketplace. Please stay tuned.

This extension provides four voice filters to users: echo, reverb, flanger and pitch shift. The user can customize values for each one of them to achieve different results.

This extension only requires three basic steps:

  1. Import the VoiceFilters extension to your project

  2. Create an AgoraRtcEngine kit instance, initialize it and enable the extension

  3. Create a SynervozVoiceFilter instance to control the voice filters.

Prerequisites

The development environment has to meet the following requirements:

  • Android Studio 3.0 or later
  • Android SDK API Level 21 or higher.
  • Knowledge of AgoraRtcEngineKit's basic functions.

Integrate Synervoz extension

  1. Add the VoiceFiltersAgoraExtension.aar to your project

  2. Import the following


    _7
    import com.synervoz.voicefilters.SynervozVoiceFilter
    _7
    _7
    import com.synervoz.voicefilters.AgoraExtensionPropertyInterface
    _7
    _7
    import com.synervoz.voicefilters.SynervozVoiceFilterExtensionManager
    _7
    _7
    import com.synervoz.voicefilters.VoiceEffectsComponentConfiguration

  3. Create an instance of RtcEngine by initializing it with RtcEngineConfig()


    _5
    val config = RtcEngineConfig()
    _5
    _5
    config.addExtension(SynervozVoiceFilterExtensionManager.EXTENSION_NAME)
    _5
    _5
    mRtcEngine = RtcEngine.create(config)

    To enable the extension, call RtcEngine’s function enableExtension


    _1
    mRtcEngine.enableExtension(SynervozVoiceFilterExtensionManager.EXTENSION_VENDOR_NAME, SynervozVoiceFilterExtensionManager.EXTENSION_AUDIO_FILTER_NAME, true)

  4. Create an instance of the SynervozVoiceFilter class.

  5. Implement the AgoraExtensionPropertyInterface as following


    _1
    synervozVoiceFilter.agoraExtensionPropertyInterface = AgoraExtensionPropertyInterface { vendorName, filterName, propertyName, propertyValue -> mRtcEngine.setExtensionProperty(vendorName, filterName, propertyName, propertyValue) }

  6. To enable reverb (all filters have default values)


    _12
    synervozVoiceFilter.reverbVoiceConfig = VoiceEffectsComponentConfiguration.ReverbVoiceEffectConfiguration().apply {
    _12
    dry = 1.0f
    _12
    wet = 1.0f
    _12
    mix = 1.0f
    _12
    width = 1.0f
    _12
    damp = 0.5f
    _12
    roomSize = 1.0f
    _12
    preDelay = 100.0f
    _12
    lowCut = 5.0f
    _12
    }
    _12
    _12
    synervozVoiceFilter.enableReverb(reverbEnabled)

Reference

  • Classes:
    • SynervozVoiceFilter: The helper class that allows you to control the voice filters and their configuration. With this class you can enable or disable each filter, change their configuration using the configuration structs and reset the values to default.
  • Structs:
    • EchoVoiceEffectConfiguration: Holds the echo filter configuration values.
    • ReverbVoiceEffectConfiguration: Holds the reverb filter configuration values.
    • FlangerVoiceEffectConfiguration: Holds the flanger filter configuration values.
    • PitchShiftVoiceEffectConfiguration: Holds the pitch shift configuration values.