diff --git a/data/gui/gc_control_popup_menu.ui b/data/gui/gc_control_popup_menu.ui
index 4118c4be20a55a38684e769d801ffbd6194886fb..24fbcf64566dca346fce2af91be770060b131349 100644
--- a/data/gui/gc_control_popup_menu.ui
+++ b/data/gui/gc_control_popup_menu.ui
@@ -66,6 +66,19 @@
         <property name="use_underline">True</property>
       </object>
     </child>
+    <child>
+      <object class="GtkSeparatorMenuItem" id="request_voice_separator">
+        <property name="no_show_all">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="request_voice_menuitem">
+        <property name="label" translatable="yes">_Request Voice</property>
+        <property name="visible">True</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+      </object>
+    </child>
     <child>
       <object class="GtkSeparatorMenuItem" id="bookmark_separator">
         <property name="no_show_all">True</property>
diff --git a/src/common/connection.py b/src/common/connection.py
index f13cf8ada1a0d323e5a58d1c95779cefc58a01f4..b5443a69f979a5049d4d28315649744f1aced9ee 100644
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -2496,6 +2496,22 @@ class Connection(CommonConnection, ConnectionHandlers):
             c.setTagData('reason', reason)
         self.connection.send(message)
 
+    def request_voice(self, room, nick):
+        """ 
+        Request voice in a moderated room
+        """
+        message = common.xmpp.Message(to=room)
+
+        x = xmpp.DataForm(typ='submit')
+        x.addChild(node=xmpp.DataField(name='FORM_TYPE',
+            value=common.xmpp.NS_MUC + '#request'))
+        x.addChild(node=xmpp.DataField(name='muc#role', value='participant',
+            typ='text-single'))
+
+        message.addChild(node=x)
+
+        self.connection.send(message)
+
     def check_pingalive(self):
         if self.awaiting_xmpp_ping_id:
             # We haven't got the pong in time, disco and reconnect
diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index 717c48c4e68e02d91b676d9bd1b6312459810682..5013ed3295fccb4416e6c9b2213ba23f7837f796 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -789,8 +789,10 @@ class GroupchatControl(ChatControlBase):
         change_subject_menuitem = xml.get_object('change_subject_menuitem')
         history_menuitem = xml.get_object('history_menuitem')
         minimize_menuitem = xml.get_object('minimize_menuitem')
+        request_voice_menuitem = xml.get_object('request_voice_menuitem')
         bookmark_separator = xml.get_object('bookmark_separator')
         separatormenuitem2 = xml.get_object('separatormenuitem2')
+        request_voice_separator = xml.get_object('request_voice_separator')
 
         if hide_buttonbar_items:
             change_nick_menuitem.hide()
@@ -840,12 +842,17 @@ class GroupchatControl(ChatControlBase):
                 destroy_room_menuitem.set_sensitive(True)
             change_subject_menuitem.set_sensitive(True)
             change_nick_menuitem.set_sensitive(True)
+            if c.role == 'visitor':
+                request_voice_menuitem.set_sensitive(True)
+            else:
+                request_voice_menuitem.set_sensitive(False)
         else:
             # We are not connected to this groupchat, disable unusable menuitems
             configure_room_menuitem.set_sensitive(False)
             destroy_room_menuitem.set_sensitive(False)
             change_subject_menuitem.set_sensitive(False)
             change_nick_menuitem.set_sensitive(False)
+            request_voice_menuitem.set_sensitive(False)
 
         # connect the menuitems to their respective functions
         id_ = bookmark_room_menuitem.connect('activate',
@@ -872,6 +879,10 @@ class GroupchatControl(ChatControlBase):
             self._on_history_menuitem_activate)
         self.handlers[id_] = history_menuitem
 
+        id_ = request_voice_menuitem.connect('activate',
+            self._on_request_voice_menuitem_activate)
+        self.handlers[id_] = request_voice_menuitem
+
         id_ = minimize_menuitem.connect('toggled',
             self.on_minimize_menuitem_toggled)
         self.handlers[id_] = minimize_menuitem
@@ -2068,6 +2079,12 @@ class GroupchatControl(ChatControlBase):
         gajim.interface.add_gc_bookmark(self.account, self.name, self.room_jid,\
             '0', '0', password, self.nick)
 
+    def _on_request_voice_menuitem_activate(self, widget):
+        """
+        Request voice in the current room
+        """
+        gajim.connections[self.account].request_voice(self.room_jid)
+
     def _on_drag_data_received(self, widget, context, x, y, selection,
     target_type, timestamp):
         # Invite contact to groupchat