diff --git a/public/index.html b/public/index.html
index 6f23a9b0e66ddb637564801e81d092255a482545..1bed1fd36cd86b9e5d470f5276835f122c636516 100644
--- a/public/index.html
+++ b/public/index.html
@@ -9,7 +9,7 @@
 </head>
 
 <body>
-  <a-scene networked-scene="adapter: easyrtc; audio: false; debug: true;">
+  <a-scene networked-scene="adapter: easyrtc; audio: true; debug: true;">
     <a-assets>
       <img id="grid" src="assets/grid.png" crossorigin="anonymous">
       <img id="sky" src="https://cdn.aframe.io/360-image-gallery-boilerplate/img/sechelt.jpg" crossorigin="anonymous" />
diff --git a/src/components/mute-mic.js b/src/components/mute-mic.js
new file mode 100644
index 0000000000000000000000000000000000000000..6469c50cc9464625c7173c02ec3ab0ab0aa873a6
--- /dev/null
+++ b/src/components/mute-mic.js
@@ -0,0 +1,53 @@
+AFRAME.registerComponent("mute-mic", {
+  schema: {
+    eventSrc: { type: "selectorAll" },
+    toggleEvent: { type: "string" },
+    muteEvent: { type: "string" },
+    unmuteEvent: { type: "string" }
+  },
+  init: function() {
+    var eventSrcElements = this.data.eventSrc || [this.el];
+
+    this.onToggle = this.onToggle.bind(this);
+    this.onMute = this.onMute.bind(this);
+    this.onUnmute = this.onUnmute.bind(this);
+
+    for (var el of eventSrcElements) {
+      if (this.data.toggleEvent !== "") {
+        el.addEventListener(this.data.toggleEvent, this.onToggle, false);
+      }
+
+      if (this.data.muteEvent !== "") {
+        el.addEventListener(this.data.muteEvent, this.onMute, false);
+      }
+
+      if (this.data.unmuteEvent !== "") {
+        el.addEventListener(this.data.unmuteEvent, this.onUnmute, false);
+      }
+    }
+  },
+
+  onToggle: function () {
+    if (this.el.is('muted')) {
+      NAF.connection.adapter.enableMicrophone(true);
+      this.el.removeState('muted');
+    } else {
+      NAF.connection.adapter.enableMicrophone(false);
+      this.el.addState('muted');
+    }
+  },
+
+  onMute: function () {
+    if (!this.el.is('muted')) {
+      NAF.connection.adapter.enableMicrophone(false);
+      this.el.addState('muted');
+    }
+  },
+
+  onUnmute: function () {
+    if (this.el.is('muted')) {
+      NAF.connection.adapter.enableMicrophone(true);
+      this.el.removeState('muted');
+    }
+  }
+});
diff --git a/src/index.js b/src/index.js
index 85a49209aa9b82aa5ba6cbf2b2366d9e119367ba..cebcf963fadfa7ac771425cca0b5527fade47827 100644
--- a/src/index.js
+++ b/src/index.js
@@ -4,3 +4,4 @@ require("aframe-teleport-controls");
 // require("./components/rig-selector");
 require("./components/axis-dpad");
 require("./components/snap-rotation");
+require("./components/mute-mic");
diff --git a/yarn.lock b/yarn.lock
index 4ecf6ca35c21ac2d552cec5526b64019494fbf76..ffa5f004f4fa20d8a99d41200c3c25fbdd37d3f7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1008,8 +1008,8 @@ express@^4.10.7:
     vary "~1.1.1"
 
 express@^4.15.5:
-  version "4.16.0"
-  resolved "https://registry.yarnpkg.com/express/-/express-4.16.0.tgz#b519638e4eb58e7178c81b498ef22f798cb2e255"
+  version "4.16.1"
+  resolved "https://registry.yarnpkg.com/express/-/express-4.16.1.tgz#6b33b560183c9b253b7b62144df33a4654ac9ed0"
   dependencies:
     accepts "~1.3.4"
     array-flatten "1.1.1"
@@ -1034,8 +1034,8 @@ express@^4.15.5:
     qs "6.5.1"
     range-parser "~1.2.0"
     safe-buffer "5.1.1"
-    send "0.16.0"
-    serve-static "1.13.0"
+    send "0.16.1"
+    serve-static "1.13.1"
     setprototypeof "1.1.0"
     statuses "~1.3.1"
     type-is "~1.6.15"
@@ -1792,7 +1792,7 @@ negotiator@0.6.1:
 
 "networked-aframe@https://github.com/netpro2k/networked-aframe#dev":
   version "0.3.0"
-  resolved "https://github.com/netpro2k/networked-aframe#d442c03ee7bce9fc168c1396a234b91249986b6e"
+  resolved "https://github.com/netpro2k/networked-aframe#0f092c7a21e1c77f1bb1b879febafad76b6fd26b"
   dependencies:
     aframe-lerp-component "^1.1.0"
     aframe-template-component "3.2.1"
@@ -2383,9 +2383,9 @@ send@0.15.6:
     range-parser "~1.2.0"
     statuses "~1.3.1"
 
-send@0.16.0:
-  version "0.16.0"
-  resolved "https://registry.yarnpkg.com/send/-/send-0.16.0.tgz#16338dbb9a2ede4ad57b48420ec3b82d8e80a57b"
+send@0.16.1:
+  version "0.16.1"
+  resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
   dependencies:
     debug "2.6.9"
     depd "~1.1.1"
@@ -2410,14 +2410,14 @@ serve-static@1.12.6, serve-static@^1.8.0:
     parseurl "~1.3.2"
     send "0.15.6"
 
-serve-static@1.13.0:
-  version "1.13.0"
-  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.0.tgz#810c91db800e94ba287eae6b4e06caab9fdc16f1"
+serve-static@1.13.1:
+  version "1.13.1"
+  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719"
   dependencies:
     encodeurl "~1.0.1"
     escape-html "~1.0.3"
     parseurl "~1.3.2"
-    send "0.16.0"
+    send "0.16.1"
 
 set-blocking@^2.0.0, set-blocking@~2.0.0:
   version "2.0.0"