Using Audio Capabilities

The following examples demonstrate how to use the audio capabilities of the most recent version of the Dolby.io Communications SDK for Web.

Join a conference with audio off

// Create a new conference or get the conference object from the ID
const conference = await VoxeetSDK.conference.fetch('conferenceId');

const constraints = {
    audio: false, // No audio on join
    video: true,
};

await VoxeetSDK.conference.join(conference, { constraints: constraints });

Join a conference with audio on

// Create a new conference or get the conference object from the ID
const conference = await VoxeetSDK.conference.fetch('conferenceId');

const constraints = {
    audio: true,
    video: true,
};

await VoxeetSDK.conference.join(conference, { constraints: constraints });

Specify the audio bitrate when joining a conference

You can set the audio bitrate when joining a non-Dolby Voice conference.

// Create a non-Dolby Voice conference
const conference = await VoxeetSDK.conference.create({
    alias: 'my conference',
    params: {
        dolbyVoice: false,
    },
});

const constraints = {
    audio: true,
    video: true,
    audioBitrate: '64kbps', // See: https://docs.dolby.io/communications-apis/docs/js-client-sdk-model-audiobitrate
};

await VoxeetSDK.conference.join(conference, { constraints: constraints });

Turn on the local audio

await VoxeetSDK.audio.local.start();

If your video is on, the following event will also be triggered:

VoxeetSDK.conference.on("streamUpdated", (participant, stream) => {
    
});

If your video is off, the following event will also be triggered:

VoxeetSDK.conference.on("streamAdded", (participant, stream) => {
    
});

Turn off the local audio

await VoxeetSDK.audio.local.stop();

Mute the local audio

The difference between stopAudio() and mute() is that the mute() will keep the audio stream running while the stopAudio() will stop the stream and a startAudio() will require a renegotiation between the client and the server, so it will take a few milliseconds before being able to share the audio into the conference. Also, the stopAudio() releases the microphone while the mute() does not.

VoxeetSDK.conference.mute(VoxeetSDK.session.participant, true);

Unmute the local audio

VoxeetSDK.conference.mute(VoxeetSDK.session.participant, false);

Stop receiving the audio from a remote user

const remoteParticipant = VoxeetSDK.conference.participants.get('PARTICIPANT_ID');

await VoxeetSDK.audio.remote.stop(remoteParticipant);

Start receiving the audio from a remote user

const remoteParticipant = VoxeetSDK.conference.participants.get('PARTICIPANT_ID');

await VoxeetSDK.audio.remote.start(remoteParticipant);

Change the comfort noise level

Changing the comfort noise level is only available in Dolby Voice conferences for users using the Dolby Voice codec.

// Set the comfort noise level to medium
await VoxeetSDK.audio.local.setComfortNoiseLevel('medium');

const level = await VoxeetSDK.audio.local.getComfortNoiseLevel();
console.log(`Comfort noise level set to: ${level}`);

Change the audio constraints

Calling this method by listeners or participants who use the Dolby Voice Codec (dvwc flag set to true) triggers the UnsupportedError.

const audioConstraints = {
    echoCancellation: false,
    noiseSuppression: false,
};

await VoxeetSDK.audio.local.applyConstraints(audioConstraints);

Change the capture mode

Changing the capture mode is only supported in Dolby Voice conferences.

Standard mode

This is the default capture mode. Optimizes captured audio for speech by aggressively removing non-speech content, such as background noise. This mode additionally enhances speech perceptibility to create a conversation-focused conference environment.

Turn on standard mode capture

VoxeetSDK.audio.local.setCaptureMode({ mode: 'standard' });

Change the noise reduction level

In standard mode, you can change the noise reduction level.

const captureMode = {
    mode: 'standard',
    modeOptions: {
        noiseReductionLevel: 'low', // See: https://docs.dolby.io/communications-apis/docs/js-client-sdk-model-audiocapturemodestandardoptions
    },
};

VoxeetSDK.audio.local.setCaptureMode(captureMode);

Music mode

Allows transmitting a high-quality audio stream with audio enhancements designed to improve the perceptual quality of music content. This mode is perfect for music lessons, virtual concerts, and music-focused webinars. For additional information, see Music Mode.

Before being able to turn on the music mode, you must create a Dolby Voice conference (see dolbyVoice flag). It is also only available on Chromium browsers (Chrome and Edge) and using the Dolby Voice Codec is required. To use this codec, when joining the conference, set the flag dvwc to true.

const joinOptions = {
    constraints: { audio: true, video: true, },
    dvwc: true,
};
await VoxeetSDK.conference.join(conference, joinOptions);

Turn on music mode capture

VoxeetSDK.audio.local.setCaptureMode({ mode: 'music' });

Turn off music mode capture

To turn off the music mode, revert to Standard or Unprocessed mode.

VoxeetSDK.audio.local.setCaptureMode({ mode: 'standard' });

Turn off echo cancellation

const captureMode = {
    mode: 'music',
    modeOptions: {
        echoCancellation: 'off',
    },
};

VoxeetSDK.audio.local.setCaptureMode(captureMode);

Turn on echo cancellation

const captureMode = {
    mode: 'music',
    modeOptions: {
        echoCancellation: 'on',
    },
};

VoxeetSDK.audio.local.setCaptureMode(captureMode);

Unprocessed mode

Disables audio processing to allow transmitting non-voice audio to a conference.

VoxeetSDK.audio.local.setCaptureMode({ mode: 'unprocessed' });