summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/base/tts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/base/tts.cpp')
-rw-r--r--rbutil/rbutilqt/base/tts.cpp81
1 files changed, 41 insertions, 40 deletions
diff --git a/rbutil/rbutilqt/base/tts.cpp b/rbutil/rbutilqt/base/tts.cpp
index d55ba9e739..70332f5f38 100644
--- a/rbutil/rbutilqt/base/tts.cpp
+++ b/rbutil/rbutilqt/base/tts.cpp
@@ -19,6 +19,7 @@
19 19
20#include "tts.h" 20#include "tts.h"
21#include "utils.h" 21#include "utils.h"
22#include "rbsettings.h"
22/********************************************************************* 23/*********************************************************************
23* TTS Base 24* TTS Base
24**********************************************************************/ 25**********************************************************************/
@@ -105,24 +106,24 @@ TTSExes::TTSExes(QString name,QObject* parent) : TTSBase(parent)
105 106
106void TTSExes::generateSettings() 107void TTSExes::generateSettings()
107{ 108{
108 QString exepath =settings->subValue(m_name,RbSettings::TtsPath).toString(); 109 QString exepath =RbSettings::subValue(m_name,RbSettings::TtsPath).toString();
109 if(exepath == "") exepath = findExecutable(m_name); 110 if(exepath == "") exepath = findExecutable(m_name);
110 111
111 insertSetting(eEXEPATH,new EncTtsSetting(this,EncTtsSetting::eSTRING,"Path to TTS engine:",exepath,EncTtsSetting::eBROWSEBTN)); 112 insertSetting(eEXEPATH,new EncTtsSetting(this,EncTtsSetting::eSTRING,"Path to TTS engine:",exepath,EncTtsSetting::eBROWSEBTN));
112 insertSetting(eOPTIONS,new EncTtsSetting(this,EncTtsSetting::eSTRING,"TTS enginge options:",settings->subValue(m_name,RbSettings::TtsOptions))); 113 insertSetting(eOPTIONS,new EncTtsSetting(this,EncTtsSetting::eSTRING,"TTS enginge options:",RbSettings::subValue(m_name,RbSettings::TtsOptions)));
113} 114}
114 115
115void TTSExes::saveSettings() 116void TTSExes::saveSettings()
116{ 117{
117 settings->setSubValue(m_name,RbSettings::TtsPath,getSetting(eEXEPATH)->current().toString()); 118 RbSettings::setSubValue(m_name,RbSettings::TtsPath,getSetting(eEXEPATH)->current().toString());
118 settings->setSubValue(m_name,RbSettings::TtsOptions,getSetting(eOPTIONS)->current().toString()); 119 RbSettings::setSubValue(m_name,RbSettings::TtsOptions,getSetting(eOPTIONS)->current().toString());
119 settings->sync(); 120 RbSettings::sync();
120} 121}
121 122
122bool TTSExes::start(QString *errStr) 123bool TTSExes::start(QString *errStr)
123{ 124{
124 m_TTSexec = settings->subValue(m_name,RbSettings::TtsPath).toString(); 125 m_TTSexec = RbSettings::subValue(m_name,RbSettings::TtsPath).toString();
125 m_TTSOpts = settings->subValue(m_name,RbSettings::TtsOptions).toString(); 126 m_TTSOpts = RbSettings::subValue(m_name,RbSettings::TtsOptions).toString();
126 127
127 m_TTSTemplate = m_TemplateMap.value(m_name); 128 m_TTSTemplate = m_TemplateMap.value(m_name);
128 129
@@ -155,7 +156,7 @@ TTSStatus TTSExes::voice(QString text,QString wavfile, QString *errStr)
155 156
156bool TTSExes::configOk() 157bool TTSExes::configOk()
157{ 158{
158 QString path = settings->subValue(m_name,RbSettings::TtsPath).toString(); 159 QString path = RbSettings::subValue(m_name,RbSettings::TtsPath).toString();
159 160
160 if (QFileInfo(path).exists()) 161 if (QFileInfo(path).exists())
161 return true; 162 return true;
@@ -176,31 +177,31 @@ TTSSapi::TTSSapi(QObject* parent) : TTSBase(parent)
176void TTSSapi::generateSettings() 177void TTSSapi::generateSettings()
177{ 178{
178 // language 179 // language
179 QStringList languages = settings->languages(); 180 QStringList languages = RbSettings::languages();
180 languages.sort(); 181 languages.sort();
181 EncTtsSetting* setting =new EncTtsSetting(this,EncTtsSetting::eSTRINGLIST,"Language:",settings->subValue("sapi",RbSettings::TtsLanguage),languages); 182 EncTtsSetting* setting =new EncTtsSetting(this,EncTtsSetting::eSTRINGLIST,"Language:",RbSettings::subValue("sapi",RbSettings::TtsLanguage),languages);
182 connect(setting,SIGNAL(dataChanged()),this,SLOT(updateVoiceList())); 183 connect(setting,SIGNAL(dataChanged()),this,SLOT(updateVoiceList()));
183 insertSetting(eLANGUAGE,setting); 184 insertSetting(eLANGUAGE,setting);
184 // voice 185 // voice
185 setting = new EncTtsSetting(this,EncTtsSetting::eSTRINGLIST,"Voice:",settings->subValue("sapi",RbSettings::TtsVoice),getVoiceList(settings->subValue("sapi",RbSettings::TtsLanguage).toString()),EncTtsSetting::eREFRESHBTN); 186 setting = new EncTtsSetting(this,EncTtsSetting::eSTRINGLIST,"Voice:",RbSettings::subValue("sapi",RbSettings::TtsVoice),getVoiceList(RbSettings::subValue("sapi",RbSettings::TtsLanguage).toString()),EncTtsSetting::eREFRESHBTN);
186 connect(setting,SIGNAL(refresh()),this,SLOT(updateVoiceList())); 187 connect(setting,SIGNAL(refresh()),this,SLOT(updateVoiceList()));
187 insertSetting(eVOICE,setting); 188 insertSetting(eVOICE,setting);
188 //speed 189 //speed
189 insertSetting(eSPEED,new EncTtsSetting(this,EncTtsSetting::eINT,"Speed:",settings->subValue("sapi",RbSettings::TtsSpeed),-10,10)); 190 insertSetting(eSPEED,new EncTtsSetting(this,EncTtsSetting::eINT,"Speed:",RbSettings::subValue("sapi",RbSettings::TtsSpeed),-10,10));
190 // options 191 // options
191 insertSetting(eOPTIONS,new EncTtsSetting(this,EncTtsSetting::eSTRING,"Options:",settings->subValue("sapi",RbSettings::TtsOptions))); 192 insertSetting(eOPTIONS,new EncTtsSetting(this,EncTtsSetting::eSTRING,"Options:",RbSettings::subValue("sapi",RbSettings::TtsOptions)));
192 193
193} 194}
194 195
195void TTSSapi::saveSettings() 196void TTSSapi::saveSettings()
196{ 197{
197 //save settings in user config 198 //save settings in user config
198 settings->setSubValue("sapi",RbSettings::TtsLanguage,getSetting(eLANGUAGE)->current().toString()); 199 RbSettings::setSubValue("sapi",RbSettings::TtsLanguage,getSetting(eLANGUAGE)->current().toString());
199 settings->setSubValue("sapi",RbSettings::TtsVoice,getSetting(eVOICE)->current().toString()); 200 RbSettings::setSubValue("sapi",RbSettings::TtsVoice,getSetting(eVOICE)->current().toString());
200 settings->setSubValue("sapi",RbSettings::TtsSpeed,getSetting(eSPEED)->current().toInt()); 201 RbSettings::setSubValue("sapi",RbSettings::TtsSpeed,getSetting(eSPEED)->current().toInt());
201 settings->setSubValue("sapi",RbSettings::TtsOptions,getSetting(eOPTIONS)->current().toString()); 202 RbSettings::setSubValue("sapi",RbSettings::TtsOptions,getSetting(eOPTIONS)->current().toString());
202 203
203 settings->sync(); 204 RbSettings::sync();
204} 205}
205 206
206void TTSSapi::updateVoiceList() 207void TTSSapi::updateVoiceList()
@@ -215,11 +216,11 @@ void TTSSapi::updateVoiceList()
215bool TTSSapi::start(QString *errStr) 216bool TTSSapi::start(QString *errStr)
216{ 217{
217 218
218 m_TTSOpts = settings->subValue("sapi",RbSettings::TtsOptions).toString(); 219 m_TTSOpts = RbSettings::subValue("sapi",RbSettings::TtsOptions).toString();
219 m_TTSLanguage =settings->subValue("sapi",RbSettings::TtsLanguage).toString(); 220 m_TTSLanguage =RbSettings::subValue("sapi",RbSettings::TtsLanguage).toString();
220 m_TTSVoice=settings->subValue("sapi",RbSettings::TtsVoice).toString(); 221 m_TTSVoice=RbSettings::subValue("sapi",RbSettings::TtsVoice).toString();
221 m_TTSSpeed=settings->subValue("sapi",RbSettings::TtsSpeed).toString(); 222 m_TTSSpeed=RbSettings::subValue("sapi",RbSettings::TtsSpeed).toString();
222 m_sapi4 = settings->subValue("sapi",RbSettings::TtsUseSapi4).toBool(); 223 m_sapi4 = RbSettings::subValue("sapi",RbSettings::TtsUseSapi4).toBool();
223 224
224 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); 225 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs");
225 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs"); 226 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs");
@@ -283,7 +284,7 @@ QStringList TTSSapi::getVoiceList(QString language)
283 execstring.replace("%exe",m_TTSexec); 284 execstring.replace("%exe",m_TTSexec);
284 execstring.replace("%lang",language); 285 execstring.replace("%lang",language);
285 286
286 if(settings->value(RbSettings::TtsUseSapi4).toBool()) 287 if(RbSettings::value(RbSettings::TtsUseSapi4).toBool())
287 execstring.append(" /sapi4 "); 288 execstring.append(" /sapi4 ");
288 289
289 qDebug() << "init" << execstring; 290 qDebug() << "init" << execstring;
@@ -348,7 +349,7 @@ bool TTSSapi::stop()
348 349
349bool TTSSapi::configOk() 350bool TTSSapi::configOk()
350{ 351{
351 if(settings->subValue("sapi",RbSettings::TtsVoice).toString().isEmpty()) 352 if(RbSettings::subValue("sapi",RbSettings::TtsVoice).toString().isEmpty())
352 return false; 353 return false;
353 return true; 354 return true;
354} 355}
@@ -363,17 +364,17 @@ TTSFestival::~TTSFestival()
363void TTSFestival::generateSettings() 364void TTSFestival::generateSettings()
364{ 365{
365 // server path 366 // server path
366 QString exepath = settings->subValue("festival-server",RbSettings::TtsPath).toString(); 367 QString exepath = RbSettings::subValue("festival-server",RbSettings::TtsPath).toString();
367 if(exepath == "" ) exepath = findExecutable("festival"); 368 if(exepath == "" ) exepath = findExecutable("festival");
368 insertSetting(eSERVERPATH,new EncTtsSetting(this,EncTtsSetting::eSTRING,"Path to Festival server:",exepath,EncTtsSetting::eBROWSEBTN)); 369 insertSetting(eSERVERPATH,new EncTtsSetting(this,EncTtsSetting::eSTRING,"Path to Festival server:",exepath,EncTtsSetting::eBROWSEBTN));
369 370
370 // client path 371 // client path
371 QString clientpath = settings->subValue("festival-client",RbSettings::TtsPath).toString(); 372 QString clientpath = RbSettings::subValue("festival-client",RbSettings::TtsPath).toString();
372 if(clientpath == "" ) clientpath = findExecutable("festival_client"); 373 if(clientpath == "" ) clientpath = findExecutable("festival_client");
373 insertSetting(eCLIENTPATH,new EncTtsSetting(this,EncTtsSetting::eSTRING,"Path to Festival client:",clientpath,EncTtsSetting::eBROWSEBTN)); 374 insertSetting(eCLIENTPATH,new EncTtsSetting(this,EncTtsSetting::eSTRING,"Path to Festival client:",clientpath,EncTtsSetting::eBROWSEBTN));
374 375
375 // voice 376 // voice
376 EncTtsSetting* setting = new EncTtsSetting(this,EncTtsSetting::eSTRINGLIST,"Voice:",settings->subValue("festival",RbSettings::TtsVoice),getVoiceList(exepath),EncTtsSetting::eREFRESHBTN); 377 EncTtsSetting* setting = new EncTtsSetting(this,EncTtsSetting::eSTRINGLIST,"Voice:",RbSettings::subValue("festival",RbSettings::TtsVoice),getVoiceList(exepath),EncTtsSetting::eREFRESHBTN);
377 connect(setting,SIGNAL(refresh()),this,SLOT(updateVoiceList())); 378 connect(setting,SIGNAL(refresh()),this,SLOT(updateVoiceList()));
378 connect(setting,SIGNAL(dataChanged()),this,SLOT(clearVoiceDescription())); 379 connect(setting,SIGNAL(dataChanged()),this,SLOT(clearVoiceDescription()));
379 insertSetting(eVOICE,setting); 380 insertSetting(eVOICE,setting);
@@ -387,11 +388,11 @@ void TTSFestival::generateSettings()
387void TTSFestival::saveSettings() 388void TTSFestival::saveSettings()
388{ 389{
389 //save settings in user config 390 //save settings in user config
390 settings->setSubValue("festival-server",RbSettings::TtsPath,getSetting(eSERVERPATH)->current().toString()); 391 RbSettings::setSubValue("festival-server",RbSettings::TtsPath,getSetting(eSERVERPATH)->current().toString());
391 settings->setSubValue("festival-client",RbSettings::TtsPath,getSetting(eCLIENTPATH)->current().toString()); 392 RbSettings::setSubValue("festival-client",RbSettings::TtsPath,getSetting(eCLIENTPATH)->current().toString());
392 settings->setSubValue("festival",RbSettings::TtsVoice,getSetting(eVOICE)->current().toString()); 393 RbSettings::setSubValue("festival",RbSettings::TtsVoice,getSetting(eVOICE)->current().toString());
393 394
394 settings->sync(); 395 RbSettings::sync();
395} 396}
396 397
397void TTSFestival::updateVoiceDescription() 398void TTSFestival::updateVoiceDescription()
@@ -420,7 +421,7 @@ void TTSFestival::startServer(QString path)
420 return; 421 return;
421 422
422 if(path == "") 423 if(path == "")
423 path = settings->subValue("festival-server",RbSettings::TtsPath).toString(); 424 path = RbSettings::subValue("festival-server",RbSettings::TtsPath).toString();
424 425
425 serverProcess.start(QString("%1 --server").arg(path)); 426 serverProcess.start(QString("%1 --server").arg(path));
426 serverProcess.waitForStarted(); 427 serverProcess.waitForStarted();
@@ -444,9 +445,9 @@ bool TTSFestival::start(QString* errStr)
444{ 445{
445 (void) errStr; 446 (void) errStr;
446 ensureServerRunning(); 447 ensureServerRunning();
447 if (!settings->subValue("festival",RbSettings::TtsVoice).toString().isEmpty()) 448 if (!RbSettings::subValue("festival",RbSettings::TtsVoice).toString().isEmpty())
448 queryServer(QString("(voice.select '%1)") 449 queryServer(QString("(voice.select '%1)")
449 .arg(settings->subValue("festival", RbSettings::TtsVoice).toString())); 450 .arg(RbSettings::subValue("festival", RbSettings::TtsVoice).toString()));
450 451
451 return true; 452 return true;
452} 453}
@@ -463,7 +464,7 @@ TTSStatus TTSFestival::voice(QString text, QString wavfile, QString* errStr)
463{ 464{
464 qDebug() << text << "->" << wavfile; 465 qDebug() << text << "->" << wavfile;
465 466
466 QString path = settings->subValue("festival-client",RbSettings::TtsPath).toString(); 467 QString path = RbSettings::subValue("festival-client",RbSettings::TtsPath).toString();
467 QString cmd = QString("%1 --server localhost --otype riff --ttw --withlisp --output \"%2\" - ").arg(path).arg(wavfile); 468 QString cmd = QString("%1 --server localhost --otype riff --ttw --withlisp --output \"%2\" - ").arg(path).arg(wavfile);
468 qDebug() << cmd; 469 qDebug() << cmd;
469 470
@@ -493,13 +494,13 @@ TTSStatus TTSFestival::voice(QString text, QString wavfile, QString* errStr)
493 494
494bool TTSFestival::configOk() 495bool TTSFestival::configOk()
495{ 496{
496 QString serverPath = settings->subValue("festival-server",RbSettings::TtsPath).toString(); 497 QString serverPath = RbSettings::subValue("festival-server",RbSettings::TtsPath).toString();
497 QString clientPath = settings->subValue("festival-client",RbSettings::TtsVoice).toString(); 498 QString clientPath = RbSettings::subValue("festival-client",RbSettings::TtsVoice).toString();
498 499
499 bool ret = QFileInfo(serverPath).isExecutable() && 500 bool ret = QFileInfo(serverPath).isExecutable() &&
500 QFileInfo(clientPath).isExecutable(); 501 QFileInfo(clientPath).isExecutable();
501 if(settings->subValue("festival",RbSettings::TtsVoice).toString().size() > 0 && voices.size() > 0) 502 if(RbSettings::subValue("festival",RbSettings::TtsVoice).toString().size() > 0 && voices.size() > 0)
502 ret = ret && (voices.indexOf(settings->subValue("festival",RbSettings::TtsVoice).toString()) != -1); 503 ret = ret && (voices.indexOf(RbSettings::subValue("festival",RbSettings::TtsVoice).toString()) != -1);
503 return ret; 504 return ret;
504} 505}
505 506