--- a/synth.c
+++ b/synth.c
@@ -91,6 +91,13 @@ espeak_ERROR set_voice(struct synth_t *
 	espeak_ERROR rc;
 
 	rc = espeak_SetVoiceByName(voice);
+	if (rc != EE_OK)
+	{
+		espeak_VOICE voice_select;
+		memset(&voice_select, 0, sizeof(voice_select));
+		voice_select.languages = voice;
+		rc = espeak_SetVoiceByProperties(&voice_select);
+	}
 	if (rc == EE_OK)
 		strcpy(s->voice, voice);
 	return rc;
