Index: src/orca/scripts/toolkits/Gecko/speech_generator.py
===================================================================
--- src/orca/scripts/toolkits/Gecko/speech_generator.py	(revision 4165)
+++ src/orca/scripts/toolkits/Gecko/speech_generator.py	(working copy)
@@ -79,7 +79,7 @@
                 doNotSpeak.append(pyatspi.ROLE_LIST)
 
         utterances = []
-        if not obj.getRole() in doNotSpeak:
+        if role or not obj.getRole() in doNotSpeak:
             utterances.append(rolenames.getSpeechForRoleName(obj, role))
             if obj.getRole() == pyatspi.ROLE_HEADING:
                 level = self._script.getHeadingLevel(obj)
Index: src/orca/scripts/toolkits/Gecko/where_am_i.py
===================================================================
--- src/orca/scripts/toolkits/Gecko/where_am_i.py	(revision 4165)
+++ src/orca/scripts/toolkits/Gecko/where_am_i.py	(working copy)
@@ -83,6 +83,26 @@
                 and not self._script.isAriaWidget(orca_state.locusOfFocus)):
             where_am_I.WhereAmI._speakDefaultButton(self, obj)
 
+    def _getSpeechForRoleName(self, obj, role=None):
+        """Returns the rolename to be spoken for the object. Overridden
+        here because there are times when we do not want the speech
+        generator returning a role to speak (e.g. navigating within
+        a document), but other times when we would (e.g. during a 
+        whereAmI).
+        """
+
+        objRole = obj.getRole()
+        if not role and objRole in [pyatspi.ROLE_DOCUMENT_FRAME,
+                                    pyatspi.ROLE_FORM,
+                                    pyatspi.ROLE_LIST_ITEM,
+                                    pyatspi.ROLE_LIST,
+                                    pyatspi.ROLE_PARAGRAPH,
+                                    pyatspi.ROLE_SECTION,
+                                    pyatspi.ROLE_TABLE_CELL]:
+            role = objRole
+
+        return where_am_I.WhereAmI._getSpeechForRoleName(self, obj, role)
+
     def _speakObjDescription(self, obj):
         """Speaks the object's description if it is not the same as the
         object's name or label. Overridden here because Gecko tacks on
Index: src/orca/where_am_I.py
===================================================================
--- src/orca/where_am_I.py	(revision 4165)
+++ src/orca/where_am_I.py	(working copy)
@@ -1147,8 +1147,11 @@
         """Returns the rolename to be spoken for the object.
         """
 
-        return self._script.speechGenerator.\
-            getSpeechForObjectRole(obj, role)[0]
+        try:
+            return self._script.speechGenerator.\
+                getSpeechForObjectRole(obj, role)[0]
+        except:
+            return ""
 
     def _getGroupLabel(self, obj):
         """Returns the label for a group of components.
