> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# addMicrophone

> addMicrophone method for the RoomSession class.

### addMicrophone

* **addMicrophone**(`opts`): `Promise<RoomSessionDevice>` - See [RoomSessionDevice documentation](/docs/browser-sdk/v3/js/reference/video/room-session-device) for more details.

Adds a microphone device to the room. Using this method, a user can stream multiple audio sources at the same time.

#### Parameters

Specify the constraints for the device. In addition, you can add the `autoJoin` key to specify whether the device should immediately join the room or joining will be performed manually later.

#### Returns

`Promise<RoomSessionDevice>` - See [RoomSessionDevice documentation](/docs/browser-sdk/v3/js/reference/video/room-session-device) for more details.

#### Permissions

* `room.self.additional_source`

You need to specify the permissions when [creating the Video Room Token](/docs/apis/rest/video/room-tokens/create-room-token) on the server side.

#### Examples

Adding any of the microphone devices to the room (duplicate streams are possible):

```javascript
await roomSession.addMicrophone();
```

Adding a specific microphone:

```javascript
await roomSession.addMicrophone({
  deviceId: "PIn/IIDDgBUHzJkhRncv1m85hX1gC67xYIgJvvThB3Q=",
});
```

Adding a microphone with specific constraints, joining it manually:

```javascript
const roomDev = await roomSession.addMicrophone({
  autoJoin: false,
  noiseSuppression: true,
});
await roomDev.join();
```