diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2011-09-26 21:28:05 +0000 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2011-09-26 21:28:05 +0000 |
commit | fe3eadffba810be2666435d68b929027130d47ed (patch) | |
tree | 4c47fef3017b76c28f1697e304062cdadd6dd1e2 /rbutil/rbutilqt | |
parent | c7c657ca9264b1bc7dc313a92e285128fc9ffea3 (diff) | |
download | rockbox-fe3eadffba810be2666435d68b929027130d47ed.tar.gz rockbox-fe3eadffba810be2666435d68b929027130d47ed.zip |
Rockbox Utility TTS: implement reading TTS vendor.
Support retrieving the vendor name of the TTS. This will be used by TTS string
corrections. Currently no other TTS but SAPI supports this, and only correction
strings for SAPI voices depend on the vendor information.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30609 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r-- | rbutil/rbutilqt/base/ttsbase.h | 3 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/ttscarbon.h | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/ttsexes.h | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/ttsfestival.h | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/ttssapi.cpp | 26 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/ttssapi.h | 6 |
6 files changed, 33 insertions, 5 deletions
diff --git a/rbutil/rbutilqt/base/ttsbase.h b/rbutil/rbutilqt/base/ttsbase.h index c6bbdcfb0b..fdd2c98344 100644 --- a/rbutil/rbutilqt/base/ttsbase.h +++ b/rbutil/rbutilqt/base/ttsbase.h | |||
@@ -47,6 +47,7 @@ class TTSBase : public EncTtsSettingInterface | |||
47 | //! child class should stop | 47 | //! child class should stop |
48 | virtual bool stop() =0; | 48 | virtual bool stop() =0; |
49 | 49 | ||
50 | virtual QString voiceVendor(void) = 0; | ||
50 | // configuration | 51 | // configuration |
51 | //! Child class should return true, when configuration is good | 52 | //! Child class should return true, when configuration is good |
52 | virtual bool configOk()=0; | 53 | virtual bool configOk()=0; |
@@ -60,7 +61,7 @@ class TTSBase : public EncTtsSettingInterface | |||
60 | // static functions | 61 | // static functions |
61 | static TTSBase* getTTS(QObject* parent,QString ttsname); | 62 | static TTSBase* getTTS(QObject* parent,QString ttsname); |
62 | static QStringList getTTSList(); | 63 | static QStringList getTTSList(); |
63 | static QString getTTSName(QString tts); | 64 | static QString getTTSName(QString tts); |
64 | 65 | ||
65 | private: | 66 | private: |
66 | //inits the tts List | 67 | //inits the tts List |
diff --git a/rbutil/rbutilqt/base/ttscarbon.h b/rbutil/rbutilqt/base/ttscarbon.h index be7590240a..d06884e72a 100644 --- a/rbutil/rbutilqt/base/ttscarbon.h +++ b/rbutil/rbutilqt/base/ttscarbon.h | |||
@@ -45,6 +45,7 @@ class TTSCarbon : public TTSBase | |||
45 | bool start(QString *errStr); | 45 | bool start(QString *errStr); |
46 | //! child class should stop | 46 | //! child class should stop |
47 | bool stop() ; | 47 | bool stop() ; |
48 | QString voiceVendor(void) { return QString(); } | ||
48 | 49 | ||
49 | // configuration | 50 | // configuration |
50 | //! Child class should return true, when configuration is good | 51 | //! Child class should return true, when configuration is good |
diff --git a/rbutil/rbutilqt/base/ttsexes.h b/rbutil/rbutilqt/base/ttsexes.h index 04efb4ce50..7ab3757fd4 100644 --- a/rbutil/rbutilqt/base/ttsexes.h +++ b/rbutil/rbutilqt/base/ttsexes.h | |||
@@ -38,6 +38,7 @@ class TTSExes : public TTSBase | |||
38 | TTSStatus voice(QString text, QString wavfile, QString *errStr); | 38 | TTSStatus voice(QString text, QString wavfile, QString *errStr); |
39 | bool start(QString *errStr); | 39 | bool start(QString *errStr); |
40 | bool stop() {return true;} | 40 | bool stop() {return true;} |
41 | QString voiceVendor(void) { return QString(); } | ||
41 | Capabilities capabilities(); | 42 | Capabilities capabilities(); |
42 | 43 | ||
43 | // for settings | 44 | // for settings |
diff --git a/rbutil/rbutilqt/base/ttsfestival.h b/rbutil/rbutilqt/base/ttsfestival.h index 6c64c61532..5e9f5573f5 100644 --- a/rbutil/rbutilqt/base/ttsfestival.h +++ b/rbutil/rbutilqt/base/ttsfestival.h | |||
@@ -42,6 +42,7 @@ class TTSFestival : public TTSBase | |||
42 | bool start(QString *errStr); | 42 | bool start(QString *errStr); |
43 | bool stop(); | 43 | bool stop(); |
44 | TTSStatus voice(QString text,QString wavfile, QString *errStr); | 44 | TTSStatus voice(QString text,QString wavfile, QString *errStr); |
45 | QString voiceVendor(void) { return QString(); } | ||
45 | Capabilities capabilities(); | 46 | Capabilities capabilities(); |
46 | 47 | ||
47 | // for settings | 48 | // for settings |
diff --git a/rbutil/rbutilqt/base/ttssapi.cpp b/rbutil/rbutilqt/base/ttssapi.cpp index cd9ced8083..cb7d8a5057 100644 --- a/rbutil/rbutilqt/base/ttssapi.cpp +++ b/rbutil/rbutilqt/base/ttssapi.cpp | |||
@@ -26,8 +26,9 @@ TTSSapi::TTSSapi(QObject* parent) : TTSBase(parent) | |||
26 | { | 26 | { |
27 | m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\"" | 27 | m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\"" |
28 | " /speed:%speed \"%options\""; | 28 | " /speed:%speed \"%options\""; |
29 | defaultLanguage ="english"; | 29 | defaultLanguage = "english"; |
30 | m_sapi4 =false; | 30 | m_sapi4 = false; |
31 | m_started = false; | ||
31 | } | 32 | } |
32 | 33 | ||
33 | TTSBase::Capabilities TTSSapi::capabilities() | 34 | TTSBase::Capabilities TTSSapi::capabilities() |
@@ -138,9 +139,29 @@ bool TTSSapi::start(QString *errStr) | |||
138 | voicestream = new QTextStream(voicescript); | 139 | voicestream = new QTextStream(voicescript); |
139 | voicestream->setCodec("UTF16-LE"); | 140 | voicestream->setCodec("UTF16-LE"); |
140 | 141 | ||
142 | m_started = true; | ||
141 | return true; | 143 | return true; |
142 | } | 144 | } |
143 | 145 | ||
146 | QString TTSSapi::voiceVendor(void) | ||
147 | { | ||
148 | bool keeprunning = m_started; | ||
149 | QString vendor; | ||
150 | if(!m_started) { | ||
151 | QString error; | ||
152 | start(&error); | ||
153 | } | ||
154 | *voicestream << "QUERY\tVENDOR\r\n"; | ||
155 | voicestream->flush(); | ||
156 | while((vendor = voicestream->readLine()).isEmpty()) | ||
157 | QCoreApplication::processEvents(); | ||
158 | |||
159 | qDebug() << "[TTSSAPI] TTS vendor:" << vendor; | ||
160 | if(!keeprunning) { | ||
161 | stop(); | ||
162 | } | ||
163 | return vendor; | ||
164 | } | ||
144 | 165 | ||
145 | QStringList TTSSapi::getVoiceList(QString language) | 166 | QStringList TTSSapi::getVoiceList(QString language) |
146 | { | 167 | { |
@@ -226,6 +247,7 @@ bool TTSSapi::stop() | |||
226 | | QFile::ReadGroup | QFile::WriteGroup | QFile::ExeGroup | 247 | | QFile::ReadGroup | QFile::WriteGroup | QFile::ExeGroup |
227 | | QFile::ReadOther | QFile::WriteOther | QFile::ExeOther ); | 248 | | QFile::ReadOther | QFile::WriteOther | QFile::ExeOther ); |
228 | QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); | 249 | QFile::remove(QDir::tempPath() +"/sapi_voice.vbs"); |
250 | m_started = false; | ||
229 | return true; | 251 | return true; |
230 | } | 252 | } |
231 | 253 | ||
diff --git a/rbutil/rbutilqt/base/ttssapi.h b/rbutil/rbutilqt/base/ttssapi.h index 6070728a79..1cdf030884 100644 --- a/rbutil/rbutilqt/base/ttssapi.h +++ b/rbutil/rbutilqt/base/ttssapi.h | |||
@@ -42,6 +42,7 @@ class TTSSapi : public TTSBase | |||
42 | TTSStatus voice(QString text,QString wavfile, QString *errStr); | 42 | TTSStatus voice(QString text,QString wavfile, QString *errStr); |
43 | bool start(QString *errStr); | 43 | bool start(QString *errStr); |
44 | bool stop(); | 44 | bool stop(); |
45 | QString voiceVendor(void); | ||
45 | Capabilities capabilities(); | 46 | Capabilities capabilities(); |
46 | 47 | ||
47 | // for settings | 48 | // for settings |
@@ -49,8 +50,8 @@ class TTSSapi : public TTSBase | |||
49 | void generateSettings(); | 50 | void generateSettings(); |
50 | void saveSettings(); | 51 | void saveSettings(); |
51 | 52 | ||
52 | private slots: | 53 | private slots: |
53 | void updateVoiceList(); | 54 | void updateVoiceList(); |
54 | 55 | ||
55 | private: | 56 | private: |
56 | QStringList getVoiceList(QString language); | 57 | QStringList getVoiceList(QString language); |
@@ -66,6 +67,7 @@ class TTSSapi : public TTSBase | |||
66 | QString m_TTSVoice; | 67 | QString m_TTSVoice; |
67 | QString m_TTSSpeed; | 68 | QString m_TTSSpeed; |
68 | bool m_sapi4; | 69 | bool m_sapi4; |
70 | bool m_started; | ||
69 | }; | 71 | }; |
70 | 72 | ||
71 | 73 | ||