diff --git a/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js b/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js
index a828461684f090cdbdf7dc8449cf10acff5aa6c4..dbec2c5f1818ece149e73884b2425c9315938e6e 100644
--- a/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js
+++ b/bigbluebutton-html5/imports/api/audio/client/bridge/sip.js
@@ -317,6 +317,7 @@ export default class SIPBridge extends BaseAudioBridge {
   setDefaultInputDevice() {
     const handleMediaSuccess = (mediaStream) => {
       const deviceLabel = mediaStream.getAudioTracks()[0].label;
+      mediaStream.getTracks().forEach(track => track.stop());
       return navigator.mediaDevices.enumerateDevices().then((mediaDevices) => {
         const device = mediaDevices.find(d => d.label === deviceLabel);
         return this.changeInputDevice(device.deviceId);
diff --git a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js
index 8f3c04481fdf23b8c723bed7712c539bfd0f5f84..09840be529445febff32fa5483ab5976fd4b1cfa 100644
--- a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js
+++ b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js
@@ -19,6 +19,7 @@ const CALL_STATES = {
 class AudioManager {
   constructor() {
     this._inputDevice = {
+      value: 'default',
       tracker: new Tracker.Dependency(),
     };
 
@@ -203,6 +204,9 @@ class AudioManager {
     this.isConnecting = false;
     this.isHangingUp = false;
 
+    this.inputStream.getTracks().forEach(track => track.stop());
+    this.inputDevice = { id: 'default' };
+
     if (!this.error && !this.isEchoTest) {
       this.notify(this.messages.info.LEFT_AUDIO);
     }
@@ -273,6 +277,7 @@ class AudioManager {
         .then(handleChangeInputDeviceSuccess)
         .catch(handleChangeInputDeviceError);
     }
+
     return this.bridge.changeInputDevice(deviceId)
       .then(handleChangeInputDeviceSuccess)
       .catch(handleChangeInputDeviceError);
@@ -283,17 +288,18 @@ class AudioManager {
   }
 
   set inputDevice(value) {
-    Object.assign(this._inputDevice, value);
+    this._inputDevice.value = value;
     this._inputDevice.tracker.changed();
   }
 
   get inputStream() {
-    return this._inputDevice.stream;
+    this._inputDevice.tracker.depend();
+    return this._inputDevice.value.stream;
   }
 
   get inputDeviceId() {
     this._inputDevice.tracker.depend();
-    return this._inputDevice.id;
+    return this._inputDevice.value.id;
   }
 
   set userData(value) {