This is implemented by doing the following:
echo $challenge | festival --tts
But we actually make that invocation in a little script named mnemon-tts
because I'm too lazy to code up a custom invocation for this challenge
type.
--- /dev/null
+#!/bin/sh
+
+arg="$@"
+
+# Strip undesired directory component
+dir=$(dirname "$arg")
+
+text="${arg#$dir/}"
+
+echo "$text" | festival --tts
CHALLENGE_TYPE_TEXT,
CHALLENGE_TYPE_IMAGE,
CHALLENGE_TYPE_AUDIO,
CHALLENGE_TYPE_TEXT,
CHALLENGE_TYPE_IMAGE,
CHALLENGE_TYPE_AUDIO,
+ CHALLENGE_TYPE_MIDI,
+ CHALLENGE_TYPE_TEXT_TO_SPEECH
} challenge_type_t;
typedef struct _category {
} challenge_type_t;
typedef struct _category {
case CHALLENGE_TYPE_MIDI:
fprintf (file, "midi");
break;
case CHALLENGE_TYPE_MIDI:
fprintf (file, "midi");
break;
+ case CHALLENGE_TYPE_TEXT_TO_SPEECH:
+ fprintf (file, "text-to-speech");
+ break;
}
fprintf (file, "\n\n");
}
fprintf (file, "\n\n");
category->challenge_type = CHALLENGE_TYPE_AUDIO;
} else if (strcmp (value, "midi") == 0) {
category->challenge_type = CHALLENGE_TYPE_MIDI;
category->challenge_type = CHALLENGE_TYPE_AUDIO;
} else if (strcmp (value, "midi") == 0) {
category->challenge_type = CHALLENGE_TYPE_MIDI;
+ } else if (strcmp (value, "text-to-speech") == 0) {
+ category->challenge_type = CHALLENGE_TYPE_TEXT_TO_SPEECH;
} else {
fprintf (stderr, "Unknown value for \"challenge\" option \"%s\" at %s:%d\n",
value, path, line_count);
} else {
fprintf (stderr, "Unknown value for \"challenge\" option \"%s\" at %s:%d\n",
value, path, line_count);
case CHALLENGE_TYPE_MIDI:
program = "timidity -Os";
break;
case CHALLENGE_TYPE_MIDI:
program = "timidity -Os";
break;
+ case CHALLENGE_TYPE_TEXT_TO_SPEECH:
+ program = "mnemon-tts";
+ break;
}
xasprintf (&command, "%s %s/%s >/dev/null 2>&1 &",
}
xasprintf (&command, "%s %s/%s >/dev/null 2>&1 &",