Index: code/missionui/missioncmdbrief.cpp
===================================================================
--- code/missionui/missioncmdbrief.cpp	(revision 8666)
+++ code/missionui/missioncmdbrief.cpp	(working copy)
@@ -226,6 +226,17 @@
 
 	if (Voice_ended_time && (timer_get_milliseconds() - Voice_ended_time >= 1000))
 		return 1;
+    
+    if (Voice_started_time && (Cmd_brief_last_voice < 0)) {
+        /* we are playing synthesized voice */
+        if ((timer_get_milliseconds() - Voice_started_time < 1000) || fsspeech_playing()) {
+            return 0;
+        }
+        
+        if (!Voice_ended_time) {
+            Voice_ended_time = timer_get_milliseconds();
+        }
+    }
 
 	if (Briefing_voice_enabled && (Cmd_brief_last_voice >= 0)) {
 		if (audiostream_is_playing(Cmd_brief_last_voice)){
@@ -325,6 +336,13 @@
 	// If the briefing has no wave to play use simulated speach
 	if(Cur_cmd_brief->stage[stage].wave <= 0) {
 		fsspeech_play(FSSPEECH_FROM_BRIEFING, Cur_cmd_brief->stage[stage].text.c_str());
+        if (fsspeech_play_from(FSSPEECH_FROM_BRIEFING)) {
+            Voice_started_time = timer_get_milliseconds();
+            Voice_ended_time = 0;
+        } else {
+            Voice_started_time = 0;
+            Voice_ended_time = 0;
+        }
 	}
 
 	Cur_stage = stage;
