Используя Qt для запуска приложения (в том числе консольного) можно обратить внимание на QProcess.
Например, для запуска festival:
#include "QProcess"
QProcess Ozvuchit;
//запускаем процесс
Ozvuchit.start("festival ");
if (Ozvuchit.state() == QProcess::NotRunning)
{
//если процесс не запустился выводится сообщение о невозможности запуска
QMessageBox msgBox;
QString msg =QString::fromUtf8("festival не стартовал и программа не может синтезировать речь");
msgBox.setText(msg);
msgBox.exec();
}
//производим запись команды для произношения ""Hello World" в процесс
Ozvuchit.write("(SayText \"Hello World\")");
при завершении программы
//проверим запущен ли процесс
if (Ozvuchit.state() == QProcess::Running) {
//закроем канал
Ozvuchit.closeWriteChannel();
//ожидается завершение запущенного процесса
Ozvuchit.waitForFinished();
Это же можно сделать:
system("echo "+ (ui->RechText->toPlainText().toUtf8()) + " | festival --tts --language russian");
Различие выразится в том, что для первого варианта после синтеза процесс Festival останется ожидать следующего обращения, в то время как во втором случае Festival закроется.
Реализация запуска TTS Festival из Qt использована в проекте
http://sourceforge.net/projects/golos/можно скачать исходники и посмотреть, как это реализовано, если интересно более детально использование QProcess.