diff --git a/crates/opentalk-signaling-module-livekit/src/lib.rs b/crates/opentalk-signaling-module-livekit/src/lib.rs
index 1c0ca42810cc50b020193a881eac66eb1070a521..e8748d4e9a8e59b45299ca4213d5832e6b213c3d 100644
--- a/crates/opentalk-signaling-module-livekit/src/lib.rs
+++ b/crates/opentalk-signaling-module-livekit/src/lib.rs
@@ -570,12 +570,14 @@ impl Livekit {
             .screen_share_requires_permission;
 
         let mut available_sources = LIVEKIT_MEDIA_SOURCES.to_vec();
-        if let MicrophoneRestrictionState::Enabled {
-            unrestricted_participants,
-        } = &microphone_restriction_state
-        {
-            if !unrestricted_participants.contains(&self.participant_id) {
-                available_sources.retain(|s| s != &TrackSource::Microphone);
+        if !self.role.is_moderator() {
+            if let MicrophoneRestrictionState::Enabled {
+                unrestricted_participants,
+            } = &microphone_restriction_state
+            {
+                if !unrestricted_participants.contains(&self.participant_id) {
+                    available_sources.retain(|s| s != &TrackSource::Microphone);
+                }
             }
         }