summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2011-09-26 21:28:05 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2011-09-26 21:28:05 +0000
commitfe3eadffba810be2666435d68b929027130d47ed (patch)
tree4c47fef3017b76c28f1697e304062cdadd6dd1e2
parentc7c657ca9264b1bc7dc313a92e285128fc9ffea3 (diff)
downloadrockbox-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
-rw-r--r--rbutil/rbutilqt/base/ttsbase.h3
-rw-r--r--rbutil/rbutilqt/base/ttscarbon.h1
-rw-r--r--rbutil/rbutilqt/base/ttsexes.h1
-rw-r--r--rbutil/rbutilqt/base/ttsfestival.h1
-rw-r--r--rbutil/rbutilqt/base/ttssapi.cpp26
-rw-r--r--rbutil/rbutilqt/base/ttssapi.h6
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
33TTSBase::Capabilities TTSSapi::capabilities() 34TTSBase::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
146QString 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
145QStringList TTSSapi::getVoiceList(QString language) 166QStringList 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