diff options
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r-- | rbutil/rbutilqt/configure.cpp | 19 | ||||
-rw-r--r-- | rbutil/rbutilqt/configure.h | 8 | ||||
-rw-r--r-- | rbutil/rbutilqt/createvoicefrm.ui | 31 | ||||
-rw-r--r-- | rbutil/rbutilqt/createvoicewindow.cpp | 27 | ||||
-rw-r--r-- | rbutil/rbutilqt/createvoicewindow.h | 3 | ||||
-rw-r--r-- | rbutil/rbutilqt/installtalkwindow.cpp | 18 | ||||
-rw-r--r-- | rbutil/rbutilqt/installtalkwindow.h | 3 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.cpp | 9 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.pro | 6 | ||||
-rw-r--r-- | rbutil/rbutilqt/sapicfgfrm.ui | 57 | ||||
-rw-r--r-- | rbutil/rbutilqt/talkfile.cpp | 24 | ||||
-rw-r--r-- | rbutil/rbutilqt/talkfile.h | 3 | ||||
-rw-r--r-- | rbutil/rbutilqt/tts.cpp | 117 | ||||
-rw-r--r-- | rbutil/rbutilqt/tts.h | 16 | ||||
-rw-r--r-- | rbutil/rbutilqt/voicefile.cpp | 10 | ||||
-rw-r--r-- | rbutil/rbutilqt/voicefile.h | 5 |
16 files changed, 264 insertions, 92 deletions
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp index 993757ed5a..e74dc6e30d 100644 --- a/rbutil/rbutilqt/configure.cpp +++ b/rbutil/rbutilqt/configure.cpp | |||
@@ -150,10 +150,17 @@ void Config::abort() | |||
150 | this->close(); | 150 | this->close(); |
151 | } | 151 | } |
152 | 152 | ||
153 | 153 | void Config::setSettings(QSettings* user,QSettings* device) | |
154 | void Config::setUserSettings(QSettings *user) | ||
155 | { | 154 | { |
156 | userSettings = user; | 155 | userSettings = user; |
156 | devices = device; | ||
157 | |||
158 | setUserSettings(); | ||
159 | setDevices(); | ||
160 | } | ||
161 | |||
162 | void Config::setUserSettings() | ||
163 | { | ||
157 | // set proxy | 164 | // set proxy |
158 | proxy = userSettings->value("proxy").toString(); | 165 | proxy = userSettings->value("proxy").toString(); |
159 | 166 | ||
@@ -214,9 +221,9 @@ void Config::updateCacheInfo(QString path) | |||
214 | } | 221 | } |
215 | 222 | ||
216 | 223 | ||
217 | void Config::setDevices(QSettings *dev) | 224 | void Config::setDevices() |
218 | { | 225 | { |
219 | devices = dev; | 226 | |
220 | // setup devices table | 227 | // setup devices table |
221 | qDebug() << "Config::setDevices()"; | 228 | qDebug() << "Config::setDevices()"; |
222 | devices->beginGroup("platforms"); | 229 | devices->beginGroup("platforms"); |
@@ -320,7 +327,7 @@ void Config::updateTtsState(int index) | |||
320 | { | 327 | { |
321 | QString ttsName = ui.comboTts->itemText(index); | 328 | QString ttsName = ui.comboTts->itemText(index); |
322 | TTSBase* tts = getTTS(ttsName); | 329 | TTSBase* tts = getTTS(ttsName); |
323 | tts->setUserCfg(userSettings); | 330 | tts->setCfg(userSettings,devices); |
324 | 331 | ||
325 | if(tts->configOk()) | 332 | if(tts->configOk()) |
326 | { | 333 | { |
@@ -624,7 +631,7 @@ void Config::configTts() | |||
624 | { | 631 | { |
625 | TTSBase* tts =getTTS(ui.comboTts->currentText()); | 632 | TTSBase* tts =getTTS(ui.comboTts->currentText()); |
626 | 633 | ||
627 | tts->setUserCfg(userSettings); | 634 | tts->setCfg(userSettings,devices); |
628 | tts->showCfg(); | 635 | tts->showCfg(); |
629 | updateTtsState(ui.comboTts->currentIndex()); | 636 | updateTtsState(ui.comboTts->currentIndex()); |
630 | } | 637 | } |
diff --git a/rbutil/rbutilqt/configure.h b/rbutil/rbutilqt/configure.h index c7068e01dc..bb4afb6c86 100644 --- a/rbutil/rbutilqt/configure.h +++ b/rbutil/rbutilqt/configure.h | |||
@@ -29,9 +29,8 @@ class Config : public QDialog | |||
29 | Q_OBJECT | 29 | Q_OBJECT |
30 | public: | 30 | public: |
31 | Config(QWidget *parent = 0,int index=0); | 31 | Config(QWidget *parent = 0,int index=0); |
32 | void setUserSettings(QSettings*); | 32 | void setSettings(QSettings* user,QSettings* device); |
33 | void setDevices(QSettings*); | 33 | |
34 | |||
35 | signals: | 34 | signals: |
36 | void settingsUpdated(void); | 35 | void settingsUpdated(void); |
37 | 36 | ||
@@ -40,6 +39,9 @@ class Config : public QDialog | |||
40 | void abort(void); | 39 | void abort(void); |
41 | 40 | ||
42 | private: | 41 | private: |
42 | void setUserSettings(); | ||
43 | void setDevices(); | ||
44 | |||
43 | Ui::ConfigForm ui; | 45 | Ui::ConfigForm ui; |
44 | QSettings *userSettings; | 46 | QSettings *userSettings; |
45 | QSettings *devices; | 47 | QSettings *devices; |
diff --git a/rbutil/rbutilqt/createvoicefrm.ui b/rbutil/rbutilqt/createvoicefrm.ui index 8847409f37..c79478f1a1 100644 --- a/rbutil/rbutilqt/createvoicefrm.ui +++ b/rbutil/rbutilqt/createvoicefrm.ui | |||
@@ -8,8 +8,8 @@ | |||
8 | <rect> | 8 | <rect> |
9 | <x>0</x> | 9 | <x>0</x> |
10 | <y>0</y> | 10 | <y>0</y> |
11 | <width>637</width> | 11 | <width>659</width> |
12 | <height>421</height> | 12 | <height>482</height> |
13 | </rect> | 13 | </rect> |
14 | </property> | 14 | </property> |
15 | <property name="windowTitle" > | 15 | <property name="windowTitle" > |
@@ -94,7 +94,7 @@ | |||
94 | </layout> | 94 | </layout> |
95 | </widget> | 95 | </widget> |
96 | </item> | 96 | </item> |
97 | <item row="3" column="1" > | 97 | <item row="4" column="1" > |
98 | <spacer> | 98 | <spacer> |
99 | <property name="orientation" > | 99 | <property name="orientation" > |
100 | <enum>Qt::Vertical</enum> | 100 | <enum>Qt::Vertical</enum> |
@@ -107,7 +107,7 @@ | |||
107 | </property> | 107 | </property> |
108 | </spacer> | 108 | </spacer> |
109 | </item> | 109 | </item> |
110 | <item row="4" column="1" > | 110 | <item row="5" column="1" > |
111 | <spacer> | 111 | <spacer> |
112 | <property name="orientation" > | 112 | <property name="orientation" > |
113 | <enum>Qt::Horizontal</enum> | 113 | <enum>Qt::Horizontal</enum> |
@@ -120,7 +120,7 @@ | |||
120 | </property> | 120 | </property> |
121 | </spacer> | 121 | </spacer> |
122 | </item> | 122 | </item> |
123 | <item row="4" column="2" > | 123 | <item row="5" column="2" > |
124 | <layout class="QHBoxLayout" > | 124 | <layout class="QHBoxLayout" > |
125 | <item> | 125 | <item> |
126 | <widget class="QPushButton" name="buttonOk" > | 126 | <widget class="QPushButton" name="buttonOk" > |
@@ -144,6 +144,27 @@ | |||
144 | </item> | 144 | </item> |
145 | </layout> | 145 | </layout> |
146 | </item> | 146 | </item> |
147 | <item row="3" column="1" colspan="2" > | ||
148 | <layout class="QHBoxLayout" > | ||
149 | <item> | ||
150 | <widget class="QLabel" name="label_3" > | ||
151 | <property name="text" > | ||
152 | <string>Wavtrim Threshold</string> | ||
153 | </property> | ||
154 | </widget> | ||
155 | </item> | ||
156 | <item> | ||
157 | <widget class="QSpinBox" name="wavtrimthreshold" > | ||
158 | <property name="maximum" > | ||
159 | <number>5000</number> | ||
160 | </property> | ||
161 | <property name="value" > | ||
162 | <number>500</number> | ||
163 | </property> | ||
164 | </widget> | ||
165 | </item> | ||
166 | </layout> | ||
167 | </item> | ||
147 | </layout> | 168 | </layout> |
148 | </widget> | 169 | </widget> |
149 | <tabstops> | 170 | <tabstops> |
diff --git a/rbutil/rbutilqt/createvoicewindow.cpp b/rbutil/rbutilqt/createvoicewindow.cpp index 3ae489c7c7..ff72e9a463 100644 --- a/rbutil/rbutilqt/createvoicewindow.cpp +++ b/rbutil/rbutilqt/createvoicewindow.cpp | |||
@@ -34,8 +34,7 @@ CreateVoiceWindow::CreateVoiceWindow(QWidget *parent) : QDialog(parent) | |||
34 | void CreateVoiceWindow::change() | 34 | void CreateVoiceWindow::change() |
35 | { | 35 | { |
36 | Config *cw = new Config(this,4); | 36 | Config *cw = new Config(this,4); |
37 | cw->setUserSettings(userSettings); | 37 | cw->setSettings(userSettings,devices); |
38 | cw->setDevices(devices); | ||
39 | cw->show(); | 38 | cw->show(); |
40 | connect(cw, SIGNAL(settingsUpdated()), this, SIGNAL(settingsUpdated())); | 39 | connect(cw, SIGNAL(settingsUpdated()), this, SIGNAL(settingsUpdated())); |
41 | } | 40 | } |
@@ -47,19 +46,21 @@ void CreateVoiceWindow::accept() | |||
47 | connect(logger,SIGNAL(closed()),this,SLOT(close())); | 46 | connect(logger,SIGNAL(closed()),this,SLOT(close())); |
48 | 47 | ||
49 | QString platform = userSettings->value("platform").toString(); | 48 | QString platform = userSettings->value("platform").toString(); |
50 | QString lang = ui.comboLanguage->currentText(); | 49 | QString lang = ui.comboLanguage->currentText(); |
50 | int wvThreshold = ui.wavtrimthreshold->value(); | ||
51 | 51 | ||
52 | //safe selected language | 52 | //safe selected language |
53 | userSettings->setValue("voicelanguage",lang); | 53 | userSettings->setValue("voicelanguage",lang); |
54 | userSettings->setValue("wavtrimthreshold",wvThreshold); | ||
54 | userSettings->sync(); | 55 | userSettings->sync(); |
55 | 56 | ||
56 | //configure voicecreator | 57 | //configure voicecreator |
57 | voicecreator->setUserSettings(userSettings); | 58 | voicecreator->setSettings(userSettings,devices); |
58 | voicecreator->setDeviceSettings(devices); | ||
59 | voicecreator->setMountPoint(userSettings->value("mountpoint").toString()); | 59 | voicecreator->setMountPoint(userSettings->value("mountpoint").toString()); |
60 | voicecreator->setTargetId(devices->value(platform + "/targetid").toInt()); | 60 | voicecreator->setTargetId(devices->value(platform + "/targetid").toInt()); |
61 | voicecreator->setLang(lang); | 61 | voicecreator->setLang(lang); |
62 | voicecreator->setProxy(m_proxy); | 62 | voicecreator->setProxy(m_proxy); |
63 | voicecreator->setWavtrimThreshold(wvThreshold); | ||
63 | 64 | ||
64 | //start creating | 65 | //start creating |
65 | voicecreator->createVoiceFile(logger); | 66 | voicecreator->createVoiceFile(logger); |
@@ -67,9 +68,10 @@ void CreateVoiceWindow::accept() | |||
67 | 68 | ||
68 | 69 | ||
69 | 70 | ||
70 | void CreateVoiceWindow::setDeviceSettings(QSettings *dev) | 71 | void CreateVoiceWindow::setSettings(QSettings *user,QSettings *dev) |
71 | { | 72 | { |
72 | devices = dev; | 73 | devices = dev; |
74 | userSettings = user; | ||
73 | qDebug() << "Install::setDeviceSettings:" << devices; | 75 | qDebug() << "Install::setDeviceSettings:" << devices; |
74 | 76 | ||
75 | // fill in language combobox | 77 | // fill in language combobox |
@@ -86,15 +88,10 @@ void CreateVoiceWindow::setDeviceSettings(QSettings *dev) | |||
86 | ui.comboLanguage->addItems(languages); | 88 | ui.comboLanguage->addItems(languages); |
87 | // set saved lang | 89 | // set saved lang |
88 | ui.comboLanguage->setCurrentIndex(ui.comboLanguage->findText(userSettings->value("voicelanguage").toString())); | 90 | ui.comboLanguage->setCurrentIndex(ui.comboLanguage->findText(userSettings->value("voicelanguage").toString())); |
89 | } | ||
90 | |||
91 | void CreateVoiceWindow::setUserSettings(QSettings *user) | ||
92 | { | ||
93 | userSettings = user; | ||
94 | 91 | ||
95 | QString ttsName = userSettings->value("tts", "none").toString(); | 92 | QString ttsName = userSettings->value("tts", "none").toString(); |
96 | TTSBase* tts = getTTS(ttsName); | 93 | TTSBase* tts = getTTS(ttsName); |
97 | tts->setUserCfg(userSettings); | 94 | tts->setCfg(userSettings,devices); |
98 | if(tts->configOk()) | 95 | if(tts->configOk()) |
99 | ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(ttsName)); | 96 | ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(ttsName)); |
100 | else | 97 | else |
@@ -107,8 +104,12 @@ void CreateVoiceWindow::setUserSettings(QSettings *user) | |||
107 | ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder)); | 104 | ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder)); |
108 | else | 105 | else |
109 | ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!")); | 106 | ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!")); |
110 | 107 | ||
108 | ui.wavtrimthreshold->setValue(userSettings->value("wavtrimthreshold", 500).toInt()); | ||
109 | |||
111 | } | 110 | } |
112 | 111 | ||
113 | 112 | ||
114 | 113 | ||
114 | |||
115 | |||
diff --git a/rbutil/rbutilqt/createvoicewindow.h b/rbutil/rbutilqt/createvoicewindow.h index 76472721fe..cd99b389a2 100644 --- a/rbutil/rbutilqt/createvoicewindow.h +++ b/rbutil/rbutilqt/createvoicewindow.h | |||
@@ -33,8 +33,7 @@ class CreateVoiceWindow : public QDialog | |||
33 | Q_OBJECT | 33 | Q_OBJECT |
34 | public: | 34 | public: |
35 | CreateVoiceWindow(QWidget *parent = 0); | 35 | CreateVoiceWindow(QWidget *parent = 0); |
36 | void setUserSettings(QSettings*); | 36 | void setSettings(QSettings* user,QSettings* device); |
37 | void setDeviceSettings(QSettings*); | ||
38 | void setProxy(QUrl proxy){m_proxy = proxy;} | 37 | void setProxy(QUrl proxy){m_proxy = proxy;} |
39 | 38 | ||
40 | signals: | 39 | signals: |
diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp index 4634ba3eaf..e1b0b69049 100644 --- a/rbutil/rbutilqt/installtalkwindow.cpp +++ b/rbutil/rbutilqt/installtalkwindow.cpp | |||
@@ -66,8 +66,7 @@ void InstallTalkWindow::setTalkFolder(QString folder) | |||
66 | void InstallTalkWindow::change() | 66 | void InstallTalkWindow::change() |
67 | { | 67 | { |
68 | Config *cw = new Config(this,4); | 68 | Config *cw = new Config(this,4); |
69 | cw->setUserSettings(userSettings); | 69 | cw->setSettings(userSettings,devices); |
70 | cw->setDevices(devices); | ||
71 | cw->show(); | 70 | cw->show(); |
72 | connect(cw, SIGNAL(settingsUpdated()), this, SIGNAL(settingsUpdated())); | 71 | connect(cw, SIGNAL(settingsUpdated()), this, SIGNAL(settingsUpdated())); |
73 | } | 72 | } |
@@ -91,7 +90,7 @@ void InstallTalkWindow::accept() | |||
91 | 90 | ||
92 | userSettings->sync(); | 91 | userSettings->sync(); |
93 | 92 | ||
94 | talkcreator->setUserSettings(userSettings); | 93 | talkcreator->setSettings(userSettings,devices); |
95 | talkcreator->setDir(QDir(folderToTalk)); | 94 | talkcreator->setDir(QDir(folderToTalk)); |
96 | talkcreator->setMountPoint(userSettings->value("mountpoint").toString()); | 95 | talkcreator->setMountPoint(userSettings->value("mountpoint").toString()); |
97 | 96 | ||
@@ -107,14 +106,15 @@ void InstallTalkWindow::accept() | |||
107 | } | 106 | } |
108 | 107 | ||
109 | 108 | ||
110 | void InstallTalkWindow::setDeviceSettings(QSettings *dev) | 109 | void InstallTalkWindow::setSettings(QSettings *user,QSettings *dev) |
111 | { | 110 | { |
112 | devices = dev; | 111 | devices = dev; |
112 | userSettings = user; | ||
113 | qDebug() << "Install::setDeviceSettings:" << devices; | 113 | qDebug() << "Install::setDeviceSettings:" << devices; |
114 | 114 | ||
115 | QString ttsName = userSettings->value("tts", "none").toString(); | 115 | QString ttsName = userSettings->value("tts", "none").toString(); |
116 | TTSBase* tts = getTTS(ttsName); | 116 | TTSBase* tts = getTTS(ttsName); |
117 | tts->setUserCfg(userSettings); | 117 | tts->setCfg(userSettings,devices); |
118 | if(tts->configOk()) | 118 | if(tts->configOk()) |
119 | ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(ttsName)); | 119 | ui.labelTtsProfile->setText(tr("Selected TTS engine : <b>%1</b>").arg(ttsName)); |
120 | else | 120 | else |
@@ -127,12 +127,8 @@ void InstallTalkWindow::setDeviceSettings(QSettings *dev) | |||
127 | ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder)); | 127 | ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg(encoder)); |
128 | else | 128 | else |
129 | ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!")); | 129 | ui.labelEncProfile->setText(tr("Selected Encoder: <b>%1</b>").arg("Invalid encoder configuration!")); |
130 | } | 130 | |
131 | |||
132 | void InstallTalkWindow::setUserSettings(QSettings *user) | ||
133 | { | ||
134 | userSettings = user; | ||
135 | |||
136 | setTalkFolder(userSettings->value("last_talked_folder").toString()); | 131 | setTalkFolder(userSettings->value("last_talked_folder").toString()); |
137 | 132 | ||
138 | } | 133 | } |
134 | |||
diff --git a/rbutil/rbutilqt/installtalkwindow.h b/rbutil/rbutilqt/installtalkwindow.h index 11c4c6b6a8..5899c5701e 100644 --- a/rbutil/rbutilqt/installtalkwindow.h +++ b/rbutil/rbutilqt/installtalkwindow.h | |||
@@ -33,8 +33,7 @@ class InstallTalkWindow : public QDialog | |||
33 | Q_OBJECT | 33 | Q_OBJECT |
34 | public: | 34 | public: |
35 | InstallTalkWindow(QWidget *parent = 0); | 35 | InstallTalkWindow(QWidget *parent = 0); |
36 | void setUserSettings(QSettings*); | 36 | void setSettings(QSettings* user,QSettings* device); |
37 | void setDeviceSettings(QSettings*); | ||
38 | 37 | ||
39 | signals: | 38 | signals: |
40 | void settingsUpdated(void); | 39 | void settingsUpdated(void); |
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp index a28defc413..bbba56e2e8 100644 --- a/rbutil/rbutilqt/rbutilqt.cpp +++ b/rbutil/rbutilqt/rbutilqt.cpp | |||
@@ -253,8 +253,7 @@ void RbUtilQt::help() | |||
253 | void RbUtilQt::configDialog() | 253 | void RbUtilQt::configDialog() |
254 | { | 254 | { |
255 | Config *cw = new Config(this); | 255 | Config *cw = new Config(this); |
256 | cw->setUserSettings(userSettings); | 256 | cw->setSettings(userSettings,devices); |
257 | cw->setDevices(devices); | ||
258 | cw->show(); | 257 | cw->show(); |
259 | connect(cw, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo())); | 258 | connect(cw, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo())); |
260 | connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings())); | 259 | connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings())); |
@@ -748,8 +747,7 @@ void RbUtilQt::createTalkFiles(void) | |||
748 | { | 747 | { |
749 | if(chkConfig(true)) return; | 748 | if(chkConfig(true)) return; |
750 | InstallTalkWindow *installWindow = new InstallTalkWindow(this); | 749 | InstallTalkWindow *installWindow = new InstallTalkWindow(this); |
751 | installWindow->setUserSettings(userSettings); | 750 | installWindow->setSettings(userSettings,devices); |
752 | installWindow->setDeviceSettings(devices); | ||
753 | installWindow->show(); | 751 | installWindow->show(); |
754 | connect(installWindow, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo())); | 752 | connect(installWindow, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo())); |
755 | connect(installWindow, SIGNAL(settingsUpdated()), this, SLOT(updateSettings())); | 753 | connect(installWindow, SIGNAL(settingsUpdated()), this, SLOT(updateSettings())); |
@@ -760,8 +758,7 @@ void RbUtilQt::createVoiceFile(void) | |||
760 | { | 758 | { |
761 | if(chkConfig(true)) return; | 759 | if(chkConfig(true)) return; |
762 | CreateVoiceWindow *installWindow = new CreateVoiceWindow(this); | 760 | CreateVoiceWindow *installWindow = new CreateVoiceWindow(this); |
763 | installWindow->setUserSettings(userSettings); | 761 | installWindow->setSettings(userSettings,devices); |
764 | installWindow->setDeviceSettings(devices); | ||
765 | installWindow->setProxy(proxy()); | 762 | installWindow->setProxy(proxy()); |
766 | 763 | ||
767 | installWindow->show(); | 764 | installWindow->show(); |
diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro index fe95a4c665..ca20444a8b 100644 --- a/rbutil/rbutilqt/rbutilqt.pro +++ b/rbutil/rbutilqt/rbutilqt.pro | |||
@@ -17,6 +17,12 @@ rbspeex.commands = @$(MAKE) -C ../../tools/rbspeex librbspeex.a | |||
17 | QMAKE_EXTRA_TARGETS = rbspeex | 17 | QMAKE_EXTRA_TARGETS = rbspeex |
18 | PRE_TARGETDEPS = rbspeex | 18 | PRE_TARGETDEPS = rbspeex |
19 | 19 | ||
20 | # add a custom rule for makeing the translations | ||
21 | lrelease.commands = lrelease rbutilqt.pro | ||
22 | QMAKE_EXTRA_TARGETS += lrelease | ||
23 | PRE_TARGETDEPS = lrelease | ||
24 | |||
25 | |||
20 | SOURCES += rbutilqt.cpp \ | 26 | SOURCES += rbutilqt.cpp \ |
21 | main.cpp \ | 27 | main.cpp \ |
22 | install.cpp \ | 28 | install.cpp \ |
diff --git a/rbutil/rbutilqt/sapicfgfrm.ui b/rbutil/rbutilqt/sapicfgfrm.ui index 9e4cde430a..03fccd1291 100644 --- a/rbutil/rbutilqt/sapicfgfrm.ui +++ b/rbutil/rbutilqt/sapicfgfrm.ui | |||
@@ -18,41 +18,68 @@ | |||
18 | <property name="title" > | 18 | <property name="title" > |
19 | <string>Configure TTS Engine</string> | 19 | <string>Configure TTS Engine</string> |
20 | </property> | 20 | </property> |
21 | <layout class="QVBoxLayout" > | 21 | <layout class="QGridLayout" > |
22 | <item> | 22 | <item row="0" column="0" > |
23 | <widget class="QLabel" name="label_2" > | 23 | <widget class="QLabel" name="label_3" > |
24 | <property name="text" > | 24 | <property name="text" > |
25 | <string>TTS options</string> | 25 | <string>Language</string> |
26 | </property> | 26 | </property> |
27 | </widget> | 27 | </widget> |
28 | </item> | 28 | </item> |
29 | <item> | 29 | <item row="0" column="1" > |
30 | <widget class="QLineEdit" name="ttsoptions" /> | 30 | <widget class="QComboBox" name="languagecombo" /> |
31 | </item> | 31 | </item> |
32 | <item> | 32 | <item row="1" column="0" > |
33 | <widget class="QLabel" name="label_3" > | 33 | <widget class="QLabel" name="label" > |
34 | <property name="text" > | 34 | <property name="text" > |
35 | <string>Language</string> | 35 | <string>Voice</string> |
36 | </property> | ||
37 | </widget> | ||
38 | </item> | ||
39 | <item row="1" column="1" > | ||
40 | <widget class="QComboBox" name="voicecombo" /> | ||
41 | </item> | ||
42 | <item row="2" column="0" > | ||
43 | <widget class="QLabel" name="label_4" > | ||
44 | <property name="text" > | ||
45 | <string>Speed</string> | ||
36 | </property> | 46 | </property> |
37 | </widget> | 47 | </widget> |
38 | </item> | 48 | </item> |
39 | <item> | 49 | <item row="2" column="1" > |
40 | <widget class="QLineEdit" name="ttslanguage" /> | 50 | <widget class="QSpinBox" name="speed" > |
51 | <property name="minimum" > | ||
52 | <number>-10</number> | ||
53 | </property> | ||
54 | <property name="maximum" > | ||
55 | <number>10</number> | ||
56 | </property> | ||
57 | </widget> | ||
58 | </item> | ||
59 | <item row="3" column="0" > | ||
60 | <widget class="QLabel" name="label_2" > | ||
61 | <property name="text" > | ||
62 | <string>TTS options</string> | ||
63 | </property> | ||
64 | </widget> | ||
65 | </item> | ||
66 | <item row="3" column="1" > | ||
67 | <widget class="QLineEdit" name="ttsoptions" /> | ||
41 | </item> | 68 | </item> |
42 | <item> | 69 | <item row="4" column="0" colspan="2" > |
43 | <spacer> | 70 | <spacer> |
44 | <property name="orientation" > | 71 | <property name="orientation" > |
45 | <enum>Qt::Vertical</enum> | 72 | <enum>Qt::Vertical</enum> |
46 | </property> | 73 | </property> |
47 | <property name="sizeHint" > | 74 | <property name="sizeHint" > |
48 | <size> | 75 | <size> |
49 | <width>20</width> | 76 | <width>473</width> |
50 | <height>40</height> | 77 | <height>21</height> |
51 | </size> | 78 | </size> |
52 | </property> | 79 | </property> |
53 | </spacer> | 80 | </spacer> |
54 | </item> | 81 | </item> |
55 | <item> | 82 | <item row="5" column="0" colspan="2" > |
56 | <layout class="QHBoxLayout" > | 83 | <layout class="QHBoxLayout" > |
57 | <item> | 84 | <item> |
58 | <widget class="QPushButton" name="reset" > | 85 | <widget class="QPushButton" name="reset" > |
diff --git a/rbutil/rbutilqt/talkfile.cpp b/rbutil/rbutilqt/talkfile.cpp index c602716f67..89166daa90 100644 --- a/rbutil/rbutilqt/talkfile.cpp +++ b/rbutil/rbutilqt/talkfile.cpp | |||
@@ -28,15 +28,17 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger) | |||
28 | { | 28 | { |
29 | m_abort = false; | 29 | m_abort = false; |
30 | m_logger = logger; | 30 | m_logger = logger; |
31 | m_logger->addItem("Starting Talk file generation",LOGINFO); | 31 | m_logger->addItem(tr("Starting Talk file generation"),LOGINFO); |
32 | 32 | ||
33 | //tts | 33 | //tts |
34 | m_tts = getTTS(userSettings->value("tts").toString()); | 34 | m_tts = getTTS(userSettings->value("tts").toString()); |
35 | m_tts->setUserCfg(userSettings); | 35 | m_tts->setCfg(userSettings,deviceSettings); |
36 | 36 | ||
37 | if(!m_tts->start()) | 37 | QString errStr; |
38 | if(!m_tts->start(&errStr)) | ||
38 | { | 39 | { |
39 | m_logger->addItem("Init of TTS engine failed",LOGERROR); | 40 | m_logger->addItem(errStr,LOGERROR); |
41 | m_logger->addItem(tr("Init of TTS engine failed"),LOGERROR); | ||
40 | m_logger->abort(); | 42 | m_logger->abort(); |
41 | return false; | 43 | return false; |
42 | } | 44 | } |
@@ -47,7 +49,7 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger) | |||
47 | 49 | ||
48 | if(!m_enc->start()) | 50 | if(!m_enc->start()) |
49 | { | 51 | { |
50 | m_logger->addItem("Init of Encoder engine failed",LOGERROR); | 52 | m_logger->addItem(tr("Init of Encoder engine failed"),LOGERROR); |
51 | m_logger->abort(); | 53 | m_logger->abort(); |
52 | m_tts->stop(); | 54 | m_tts->stop(); |
53 | return false; | 55 | return false; |
@@ -65,7 +67,7 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger) | |||
65 | { | 67 | { |
66 | if(m_abort) | 68 | if(m_abort) |
67 | { | 69 | { |
68 | m_logger->addItem("Talk file creation aborted",LOGERROR); | 70 | m_logger->addItem(tr("Talk file creation aborted"),LOGERROR); |
69 | m_logger->abort(); | 71 | m_logger->abort(); |
70 | m_tts->stop(); | 72 | m_tts->stop(); |
71 | return false; | 73 | return false; |
@@ -127,10 +129,10 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger) | |||
127 | { | 129 | { |
128 | if(!wavfilenameInf.exists() || m_overwriteWav) | 130 | if(!wavfilenameInf.exists() || m_overwriteWav) |
129 | { | 131 | { |
130 | m_logger->addItem("Voicing of " + toSpeak,LOGINFO); | 132 | m_logger->addItem(tr("Voicing of %1").arg(toSpeak),LOGINFO); |
131 | if(!m_tts->voice(toSpeak,wavfilename)) | 133 | if(!m_tts->voice(toSpeak,wavfilename)) |
132 | { | 134 | { |
133 | m_logger->addItem("Voicing of " + toSpeak + " failed",LOGERROR); | 135 | m_logger->addItem(tr("Voicing of %s failed").arg(toSpeak),LOGERROR); |
134 | m_logger->abort(); | 136 | m_logger->abort(); |
135 | m_tts->stop(); | 137 | m_tts->stop(); |
136 | m_enc->stop(); | 138 | m_enc->stop(); |
@@ -138,10 +140,10 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger) | |||
138 | } | 140 | } |
139 | QApplication::processEvents(); | 141 | QApplication::processEvents(); |
140 | } | 142 | } |
141 | m_logger->addItem("Encoding of " + toSpeak,LOGINFO); | 143 | m_logger->addItem(tr("Encoding of %1").arg(toSpeak),LOGINFO); |
142 | if(!m_enc->encode(wavfilename,filename)) | 144 | if(!m_enc->encode(wavfilename,filename)) |
143 | { | 145 | { |
144 | m_logger->addItem("Encoding of " + wavfilename + " failed",LOGERROR); | 146 | m_logger->addItem(tr("Encoding of %1 failed").arg(wavfilename),LOGERROR); |
145 | m_logger->abort(); | 147 | m_logger->abort(); |
146 | m_tts->stop(); | 148 | m_tts->stop(); |
147 | m_enc->stop(); | 149 | m_enc->stop(); |
@@ -168,7 +170,7 @@ bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger) | |||
168 | 170 | ||
169 | installlog.endGroup(); | 171 | installlog.endGroup(); |
170 | m_tts->stop(); | 172 | m_tts->stop(); |
171 | m_logger->addItem("Finished creating Talk files",LOGOK); | 173 | m_logger->addItem(tr("Finished creating Talk files"),LOGOK); |
172 | m_logger->setProgressMax(1); | 174 | m_logger->setProgressMax(1); |
173 | m_logger->setProgressValue(1); | 175 | m_logger->setProgressValue(1); |
174 | m_logger->abort(); | 176 | m_logger->abort(); |
diff --git a/rbutil/rbutilqt/talkfile.h b/rbutil/rbutilqt/talkfile.h index d45d3a1907..38462b1891 100644 --- a/rbutil/rbutilqt/talkfile.h +++ b/rbutil/rbutilqt/talkfile.h | |||
@@ -36,7 +36,7 @@ public: | |||
36 | 36 | ||
37 | bool createTalkFiles(ProgressloggerInterface* logger); | 37 | bool createTalkFiles(ProgressloggerInterface* logger); |
38 | 38 | ||
39 | void setUserSettings(QSettings* setting) { userSettings = setting;} | 39 | void setSettings(QSettings* uSettings,QSettings* dSettings) { userSettings = uSettings; deviceSettings = dSettings;} |
40 | 40 | ||
41 | void setDir(QDir dir){m_dir = dir; } | 41 | void setDir(QDir dir){m_dir = dir; } |
42 | void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; } | 42 | void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; } |
@@ -56,6 +56,7 @@ private: | |||
56 | TTSBase* m_tts; | 56 | TTSBase* m_tts; |
57 | EncBase* m_enc; | 57 | EncBase* m_enc; |
58 | QSettings *userSettings; | 58 | QSettings *userSettings; |
59 | QSettings *deviceSettings; | ||
59 | 60 | ||
60 | QDir m_dir; | 61 | QDir m_dir; |
61 | QString m_mountpoint; | 62 | QString m_mountpoint; |
diff --git a/rbutil/rbutilqt/tts.cpp b/rbutil/rbutilqt/tts.cpp index b7c89ecbe9..de8e1d4468 100644 --- a/rbutil/rbutilqt/tts.cpp +++ b/rbutil/rbutilqt/tts.cpp | |||
@@ -104,7 +104,7 @@ TTSExes::TTSExes(QString name,QWidget *parent) : TTSBase(parent) | |||
104 | connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); | 104 | connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); |
105 | } | 105 | } |
106 | 106 | ||
107 | bool TTSExes::start() | 107 | bool TTSExes::start(QString *errStr) |
108 | { | 108 | { |
109 | userSettings->beginGroup(m_name); | 109 | userSettings->beginGroup(m_name); |
110 | m_TTSexec = userSettings->value("ttspath","").toString(); | 110 | m_TTSexec = userSettings->value("ttspath","").toString(); |
@@ -120,6 +120,7 @@ bool TTSExes::start() | |||
120 | } | 120 | } |
121 | else | 121 | else |
122 | { | 122 | { |
123 | *errStr = tr("TTS executable not found"); | ||
123 | return false; | 124 | return false; |
124 | } | 125 | } |
125 | } | 126 | } |
@@ -244,42 +245,111 @@ void TTSExes::browse() | |||
244 | **********************************************************************/ | 245 | **********************************************************************/ |
245 | TTSSapi::TTSSapi(QWidget *parent) : TTSBase(parent) | 246 | TTSSapi::TTSSapi(QWidget *parent) : TTSBase(parent) |
246 | { | 247 | { |
247 | m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang \"%options\""; | 248 | m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\""; |
248 | defaultLanguage ="english"; | 249 | defaultLanguage ="english"; |
249 | ui.setupUi(this); | 250 | ui.setupUi(this); |
250 | this->hide(); | 251 | this->hide(); |
251 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); | 252 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); |
253 | connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString))); | ||
252 | } | 254 | } |
253 | 255 | ||
254 | 256 | ||
255 | bool TTSSapi::start() | 257 | bool TTSSapi::start(QString *errStr) |
256 | { | 258 | { |
257 | 259 | ||
258 | userSettings->beginGroup("sapi"); | 260 | userSettings->beginGroup("sapi"); |
259 | m_TTSOpts = userSettings->value("ttsoptions","").toString(); | 261 | m_TTSOpts = userSettings->value("ttsoptions","").toString(); |
260 | m_TTSLanguage =userSettings->value("ttslanguage","").toString(); | 262 | m_TTSLanguage =userSettings->value("ttslanguage","").toString(); |
263 | m_TTSVoice=userSettings->value("ttsvoice","").toString(); | ||
264 | m_TTSSpeed=userSettings->value("ttsspeed","").toString(); | ||
261 | userSettings->endGroup(); | 265 | userSettings->endGroup(); |
262 | 266 | ||
267 | QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); | ||
263 | QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs"); | 268 | QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs"); |
264 | m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs"; | 269 | m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs"; |
265 | 270 | ||
266 | QFileInfo tts(m_TTSexec); | 271 | QFileInfo tts(m_TTSexec); |
267 | if(!tts.exists()) | 272 | if(!tts.exists()) |
273 | { | ||
274 | *errStr = tr("Could not copy the Sapi-script"); | ||
268 | return false; | 275 | return false; |
269 | 276 | } | |
270 | // create the voice process | 277 | // create the voice process |
271 | QString execstring = m_TTSTemplate; | 278 | QString execstring = m_TTSTemplate; |
272 | execstring.replace("%exe",m_TTSexec); | 279 | execstring.replace("%exe",m_TTSexec); |
273 | execstring.replace("%options",m_TTSOpts); | 280 | execstring.replace("%options",m_TTSOpts); |
274 | execstring.replace("%lang",m_TTSLanguage); | 281 | execstring.replace("%lang",m_TTSLanguage); |
282 | execstring.replace("%voice",m_TTSVoice); | ||
283 | execstring.replace("%speed",m_TTSSpeed); | ||
284 | |||
275 | qDebug() << "init" << execstring; | 285 | qDebug() << "init" << execstring; |
276 | voicescript = new QProcess(NULL); | 286 | voicescript = new QProcess(NULL); |
287 | //connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error())); | ||
288 | |||
277 | voicescript->start(execstring); | 289 | voicescript->start(execstring); |
278 | if(!voicescript->waitForStarted()) | 290 | if(!voicescript->waitForStarted()) |
291 | { | ||
292 | *errStr = tr("Could not start the Sapi-script"); | ||
279 | return false; | 293 | return false; |
294 | } | ||
295 | |||
296 | if(!voicescript->waitForReadyRead(100)) | ||
297 | { | ||
298 | *errStr = voicescript->readAllStandardError(); | ||
299 | if(*errStr != "") | ||
300 | return false; | ||
301 | } | ||
280 | return true; | 302 | return true; |
281 | } | 303 | } |
282 | 304 | ||
305 | |||
306 | QStringList TTSSapi::getVoiceList(QString language) | ||
307 | { | ||
308 | QStringList result; | ||
309 | |||
310 | QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs"); | ||
311 | m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs"; | ||
312 | |||
313 | QFileInfo tts(m_TTSexec); | ||
314 | if(!tts.exists()) | ||
315 | return result; | ||
316 | |||
317 | // create the voice process | ||
318 | QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices";; | ||
319 | execstring.replace("%exe",m_TTSexec); | ||
320 | execstring.replace("%lang",language); | ||
321 | qDebug() << "init" << execstring; | ||
322 | voicescript = new QProcess(NULL); | ||
323 | voicescript->start(execstring); | ||
324 | if(!voicescript->waitForStarted()) | ||
325 | return result; | ||
326 | |||
327 | voicescript->waitForReadyRead(); | ||
328 | |||
329 | QString dataRaw = voicescript->readAllStandardError().data(); | ||
330 | result = dataRaw.split(",",QString::SkipEmptyParts); | ||
331 | result.sort(); | ||
332 | result.removeFirst(); | ||
333 | |||
334 | delete voicescript; | ||
335 | QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner | ||
336 | |QFile::ReadUser| QFile::WriteUser| QFile::ExeUser | ||
337 | |QFile::ReadGroup |QFile::WriteGroup |QFile::ExeGroup | ||
338 | |QFile::ReadOther |QFile::WriteOther |QFile::ExeOther ); | ||
339 | QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); | ||
340 | |||
341 | return result; | ||
342 | } | ||
343 | |||
344 | void TTSSapi::updateVoices(QString language) | ||
345 | { | ||
346 | QStringList Voices = getVoiceList(language); | ||
347 | ui.voicecombo->clear(); | ||
348 | ui.voicecombo->addItems(Voices); | ||
349 | |||
350 | |||
351 | } | ||
352 | |||
283 | bool TTSSapi::voice(QString text,QString wavfile) | 353 | bool TTSSapi::voice(QString text,QString wavfile) |
284 | { | 354 | { |
285 | QString query = "SPEAK\t"+wavfile+"\t"+text+"\r\n"; | 355 | QString query = "SPEAK\t"+wavfile+"\t"+text+"\r\n"; |
@@ -296,6 +366,11 @@ bool TTSSapi::stop() | |||
296 | voicescript->write(query.toUtf8()); | 366 | voicescript->write(query.toUtf8()); |
297 | voicescript->waitForFinished(); | 367 | voicescript->waitForFinished(); |
298 | delete voicescript; | 368 | delete voicescript; |
369 | QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner | ||
370 | |QFile::ReadUser| QFile::WriteUser| QFile::ExeUser | ||
371 | |QFile::ReadGroup |QFile::WriteGroup |QFile::ExeGroup | ||
372 | |QFile::ReadOther |QFile::WriteOther |QFile::ExeOther ); | ||
373 | QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); | ||
299 | return true; | 374 | return true; |
300 | } | 375 | } |
301 | 376 | ||
@@ -303,7 +378,7 @@ bool TTSSapi::stop() | |||
303 | void TTSSapi::reset() | 378 | void TTSSapi::reset() |
304 | { | 379 | { |
305 | ui.ttsoptions->setText(""); | 380 | ui.ttsoptions->setText(""); |
306 | ui.ttslanguage->setText(defaultLanguage); | 381 | ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(defaultLanguage)); |
307 | } | 382 | } |
308 | 383 | ||
309 | void TTSSapi::showCfg() | 384 | void TTSSapi::showCfg() |
@@ -311,9 +386,35 @@ void TTSSapi::showCfg() | |||
311 | // try to get config from settings | 386 | // try to get config from settings |
312 | userSettings->beginGroup("sapi"); | 387 | userSettings->beginGroup("sapi"); |
313 | ui.ttsoptions->setText(userSettings->value("ttsoptions","").toString()); | 388 | ui.ttsoptions->setText(userSettings->value("ttsoptions","").toString()); |
314 | ui.ttslanguage->setText(userSettings->value("ttslanguage",defaultLanguage).toString()); | 389 | QString selLang = userSettings->value("ttslanguage",defaultLanguage).toString(); |
390 | QString selVoice = userSettings->value("ttsvoice","").toString(); | ||
391 | ui.speed->setValue(userSettings->value("ttsspeed",0).toInt()); | ||
315 | userSettings->endGroup(); | 392 | userSettings->endGroup(); |
316 | 393 | ||
394 | // fill in language combobox | ||
395 | |||
396 | deviceSettings->beginGroup("languages"); | ||
397 | QStringList keys = deviceSettings->allKeys(); | ||
398 | QStringList languages; | ||
399 | for(int i =0 ; i < keys.size();i++) | ||
400 | { | ||
401 | languages << deviceSettings->value(keys.at(i)).toString(); | ||
402 | } | ||
403 | deviceSettings->endGroup(); | ||
404 | |||
405 | languages.sort(); | ||
406 | ui.languagecombo->clear(); | ||
407 | ui.languagecombo->addItems(languages); | ||
408 | |||
409 | // set saved lang | ||
410 | ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(selLang)); | ||
411 | |||
412 | // fill in voice combobox | ||
413 | updateVoices(selLang); | ||
414 | |||
415 | // set saved lang | ||
416 | ui.voicecombo->setCurrentIndex(ui.voicecombo->findText(selVoice)); | ||
417 | |||
317 | //show dialog | 418 | //show dialog |
318 | this->exec(); | 419 | this->exec(); |
319 | 420 | ||
@@ -326,7 +427,9 @@ void TTSSapi::accept(void) | |||
326 | //save settings in user config | 427 | //save settings in user config |
327 | userSettings->beginGroup("sapi"); | 428 | userSettings->beginGroup("sapi"); |
328 | userSettings->setValue("ttsoptions",ui.ttsoptions->text()); | 429 | userSettings->setValue("ttsoptions",ui.ttsoptions->text()); |
329 | userSettings->setValue("ttslanguage",ui.ttslanguage->text()); | 430 | userSettings->setValue("ttslanguage",ui.languagecombo->currentText()); |
431 | userSettings->setValue("ttsvoice",ui.voicecombo->currentText()); | ||
432 | userSettings->setValue("ttsspeed",QString("%1").arg(ui.speed->value())); | ||
330 | userSettings->endGroup(); | 433 | userSettings->endGroup(); |
331 | // sync settings | 434 | // sync settings |
332 | userSettings->sync(); | 435 | userSettings->sync(); |
diff --git a/rbutil/rbutilqt/tts.h b/rbutil/rbutilqt/tts.h index f9439ba48d..d792f077e0 100644 --- a/rbutil/rbutilqt/tts.h +++ b/rbutil/rbutilqt/tts.h | |||
@@ -42,12 +42,12 @@ class TTSBase : public QDialog | |||
42 | public: | 42 | public: |
43 | TTSBase(QWidget *parent ); | 43 | TTSBase(QWidget *parent ); |
44 | virtual bool voice(QString text,QString wavfile) {return false;} | 44 | virtual bool voice(QString text,QString wavfile) {return false;} |
45 | virtual bool start(){return false;} | 45 | virtual bool start(QString *errStr){return false;} |
46 | virtual bool stop(){return false;} | 46 | virtual bool stop(){return false;} |
47 | virtual void showCfg(){} | 47 | virtual void showCfg(){} |
48 | virtual bool configOk(){return false;} | 48 | virtual bool configOk(){return false;} |
49 | 49 | ||
50 | void setUserCfg(QSettings *uSettings){userSettings = uSettings;} | 50 | void setCfg(QSettings *uSettings, QSettings *dSettings){userSettings = uSettings;deviceSettings = dSettings;} |
51 | 51 | ||
52 | public slots: | 52 | public slots: |
53 | virtual void accept(void){} | 53 | virtual void accept(void){} |
@@ -56,6 +56,8 @@ public slots: | |||
56 | 56 | ||
57 | protected: | 57 | protected: |
58 | QSettings *userSettings; | 58 | QSettings *userSettings; |
59 | QSettings *deviceSettings; | ||
60 | |||
59 | }; | 61 | }; |
60 | 62 | ||
61 | class TTSSapi : public TTSBase | 63 | class TTSSapi : public TTSBase |
@@ -64,7 +66,7 @@ class TTSSapi : public TTSBase | |||
64 | public: | 66 | public: |
65 | TTSSapi(QWidget *parent = NULL); | 67 | TTSSapi(QWidget *parent = NULL); |
66 | virtual bool voice(QString text,QString wavfile); | 68 | virtual bool voice(QString text,QString wavfile); |
67 | virtual bool start(); | 69 | virtual bool start(QString *errStr); |
68 | virtual bool stop(); | 70 | virtual bool stop(); |
69 | virtual void showCfg(); | 71 | virtual void showCfg(); |
70 | virtual bool configOk(); | 72 | virtual bool configOk(); |
@@ -74,7 +76,10 @@ public slots: | |||
74 | virtual void reject(void); | 76 | virtual void reject(void); |
75 | virtual void reset(void); | 77 | virtual void reset(void); |
76 | 78 | ||
79 | void updateVoices(QString language); | ||
77 | private: | 80 | private: |
81 | QStringList getVoiceList(QString language); | ||
82 | |||
78 | Ui::SapiCfgFrm ui; | 83 | Ui::SapiCfgFrm ui; |
79 | QProcess* voicescript; | 84 | QProcess* voicescript; |
80 | 85 | ||
@@ -84,6 +89,9 @@ private: | |||
84 | QString m_TTSOpts; | 89 | QString m_TTSOpts; |
85 | QString m_TTSTemplate; | 90 | QString m_TTSTemplate; |
86 | QString m_TTSLanguage; | 91 | QString m_TTSLanguage; |
92 | QString m_TTSVoice; | ||
93 | QString m_TTSSpeed; | ||
94 | |||
87 | }; | 95 | }; |
88 | 96 | ||
89 | class TTSExes : public TTSBase | 97 | class TTSExes : public TTSBase |
@@ -92,7 +100,7 @@ class TTSExes : public TTSBase | |||
92 | public: | 100 | public: |
93 | TTSExes(QString name,QWidget *parent = NULL); | 101 | TTSExes(QString name,QWidget *parent = NULL); |
94 | virtual bool voice(QString text,QString wavfile); | 102 | virtual bool voice(QString text,QString wavfile); |
95 | virtual bool start(); | 103 | virtual bool start(QString *errStr); |
96 | virtual bool stop() {return true;} | 104 | virtual bool stop() {return true;} |
97 | virtual void showCfg(); | 105 | virtual void showCfg(); |
98 | virtual bool configOk(); | 106 | virtual bool configOk(); |
diff --git a/rbutil/rbutilqt/voicefile.cpp b/rbutil/rbutilqt/voicefile.cpp index 8fbac75c75..47b659a347 100644 --- a/rbutil/rbutilqt/voicefile.cpp +++ b/rbutil/rbutilqt/voicefile.cpp | |||
@@ -26,7 +26,7 @@ | |||
26 | 26 | ||
27 | VoiceFileCreator::VoiceFileCreator(QObject* parent) :QObject(parent) | 27 | VoiceFileCreator::VoiceFileCreator(QObject* parent) :QObject(parent) |
28 | { | 28 | { |
29 | 29 | m_wavtrimThreshold=500; | |
30 | } | 30 | } |
31 | 31 | ||
32 | void VoiceFileCreator::abort() | 32 | void VoiceFileCreator::abort() |
@@ -147,10 +147,12 @@ void VoiceFileCreator::downloadDone(bool error) | |||
147 | 147 | ||
148 | //tts | 148 | //tts |
149 | m_tts = getTTS(userSettings->value("tts").toString()); | 149 | m_tts = getTTS(userSettings->value("tts").toString()); |
150 | m_tts->setUserCfg(userSettings); | 150 | m_tts->setCfg(userSettings,deviceSettings); |
151 | 151 | ||
152 | if(!m_tts->start()) | 152 | QString errStr; |
153 | if(!m_tts->start(&errStr)) | ||
153 | { | 154 | { |
155 | m_logger->addItem(errStr,LOGERROR); | ||
154 | m_logger->addItem(tr("Init of TTS engine failed"),LOGERROR); | 156 | m_logger->addItem(tr("Init of TTS engine failed"),LOGERROR); |
155 | m_logger->abort(); | 157 | m_logger->abort(); |
156 | return; | 158 | return; |
@@ -249,7 +251,7 @@ void VoiceFileCreator::downloadDone(bool error) | |||
249 | // todo strip | 251 | // todo strip |
250 | char buffer[255]; | 252 | char buffer[255]; |
251 | 253 | ||
252 | wavtrim((char*)qPrintable(wavname),500,buffer,255); | 254 | wavtrim((char*)qPrintable(wavname),m_wavtrimThreshold,buffer,255); |
253 | 255 | ||
254 | // encode wav | 256 | // encode wav |
255 | m_enc->encode(wavname,encodedname); | 257 | m_enc->encode(wavname,encodedname); |
diff --git a/rbutil/rbutilqt/voicefile.h b/rbutil/rbutilqt/voicefile.h index b82f0373c7..ce7c953237 100644 --- a/rbutil/rbutilqt/voicefile.h +++ b/rbutil/rbutilqt/voicefile.h | |||
@@ -44,12 +44,12 @@ public: | |||
44 | bool createVoiceFile(ProgressloggerInterface* logger); | 44 | bool createVoiceFile(ProgressloggerInterface* logger); |
45 | 45 | ||
46 | // set infos | 46 | // set infos |
47 | void setUserSettings(QSettings* setting) { userSettings = setting;} | 47 | void setSettings(QSettings* uSettings,QSettings* dSettings) { userSettings = uSettings;deviceSettings = dSettings;} |
48 | void setDeviceSettings(QSettings* setting) { deviceSettings = setting;} | ||
49 | 48 | ||
50 | void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; } | 49 | void setMountPoint(QString mountpoint) {m_mountpoint =mountpoint; } |
51 | void setTargetId(int id){m_targetid = id;} | 50 | void setTargetId(int id){m_targetid = id;} |
52 | void setLang(QString name){m_lang =name;} | 51 | void setLang(QString name){m_lang =name;} |
52 | void setWavtrimThreshold(int th){m_wavtrimThreshold = th;} | ||
53 | void setProxy(QUrl proxy){m_proxy = proxy;} | 53 | void setProxy(QUrl proxy){m_proxy = proxy;} |
54 | 54 | ||
55 | private slots: | 55 | private slots: |
@@ -75,6 +75,7 @@ private: | |||
75 | QString m_path; //path where the wav and mp3 files are stored to | 75 | QString m_path; //path where the wav and mp3 files are stored to |
76 | int m_targetid; //the target id | 76 | int m_targetid; //the target id |
77 | QString m_lang; // the language which will be spoken | 77 | QString m_lang; // the language which will be spoken |
78 | int m_wavtrimThreshold; | ||
78 | 79 | ||
79 | ProgressloggerInterface* m_logger; | 80 | ProgressloggerInterface* m_logger; |
80 | 81 | ||