summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/base
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/base')
-rw-r--r--rbutil/rbutilqt/base/ttssapi.cpp62
-rw-r--r--rbutil/rbutilqt/base/ttssapi.h7
2 files changed, 35 insertions, 34 deletions
diff --git a/rbutil/rbutilqt/base/ttssapi.cpp b/rbutil/rbutilqt/base/ttssapi.cpp
index 666b101266..603e7c5559 100644
--- a/rbutil/rbutilqt/base/ttssapi.cpp
+++ b/rbutil/rbutilqt/base/ttssapi.cpp
@@ -23,10 +23,11 @@
23 23
24TTSSapi::TTSSapi(QObject* parent) : TTSBase(parent) 24TTSSapi::TTSSapi(QObject* parent) : TTSBase(parent)
25{ 25{
26 m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\"" 26 m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang "
27 " /speed:%speed \"%options\""; 27 "/voice:\"%voice\" /speed:%speed \"%options\"";
28 m_TTSVoiceTemplate = "cscript //nologo \"%exe\" /language:%lang /listvoices";
29 m_TTSType = "sapi";
28 defaultLanguage = "english"; 30 defaultLanguage = "english";
29 m_sapi4 = false;
30 m_started = false; 31 m_started = false;
31} 32}
32 33
@@ -43,40 +44,44 @@ void TTSSapi::generateSettings()
43 for(int i = 0; i < languages.values().size(); ++i) { 44 for(int i = 0; i < languages.values().size(); ++i) {
44 langs.append(languages.values().at(i).at(0)); 45 langs.append(languages.values().at(i).at(0));
45 } 46 }
46 EncTtsSetting* setting =new EncTtsSetting(this,EncTtsSetting::eSTRINGLIST, 47 EncTtsSetting* setting = new EncTtsSetting(this,
47 tr("Language:"),RbSettings::subValue("sapi",RbSettings::TtsLanguage), 48 EncTtsSetting::eSTRINGLIST, tr("Language:"),
48 langs); 49 RbSettings::subValue(m_TTSType, RbSettings::TtsLanguage),
50 langs);
49 connect(setting,SIGNAL(dataChanged()),this,SLOT(updateVoiceList())); 51 connect(setting,SIGNAL(dataChanged()),this,SLOT(updateVoiceList()));
50 insertSetting(eLANGUAGE,setting); 52 insertSetting(eLANGUAGE,setting);
51 // voice 53 // voice
52 setting = new EncTtsSetting(this,EncTtsSetting::eSTRINGLIST, 54 setting = new EncTtsSetting(this,
53 tr("Voice:"),RbSettings::subValue("sapi",RbSettings::TtsVoice), 55 EncTtsSetting::eSTRINGLIST, tr("Voice:"),
54 getVoiceList(RbSettings::subValue("sapi",RbSettings::TtsLanguage).toString()), 56 RbSettings::subValue(m_TTSType, RbSettings::TtsVoice),
55 EncTtsSetting::eREFRESHBTN); 57 getVoiceList(RbSettings::subValue(m_TTSType,
58 RbSettings::TtsLanguage).toString()),
59 EncTtsSetting::eREFRESHBTN);
56 connect(setting,SIGNAL(refresh()),this,SLOT(updateVoiceList())); 60 connect(setting,SIGNAL(refresh()),this,SLOT(updateVoiceList()));
57 insertSetting(eVOICE,setting); 61 insertSetting(eVOICE,setting);
58 //speed 62 //speed
59 int speed = RbSettings::subValue("sapi", RbSettings::TtsSpeed).toInt(); 63 int speed = RbSettings::subValue(m_TTSType, RbSettings::TtsSpeed).toInt();
60 if(speed > 10 || speed < -10) 64 if(speed > 10 || speed < -10)
61 speed = 0; 65 speed = 0;
62 insertSetting(eSPEED, new EncTtsSetting(this, EncTtsSetting::eINT, 66 insertSetting(eSPEED, new EncTtsSetting(this,
63 tr("Speed:"), speed, -10, 10)); 67 EncTtsSetting::eINT, tr("Speed:"), speed, -10, 10));
64 // options 68 // options
65 insertSetting(eOPTIONS,new EncTtsSetting(this,EncTtsSetting::eSTRING, 69 insertSetting(eOPTIONS, new EncTtsSetting(this,
66 tr("Options:"),RbSettings::subValue("sapi",RbSettings::TtsOptions))); 70 EncTtsSetting::eSTRING, tr("Options:"),
71 RbSettings::subValue(m_TTSType, RbSettings::TtsOptions)));
67 72
68} 73}
69 74
70void TTSSapi::saveSettings() 75void TTSSapi::saveSettings()
71{ 76{
72 //save settings in user config 77 //save settings in user config
73 RbSettings::setSubValue("sapi",RbSettings::TtsLanguage, 78 RbSettings::setSubValue(m_TTSType, RbSettings::TtsLanguage,
74 getSetting(eLANGUAGE)->current().toString()); 79 getSetting(eLANGUAGE)->current().toString());
75 RbSettings::setSubValue("sapi",RbSettings::TtsVoice, 80 RbSettings::setSubValue(m_TTSType, RbSettings::TtsVoice,
76 getSetting(eVOICE)->current().toString()); 81 getSetting(eVOICE)->current().toString());
77 RbSettings::setSubValue("sapi",RbSettings::TtsSpeed, 82 RbSettings::setSubValue(m_TTSType, RbSettings::TtsSpeed,
78 getSetting(eSPEED)->current().toInt()); 83 getSetting(eSPEED)->current().toInt());
79 RbSettings::setSubValue("sapi",RbSettings::TtsOptions, 84 RbSettings::setSubValue(m_TTSType, RbSettings::TtsOptions,
80 getSetting(eOPTIONS)->current().toString()); 85 getSetting(eOPTIONS)->current().toString());
81 86
82 RbSettings::sync(); 87 RbSettings::sync();
@@ -94,11 +99,10 @@ void TTSSapi::updateVoiceList()
94bool TTSSapi::start(QString *errStr) 99bool TTSSapi::start(QString *errStr)
95{ 100{
96 101
97 m_TTSOpts = RbSettings::subValue("sapi",RbSettings::TtsOptions).toString(); 102 m_TTSOpts = RbSettings::subValue(m_TTSType, RbSettings::TtsOptions).toString();
98 m_TTSLanguage =RbSettings::subValue("sapi",RbSettings::TtsLanguage).toString(); 103 m_TTSLanguage =RbSettings::subValue(m_TTSType, RbSettings::TtsLanguage).toString();
99 m_TTSVoice=RbSettings::subValue("sapi",RbSettings::TtsVoice).toString(); 104 m_TTSVoice=RbSettings::subValue(m_TTSType, RbSettings::TtsVoice).toString();
100 m_TTSSpeed=RbSettings::subValue("sapi",RbSettings::TtsSpeed).toString(); 105 m_TTSSpeed=RbSettings::subValue(m_TTSType, RbSettings::TtsSpeed).toString();
101 m_sapi4 = RbSettings::subValue("sapi",RbSettings::TtsUseSapi4).toBool();
102 106
103 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); 107 QFile::remove(QDir::tempPath() +"/sapi_voice.vbs");
104 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs"); 108 QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs");
@@ -118,9 +122,6 @@ bool TTSSapi::start(QString *errStr)
118 execstring.replace("%voice",m_TTSVoice); 122 execstring.replace("%voice",m_TTSVoice);
119 execstring.replace("%speed",m_TTSSpeed); 123 execstring.replace("%speed",m_TTSSpeed);
120 124
121 if(m_sapi4)
122 execstring.append(" /sapi4 ");
123
124 qDebug() << "[TTSSapi] Start:" << execstring; 125 qDebug() << "[TTSSapi] Start:" << execstring;
125 voicescript = new QProcess(NULL); 126 voicescript = new QProcess(NULL);
126 //connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error())); 127 //connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error()));
@@ -179,13 +180,10 @@ QStringList TTSSapi::getVoiceList(QString language)
179 return result; 180 return result;
180 181
181 // create the voice process 182 // create the voice process
182 QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices"; 183 QString execstring = m_TTSVoiceTemplate;
183 execstring.replace("%exe",m_TTSexec); 184 execstring.replace("%exe",m_TTSexec);
184 execstring.replace("%lang",language); 185 execstring.replace("%lang",language);
185 186
186 if(RbSettings::value(RbSettings::TtsUseSapi4).toBool())
187 execstring.append(" /sapi4 ");
188
189 qDebug() << "[TTSSapi] Start:" << execstring; 187 qDebug() << "[TTSSapi] Start:" << execstring;
190 voicescript = new QProcess(NULL); 188 voicescript = new QProcess(NULL);
191 voicescript->start(execstring); 189 voicescript->start(execstring);
@@ -263,7 +261,7 @@ bool TTSSapi::stop()
263 261
264bool TTSSapi::configOk() 262bool TTSSapi::configOk()
265{ 263{
266 if(RbSettings::subValue("sapi",RbSettings::TtsVoice).toString().isEmpty()) 264 if(RbSettings::subValue(m_TTSType, RbSettings::TtsVoice).toString().isEmpty())
267 return false; 265 return false;
268 return true; 266 return true;
269} 267}
diff --git a/rbutil/rbutilqt/base/ttssapi.h b/rbutil/rbutilqt/base/ttssapi.h
index 98f6f4255a..f645774852 100644
--- a/rbutil/rbutilqt/base/ttssapi.h
+++ b/rbutil/rbutilqt/base/ttssapi.h
@@ -61,12 +61,15 @@ class TTSSapi : public TTSBase
61 61
62 QString m_TTSexec; 62 QString m_TTSexec;
63 QString m_TTSOpts; 63 QString m_TTSOpts;
64 QString m_TTSTemplate;
65 QString m_TTSLanguage; 64 QString m_TTSLanguage;
66 QString m_TTSVoice; 65 QString m_TTSVoice;
67 QString m_TTSSpeed; 66 QString m_TTSSpeed;
68 bool m_sapi4;
69 bool m_started; 67 bool m_started;
68
69 protected:
70 QString m_TTSTemplate;
71 QString m_TTSVoiceTemplate;
72 QString m_TTSType;
70}; 73};
71 74
72 75