diff --git a/src/orca/orca_gui_prefs.py b/src/orca/orca_gui_prefs.py
index 5561810..edf08e4 100644
--- a/src/orca/orca_gui_prefs.py
+++ b/src/orca/orca_gui_prefs.py
@@ -971,8 +971,12 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
             "orca_gui_prefs._setupSpeechSystems: speechSystemsChoice: %s" \
             % self.speechSystemsChoice)
 
-    def _initSpeechState(self):
+    def _initSpeechState(self, restart=False):
         """Initialize the various speech components.
+
+        Arguments:
+        - restart: if True, we need to do a full restart of speech, for
+          instance when loading a new profile.
         """
 
         voices = self.prefsDict["voices"]
@@ -1000,6 +1004,12 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
             self.speechFamiliesChoice = None
             return
 
+        if restart:
+            try:
+                speech.shutdown()
+            except:
+                pass
+
         try:
             speech.init()
         except:
@@ -4625,7 +4635,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         self._initGUIState()
 
-        self._initSpeechState()
+        self._initSpeechState(restart=True)
 
         self._populateKeyBindings()
 
