diff options
-rw-r--r-- | rbutil/rbutilqt/base/ttssapi.cpp | 62 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/ttssapi.h | 7 |
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 | ||
24 | TTSSapi::TTSSapi(QObject* parent) : TTSBase(parent) | 24 | TTSSapi::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 | ||
70 | void TTSSapi::saveSettings() | 75 | void 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() | |||
94 | bool TTSSapi::start(QString *errStr) | 99 | bool 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 | ||
264 | bool TTSSapi::configOk() | 262 | bool 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 | ||