summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/tts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/tts.cpp')
-rw-r--r--rbutil/rbutilqt/tts.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/rbutil/rbutilqt/tts.cpp b/rbutil/rbutilqt/tts.cpp
index 9bdbf6fe3e..1f40df003b 100644
--- a/rbutil/rbutilqt/tts.cpp
+++ b/rbutil/rbutilqt/tts.cpp
@@ -30,7 +30,7 @@ void initTTSList()
30 ttsList["flite"] = "Flite TTS Engine"; 30 ttsList["flite"] = "Flite TTS Engine";
31 ttsList["swift"] = "Swift TTS Engine"; 31 ttsList["swift"] = "Swift TTS Engine";
32#if defined(Q_OS_WIN) 32#if defined(Q_OS_WIN)
33 ttsList["sapi"] = "Sapi 5 TTS Engine"; 33 ttsList["sapi"] = "Sapi TTS Engine";
34#endif 34#endif
35 35
36} 36}
@@ -156,7 +156,7 @@ TTSSapi::TTSSapi() : TTSBase()
156{ 156{
157 m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\""; 157 m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\"";
158 defaultLanguage ="english"; 158 defaultLanguage ="english";
159 159 m_sapi4 =false;
160} 160}
161 161
162 162
@@ -166,8 +166,9 @@ bool TTSSapi::start(QString *errStr)
166 m_TTSOpts = settings->ttsOptions("sapi"); 166 m_TTSOpts = settings->ttsOptions("sapi");
167 m_TTSLanguage =settings->ttsLang("sapi"); 167 m_TTSLanguage =settings->ttsLang("sapi");
168 m_TTSVoice=settings->ttsVoice("sapi"); 168 m_TTSVoice=settings->ttsVoice("sapi");
169 m_TTSSpeed=settings->ttsSpeed("sapi"); 169 m_TTSSpeed=QString("%1").arg(settings->ttsSpeed("sapi"));
170 170 m_sapi4 = settings->ttsUseSapi4();
171
171 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); 172 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs");
172 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs"); 173 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs");
173 m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs"; 174 m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs";
@@ -186,6 +187,9 @@ bool TTSSapi::start(QString *errStr)
186 execstring.replace("%voice",m_TTSVoice); 187 execstring.replace("%voice",m_TTSVoice);
187 execstring.replace("%speed",m_TTSSpeed); 188 execstring.replace("%speed",m_TTSSpeed);
188 189
190 if(m_sapi4)
191 execstring.append(" /sapi4 ");
192
189 qDebug() << "init" << execstring; 193 qDebug() << "init" << execstring;
190 voicescript = new QProcess(NULL); 194 voicescript = new QProcess(NULL);
191 //connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error())); 195 //connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error()));
@@ -219,9 +223,13 @@ QStringList TTSSapi::getVoiceList(QString language)
219 return result; 223 return result;
220 224
221 // create the voice process 225 // create the voice process
222 QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices";; 226 QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices";
223 execstring.replace("%exe",m_TTSexec); 227 execstring.replace("%exe",m_TTSexec);
224 execstring.replace("%lang",language); 228 execstring.replace("%lang",language);
229
230 if(settings->ttsUseSapi4())
231 execstring.append(" /sapi4 ");
232
225 qDebug() << "init" << execstring; 233 qDebug() << "init" << execstring;
226 voicescript = new QProcess(NULL); 234 voicescript = new QProcess(NULL);
227 voicescript->start(execstring); 235 voicescript->start(execstring);
@@ -234,6 +242,11 @@ QStringList TTSSapi::getVoiceList(QString language)
234 result = dataRaw.split(",",QString::SkipEmptyParts); 242 result = dataRaw.split(",",QString::SkipEmptyParts);
235 result.sort(); 243 result.sort();
236 result.removeFirst(); 244 result.removeFirst();
245 for(int i = 0; i< result.size();i++)
246 {
247 result[i] = result.at(i).simplified();
248 }
249
237 250
238 delete voicescript; 251 delete voicescript;
239 QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner 252 QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner