Using Voice Fonts

Voice fonts allow participants to modify their voices in real time mainly for fun effects to improve social interaction in entertainment scenarios. The Dolby.io Communications APIs Platform offers twelve different voice fonts that imitate a variety of vocal tones and styles. If the offered voice fonts are not sufficient for you and you want to use a different voice modification effect, you can use our local audio stream pre-processing.

Available voice fonts

The following table lists audio samples for each available voice font:

Voice font Example 1 Example 2
The original, unprocessed voice
Abyss
AM Radio
Broken Robot
Dark Modulation
Feminine
Helium
Interference
Masculine
Nervous Robot
Starship Captain
Swarm
Wobble

Prerequisites

This feature is currently supported in the Android SDK 3.9, iOS SDK 3.9, C++ SDK 2.5, Web SDK 3.11, and React Native 3.10 and requires using the Standard audio capture mode.

Enabling a voice font

To start using a voice font, select the Standard [Android, iOS, C++, Web, React Native, Flutter] audio capture mode and set the voiceFont [Android, iOS, C++, Web, React Native, Flutter] parameter to a preferred value.

await VoxeetSDK.audio.local.setCaptureMode({mode: "standard", modeOptions: {noiseReductionLevel: "high", voiceFont: "darkModulation"}});
VoxeetSDK.shared.audio.local.captureMode = .standard(noiseReduction: .high, voiceFont:.darkModulation)
VoxeetSDK.audio().getLocal().setCaptureMode(AudioCaptureMode.standard(StandardNoiseReduction.HIGH, VoiceFont.DARK_MODULATION));
VoxeetSDK.audio().local.setCaptureMode(AudioCaptureMode.standard(StandardNoiseReduction.HIGH, VoiceFont.DARK_MODULATION))
sdk->audio()
    .local()
    .set_capture_mode(dolbyio::comms::audio_capture_mode::standard{
        dolbyio::comms::noise_reduction::high,
        dolbyio::comms::voice_font::dark_modulation})
    .then([]() { std::cout << "Setting voice font succeeded!"; })
    .on_error([](std::exception_ptr&&) {
        std::cerr << "Setting voice font failed!";
    });
await CommsAPI.audio.local.setCaptureMode({mode: AudioCaptureMode.Standard, noiseReduction: NoiseReductionLevel.Low, voiceFont: VoiceFont.Helium});
await DolbyioCommsSdk.instance.audioService.localAudio.preview.setCaptureMode(AudioCaptureOptions(AudioCaptureMode.standard, NoiseReduction.high, voiceFont: VoiceFont.darkModulation));

Disabling the set voice font

To stop using the set voice font and use your natural voice, set the Standard audio capture mode and do not provide the voiceFont parameter or set it to none.

await VoxeetSDK.audio.local.setCaptureMode({mode: "standard", modeOptions: {noiseReductionLevel: "high"}});
VoxeetSDK.shared.audio.local.captureMode = .standard(noiseReduction: .high)
VoxeetSDK.audio().getLocal().setCaptureMode(AudioCaptureMode.standard(StandardNoiseReduction.HIGH));
VoxeetSDK.audio().local.setCaptureMode(AudioCaptureMode.standard(StandardNoiseReduction.HIGH))
sdk->audio()
    .local()
    .set_capture_mode(dolbyio::comms::audio_capture_mode::standard{
        dolbyio::comms::noise_reduction::high,
        dolbyio::comms::voice_font::none})
    .then([]() { std::cout << "Disabling voice font to n!"; })
    .on_error([](std::exception_ptr&&) {
        std::cerr << "Setting voice font failed!";
    });
await CommsAPI.audio.local.setCaptureMode({mode: AudioCaptureMode.Standard, noiseReduction: NoiseReductionLevel.Low});
await DolbyioCommsSdk.instance.audioService.localAudio.preview.setCaptureMode(AudioCaptureOptions(AudioCaptureMode.standard, NoiseReduction.high));

Troubleshooting

Be aware that using voice fonts may be disturbing during meetings and may result in decreased speech intelligibility. To have a better experience, speak naturally and avoid rushing and using filler words.

Voice fonts are designed for processing voice, so we recommend using them with high noise reduction that removes all background sounds. If you set noise reduction to low, additional sounds other than voice will be processed as well and passed to a conference.