     @emit 'VideoPublishStateChanged', state
 
 
+  ###*
+   * Set speaker state to given state. If `off` set all subscribers' audio
+   * volume to 0, if `on` set all to 100.
+   *
+   * @param {boolean} state
+  ###
+  setSpeakerState: (state) ->
+
+    volume = if state then 100 else 0
+
+    Object.keys(@subscribers).forEach (key) =>
+      subscriber = @subscribers[key].videoData
+      subscriber.setAudioVolume volume
+
+    @setState { speaker: state }
+    @emit 'SpeakerStateChanged', state
+
+
   ensurePublishing: (options, callback) ->
 
     @setActive()

  defaultState:
    audio               : off
    video               : off
    publishing          : off
    active              : no
    connected           : no



  ###*
   * Action to mute/unmute speakers.
   *
   * @param {boolean} speakerState
  ###
  requestSpeakerStateChange: (speakerState) ->
    return  if speakerState is @state.speaker

    @setSpeakerState speakerState


  ###*
   * Registers callbacks for service events.
   *
   * @param {OT.Session} session
