Index: rbutil/rbutilqt/base/tts.cpp =================================================================== --- rbutil/rbutilqt/base/tts.cpp (revision 21521) +++ rbutil/rbutilqt/base/tts.cpp (working copy) @@ -36,6 +36,7 @@ ttsList["espeak"] = "Espeak TTS Engine"; ttsList["flite"] = "Flite TTS Engine"; ttsList["swift"] = "Swift TTS Engine"; + ttsList["open-sapi"] = "Open Sapi Engine"; #if defined(Q_OS_WIN) ttsList["sapi"] = "Sapi TTS Engine"; #endif @@ -47,26 +48,24 @@ // function to get a specific encoder TTSBase* TTSBase::getTTS(QObject* parent,QString ttsName) { - TTSBase* tts; -#if defined(Q_OS_WIN) if(ttsName == "sapi") { tts = new TTSSapi(parent); return tts; } - else -#endif -#if defined(Q_OS_LINUX) - if (ttsName == "festival") + else if (ttsName == "festival") { tts = new TTSFestival(parent); return tts; } - else -#endif - if (true) // fix for OS other than WIN or LINUX + else if(ttsName == "open-sapi") { + tts = new TTSOpenSapi(parent); + return tts; + } + else // fix for OS other than WIN or LINUX + { tts = new TTSExes(ttsName,parent); return tts; } @@ -664,3 +663,55 @@ } +/********************************************************************* +* OpenSapi +**********************************************************************/ +TTSOpenSapi::TTSOpenSapi(QObject* parent) : TTSBase(parent) +{ +} + +void TTSOpenSapi::generateSettings() +{ +} + +void TTSOpenSapi::saveSettings() +{ +} + +bool TTSOpenSapi::start(QString *errStr) +{ + m_clientSocket.connectToHost("localhost",5491); + if(!m_clientSocket.waitForConnected(2000)) + { + *errStr = tr("Could not connect to open-sapi server"); + return false; + } + + return true; +} + +bool TTSOpenSapi::stop() +{ + m_clientSocket.disconnectFromHost(); + return true; +} + +TTSStatus TTSOpenSapi::voice(QString text,QString wavfile, QString *errStr) +{ + (void) errStr; + + //set outfile + QString message = "outFile "+wavfile+"\n"; + m_clientSocket.write(message.toUtf8()); + message = "speakMe "+text+"\n"; + m_clientSocket.write(message.toUtf8()); + m_clientSocket.flush(); + + return NoError; + +} + +bool TTSOpenSapi::configOk() +{ + return true; +} Index: rbutil/rbutilqt/base/tts.h =================================================================== --- rbutil/rbutilqt/base/tts.h (revision 21521) +++ rbutil/rbutilqt/base/tts.h (working copy) @@ -177,4 +177,24 @@ QMap voiceDescriptions; }; +class TTSOpenSapi : public TTSBase +{ + + Q_OBJECT + public: + TTSOpenSapi(QObject* parent=NULL); + TTSStatus voice(QString text,QString wavfile, QString *errStr); + bool start(QString *errStr); + bool stop(); + + // for settings + void generateSettings(); + void saveSettings(); + bool configOk(); + + private: + QTcpSocket m_clientSocket; +}; + + #endif