diff options
-rw-r--r-- | rbutil/rbutilqt/rbsettings.cpp | 16 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbsettings.h | 2 | ||||
-rw-r--r-- | rbutil/rbutilqt/sapicfgfrm.ui | 11 | ||||
-rw-r--r-- | rbutil/rbutilqt/tts.cpp | 23 | ||||
-rw-r--r-- | rbutil/rbutilqt/tts.h | 2 | ||||
-rw-r--r-- | rbutil/rbutilqt/ttsgui.cpp | 23 | ||||
-rw-r--r-- | rbutil/rbutilqt/ttsgui.h | 1 |
7 files changed, 68 insertions, 10 deletions
diff --git a/rbutil/rbutilqt/rbsettings.cpp b/rbutil/rbutilqt/rbsettings.cpp index 6e3e63110e..2aa43f7f84 100644 --- a/rbutil/rbutilqt/rbsettings.cpp +++ b/rbutil/rbutilqt/rbsettings.cpp | |||
@@ -307,6 +307,14 @@ QString RbSettings::ttsLang(QString tts) | |||
307 | return op; | 307 | return op; |
308 | } | 308 | } |
309 | 309 | ||
310 | bool RbSettings::ttsUseSapi4() | ||
311 | { | ||
312 | userSettings->beginGroup("sapi"); | ||
313 | bool op = userSettings->value("useSapi4",false).toBool(); | ||
314 | userSettings->endGroup(); | ||
315 | return op; | ||
316 | } | ||
317 | |||
310 | QString RbSettings::encoderPath(QString enc) | 318 | QString RbSettings::encoderPath(QString enc) |
311 | { | 319 | { |
312 | userSettings->beginGroup(enc); | 320 | userSettings->beginGroup(enc); |
@@ -523,6 +531,14 @@ void RbSettings::setTTSLang(QString tts, QString lang) | |||
523 | userSettings->endGroup(); | 531 | userSettings->endGroup(); |
524 | } | 532 | } |
525 | 533 | ||
534 | void RbSettings::setTTSUseSapi4(bool value) | ||
535 | { | ||
536 | userSettings->beginGroup("sapi"); | ||
537 | userSettings->setValue("useSapi4",value); | ||
538 | userSettings->endGroup(); | ||
539 | } | ||
540 | |||
541 | |||
526 | void RbSettings::setEncoderPath(QString enc, QString path) | 542 | void RbSettings::setEncoderPath(QString enc, QString path) |
527 | { | 543 | { |
528 | userSettings->beginGroup(enc); | 544 | userSettings->beginGroup(enc); |
diff --git a/rbutil/rbutilqt/rbsettings.h b/rbutil/rbutilqt/rbsettings.h index ad94c63801..0613bea022 100644 --- a/rbutil/rbutilqt/rbsettings.h +++ b/rbutil/rbutilqt/rbsettings.h | |||
@@ -69,6 +69,7 @@ class RbSettings : public QObject | |||
69 | QString ttsVoice(QString tts); | 69 | QString ttsVoice(QString tts); |
70 | int ttsSpeed(QString tts); | 70 | int ttsSpeed(QString tts); |
71 | QString ttsLang(QString tts); | 71 | QString ttsLang(QString tts); |
72 | bool ttsUseSapi4(); | ||
72 | QString encoderPath(QString enc); | 73 | QString encoderPath(QString enc); |
73 | QString encoderOptions(QString enc); | 74 | QString encoderOptions(QString enc); |
74 | double encoderQuality(QString enc); | 75 | double encoderQuality(QString enc); |
@@ -116,6 +117,7 @@ class RbSettings : public QObject | |||
116 | void setTTSSpeed(QString tts, int speed); | 117 | void setTTSSpeed(QString tts, int speed); |
117 | void setTTSVoice(QString tts, QString voice); | 118 | void setTTSVoice(QString tts, QString voice); |
118 | void setTTSLang(QString tts, QString lang); | 119 | void setTTSLang(QString tts, QString lang); |
120 | void setTTSUseSapi4(bool value); | ||
119 | void setEncoderPath(QString enc, QString path); | 121 | void setEncoderPath(QString enc, QString path); |
120 | void setEncoderOptions(QString enc, QString options); | 122 | void setEncoderOptions(QString enc, QString options); |
121 | void setEncoderQuality(QString enc, double q); | 123 | void setEncoderQuality(QString enc, double q); |
diff --git a/rbutil/rbutilqt/sapicfgfrm.ui b/rbutil/rbutilqt/sapicfgfrm.ui index 03fccd1291..955fcdd73f 100644 --- a/rbutil/rbutilqt/sapicfgfrm.ui +++ b/rbutil/rbutilqt/sapicfgfrm.ui | |||
@@ -66,7 +66,7 @@ | |||
66 | <item row="3" column="1" > | 66 | <item row="3" column="1" > |
67 | <widget class="QLineEdit" name="ttsoptions" /> | 67 | <widget class="QLineEdit" name="ttsoptions" /> |
68 | </item> | 68 | </item> |
69 | <item row="4" column="0" colspan="2" > | 69 | <item row="5" column="0" colspan="2" > |
70 | <spacer> | 70 | <spacer> |
71 | <property name="orientation" > | 71 | <property name="orientation" > |
72 | <enum>Qt::Vertical</enum> | 72 | <enum>Qt::Vertical</enum> |
@@ -79,7 +79,7 @@ | |||
79 | </property> | 79 | </property> |
80 | </spacer> | 80 | </spacer> |
81 | </item> | 81 | </item> |
82 | <item row="5" column="0" colspan="2" > | 82 | <item row="6" column="0" colspan="2" > |
83 | <layout class="QHBoxLayout" > | 83 | <layout class="QHBoxLayout" > |
84 | <item> | 84 | <item> |
85 | <widget class="QPushButton" name="reset" > | 85 | <widget class="QPushButton" name="reset" > |
@@ -123,6 +123,13 @@ | |||
123 | </item> | 123 | </item> |
124 | </layout> | 124 | </layout> |
125 | </item> | 125 | </item> |
126 | <item row="4" column="0" colspan="2" > | ||
127 | <widget class="QCheckBox" name="usesapi4" > | ||
128 | <property name="text" > | ||
129 | <string>Use Sapi 4</string> | ||
130 | </property> | ||
131 | </widget> | ||
132 | </item> | ||
126 | </layout> | 133 | </layout> |
127 | </widget> | 134 | </widget> |
128 | </item> | 135 | </item> |
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 |
diff --git a/rbutil/rbutilqt/tts.h b/rbutil/rbutilqt/tts.h index 1addbe2ebb..a5427fe05f 100644 --- a/rbutil/rbutilqt/tts.h +++ b/rbutil/rbutilqt/tts.h | |||
@@ -88,7 +88,7 @@ private: | |||
88 | QString m_TTSLanguage; | 88 | QString m_TTSLanguage; |
89 | QString m_TTSVoice; | 89 | QString m_TTSVoice; |
90 | QString m_TTSSpeed; | 90 | QString m_TTSSpeed; |
91 | 91 | bool m_sapi4; | |
92 | }; | 92 | }; |
93 | 93 | ||
94 | class TTSExes : public TTSBase | 94 | class TTSExes : public TTSBase |
diff --git a/rbutil/rbutilqt/ttsgui.cpp b/rbutil/rbutilqt/ttsgui.cpp index 76488c5411..3ed2e87f0e 100644 --- a/rbutil/rbutilqt/ttsgui.cpp +++ b/rbutil/rbutilqt/ttsgui.cpp | |||
@@ -30,7 +30,7 @@ TTSSapiGui::TTSSapiGui(TTSSapi* sapi,QDialog* parent) : QDialog(parent) | |||
30 | this->hide(); | 30 | this->hide(); |
31 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); | 31 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); |
32 | connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString))); | 32 | connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString))); |
33 | 33 | connect(ui.usesapi4,SIGNAL(stateChanged(int)),this,SLOT(useSapi4Changed(int))); | |
34 | } | 34 | } |
35 | 35 | ||
36 | void TTSSapiGui::showCfg() | 36 | void TTSSapiGui::showCfg() |
@@ -40,8 +40,11 @@ void TTSSapiGui::showCfg() | |||
40 | QString selLang = settings->ttsLang("sapi"); | 40 | QString selLang = settings->ttsLang("sapi"); |
41 | QString selVoice = settings->ttsVoice("sapi"); | 41 | QString selVoice = settings->ttsVoice("sapi"); |
42 | ui.speed->setValue(settings->ttsSpeed("sapi")); | 42 | ui.speed->setValue(settings->ttsSpeed("sapi")); |
43 | if(settings->ttsUseSapi4()) | ||
44 | ui.usesapi4->setCheckState(Qt::Checked); | ||
45 | else | ||
46 | ui.usesapi4->setCheckState(Qt::Unchecked); | ||
43 | 47 | ||
44 | |||
45 | // fill in language combobox | 48 | // fill in language combobox |
46 | QStringList languages = settings->allLanguages(); | 49 | QStringList languages = settings->allLanguages(); |
47 | 50 | ||
@@ -79,6 +82,10 @@ void TTSSapiGui::accept(void) | |||
79 | settings->setTTSLang("sapi",ui.languagecombo->currentText()); | 82 | settings->setTTSLang("sapi",ui.languagecombo->currentText()); |
80 | settings->setTTSVoice("sapi",ui.voicecombo->currentText()); | 83 | settings->setTTSVoice("sapi",ui.voicecombo->currentText()); |
81 | settings->setTTSSpeed("sapi",ui.speed->value()); | 84 | settings->setTTSSpeed("sapi",ui.speed->value()); |
85 | if(ui.usesapi4->checkState() == Qt::Checked) | ||
86 | settings->setTTSUseSapi4(true); | ||
87 | else | ||
88 | settings->setTTSUseSapi4(false); | ||
82 | // sync settings | 89 | // sync settings |
83 | settings->sync(); | 90 | settings->sync(); |
84 | 91 | ||
@@ -98,6 +105,18 @@ void TTSSapiGui::updateVoices(QString language) | |||
98 | 105 | ||
99 | } | 106 | } |
100 | 107 | ||
108 | void TTSSapiGui::useSapi4Changed(int) | ||
109 | { | ||
110 | if(ui.usesapi4->checkState() == Qt::Checked) | ||
111 | settings->setTTSUseSapi4(true); | ||
112 | else | ||
113 | settings->setTTSUseSapi4(false); | ||
114 | // sync settings | ||
115 | settings->sync(); | ||
116 | updateVoices(ui.languagecombo->currentText()); | ||
117 | |||
118 | } | ||
119 | |||
101 | TTSExesGui::TTSExesGui(QDialog* parent) : QDialog(parent) | 120 | TTSExesGui::TTSExesGui(QDialog* parent) : QDialog(parent) |
102 | { | 121 | { |
103 | ui.setupUi(this); | 122 | ui.setupUi(this); |
diff --git a/rbutil/rbutilqt/ttsgui.h b/rbutil/rbutilqt/ttsgui.h index 427dcd288c..8f53bf34a4 100644 --- a/rbutil/rbutilqt/ttsgui.h +++ b/rbutil/rbutilqt/ttsgui.h | |||
@@ -42,6 +42,7 @@ public slots: | |||
42 | virtual void reject(void); | 42 | virtual void reject(void); |
43 | virtual void reset(void); | 43 | virtual void reset(void); |
44 | void updateVoices(QString language); | 44 | void updateVoices(QString language); |
45 | void useSapi4Changed(int); | ||
45 | private: | 46 | private: |
46 | Ui::SapiCfgFrm ui; | 47 | Ui::SapiCfgFrm ui; |
47 | RbSettings* settings; | 48 | RbSettings* settings; |