# Voicemod Voice Changer (/en/realtime-media/marketplace/build/add-audio-effects/voicemod/android)

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

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

      
    ## Integrate Voicemod extension [#integrate-voicemod-extension]

    ### Download and link the extension [#download-and-link-the-extension]

    You download the libraries and example code from the Agora dashboard.

    Place the `aar` file into the `libs` folder of your project and link to the file in `build.gradle`:

    ```gradle
    dependencies {
        implementation(name: 'voicemod-audio-filter-extension', ext: 'aar')
    }
    ```

    ### Enable the extension [#enable-the-extension]

    <CalloutContainer type="warning">
      <CalloutDescription>
        There is currently no callback that notifies the app when the extension has been enabled, and enabling the extension can take up to a few seconds.
      </CalloutDescription>
    </CalloutContainer>

    ```java
    public void initializeAgoraEngine() {
        RtcEngineConfig config = new RtcEngineConfig();
        config.addExtension("VoicemodExtension");
        mRtcEngine = RtcEngine.create(config);
        mRtcEngine.enableExtension("Voicemod", "VoicemodExtension", true);
    }
    ```

    ### Disable the extension [#disable-the-extension]

    <CalloutContainer type="warning">
      <CalloutDescription>
        Disable the extension when your app closes. You will eventually be charged for usage, so it is important to shut it down before exit.
      </CalloutDescription>
    </CalloutContainer>

    ```java
    mRtcEngine.enableExtension("Voicemod", "VoicemodExtension", false);
    ```

    ### Initialize Voicemod [#initialize-voicemod]

    To start the extension, set your project’s API key and API secret.

    <CalloutContainer type="warning">
      <CalloutDescription>
        A request to initialize the Voicemod extension fails unless the extension has already been enabled successfully.
      </CalloutDescription>
    </CalloutContainer>

    ```java
    public void initVoicemodSession(String userId) {
        String userData = "{"
            + "\"apiKey\": \"<your API key>\","
            + "\"apiSecret\": \"<your API secret>\""
            + "}";
        mRtcEngine.setExtensionProperty(
            "Voicemod",
            "VoicemodExtension",
            "vcmd_user_data",
            userData
        );
    }
    ```

    ### Enable a voice [#enable-a-voice]

    <CalloutContainer type="warning">
      <CalloutDescription>
        A request to set the voice fails unless the Voicemod extension has been initialized successfully.
      </CalloutDescription>
    </CalloutContainer>

    ```java
    String voice = "\"titan\"";
    mRtcEngine.setExtensionProperty("Voicemod", "VoicemodExtension", "vcmd_voice", voice);
    ```

    ### Disable voices [#disable-voices]

    ```java
    String voice = "null";
    mRtcEngine.setExtensionProperty("Voicemod", "VoicemodExtension", "vcmd_voice", voice);
    ```

    
  
      
  
## Reference [#reference]

### Voicemod properties [#voicemod-properties]

You can configure and control the Voicemod extension using the following properties.

Before you can use the extension, you must provide your API key and API secret by setting the `vcmd_user_data` property.

Except for `vcmd_user_data` and `vcmd_version`, the extension must be initialized before Voicemod property accessors work.

| Property key             | Property value                                                                              | Access   | Description                                              |
| ------------------------ | ------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------- |
| `vcmd_user_data`         | Object: `{ apiKey: "project API key", apiSecret: "project API secret" }`                    | Set      | Sets the API key and API secret.                         |
| `vcmd_version`           | String: `MAJOR.MINOR.PATCH`                                                                 | Get      | Gets the Voicemod plugin version.                        |
| `vcmd_voice`             | String                                                                                      | Get, set | Sets or gets the current voice. Use `null` for no voice. |
| `vcmd_presets`           | Array of strings, such as `magic-chords`, `baby`, `cave`, `titan`, `robot`, and `lost-soul` | Get      | Gets the list of existing voices.                        |
| `vcmd_background_sounds` | Boolean                                                                                     | Set      | Toggles background sounds.                               |
| `vcmd_mute`              | Boolean                                                                                     | Get, set | Toggles mute audio samples or gets the current setting.  |

### FAQ [#faq]

**How do I add the extension to my Agora Marketplace app?**

To use the extension, download the files for your operating systems from the [Voicemod Agora releases repository](https://gitlab.com/voicemod/agora/releases), and follow the instructions in the [Voicemod documentation](https://voicemod.gitlab.io/agora/releases/).

**How large is the extension?**

The extension currently uses 14 MB of storage space for Android and 32 MB for iOS.

**What pricing plans are available?**

The extension is free until December 31, 2021, and will be charged at $1 per 1000 minutes after that.

**What are Voicemod's terms and conditions?**

Read the [Voicemod End User License Agreement](https://voicemod.gitlab.io/agora/releases/EULA.html).

**Can I get more voices?**

Voicemod plans to release an extended voice pack soon.

**Can I use other Voicemod features such as Soundboard?**

Voicemod does not currently support Soundboard within an Agora Marketplace app, but is working on it for v2 of the extension.
