summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 c6bbdcf..fdd2c98 100644
--- a/rbutil/rbutilqt/base/ttsbase.h
+++ b/rbutil/rbutilqt/base/ttsbase.h
@@ -47,6 +47,7 @@ class TTSBase : public EncTtsSettingInterface
//! child class should stop
virtual bool stop() =0;
+ virtual QString voiceVendor(void) = 0;
// configuration
//! Child class should return true, when configuration is good
virtual bool configOk()=0;
@@ -60,7 +61,7 @@ class TTSBase : public EncTtsSettingInterface
// static functions
static TTSBase* getTTS(QObject* parent,QString ttsname);
static QStringList getTTSList();
- static QString getTTSName(QString tts);
+ static QString getTTSName(QString tts);
private:
//inits the tts List
diff --git a/rbutil/rbutilqt/base/ttscarbon.h b/rbutil/rbutilqt/base/ttscarbon.h
index be75902..d06884e 100644
--- a/rbutil/rbutilqt/base/ttscarbon.h
+++ b/rbutil/rbutilqt/base/ttscarbon.h
@@ -45,6 +45,7 @@ class TTSCarbon : public TTSBase
bool start(QString *errStr);
//! child class should stop
bool stop() ;
+ QString voiceVendor(void) { return QString(); }
// configuration
//! Child class should return true, when configuration is good
diff --git a/rbutil/rbutilqt/base/ttsexes.h b/rbutil/rbutilqt/base/ttsexes.h
index 04efb4c..7ab3757 100644
--- a/rbutil/rbutilqt/base/ttsexes.h
+++ b/rbutil/rbutilqt/base/ttsexes.h
@@ -38,6 +38,7 @@ class TTSExes : public TTSBase
TTSStatus voice(QString text, QString wavfile, QString *errStr);
bool start(QString *errStr);
bool stop() {return true;}
+ QString voiceVendor(void) { return QString(); }
Capabilities capabilities();
// for settings
diff --git a/rbutil/rbutilqt/base/ttsfestival.h b/rbutil/rbutilqt/base/ttsfestival.h
index 6c64c61..5e9f557 100644
--- a/rbutil/rbutilqt/base/ttsfestival.h
+++ b/rbutil/rbutilqt/base/ttsfestival.h
@@ -42,6 +42,7 @@ class TTSFestival : public TTSBase
bool start(QString *errStr);
bool stop();
TTSStatus voice(QString text,QString wavfile, QString *errStr);
+ QString voiceVendor(void) { return QString(); }
Capabilities capabilities();
// for settings
diff --git a/rbutil/rbutilqt/base/ttssapi.cpp b/rbutil/rbutilqt/base/ttssapi.cpp
index cd9ced8..cb7d8a5 100644
--- a/rbutil/rbutilqt/base/ttssapi.cpp
+++ b/rbutil/rbutilqt/base/ttssapi.cpp
@@ -26,8 +26,9 @@ TTSSapi::TTSSapi(QObject* parent) : TTSBase(parent)
{
m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\""
" /speed:%speed \"%options\"";
- defaultLanguage ="english";
- m_sapi4 =false;
+ defaultLanguage = "english";
+ m_sapi4 = false;
+ m_started = false;
}
TTSBase::Capabilities TTSSapi::capabilities()
@@ -138,9 +139,29 @@ bool TTSSapi::start(QString *errStr)
voicestream = new QTextStream(voicescript);
voicestream->setCodec("UTF16-LE");
+ m_started = true;
return true;
}
+QString TTSSapi::voiceVendor(void)
+{
+ bool keeprunning = m_started;
+ QString vendor;
+ if(!m_started) {
+ QString error;
+ start(&error);
+ }
+ *voicestream << "QUERY\tVENDOR\r\n";
+ voicestream->flush();
+ while((vendor = voicestream->readLine()).isEmpty())
+ QCoreApplication::processEvents();
+
+ qDebug() << "[TTSSAPI] TTS vendor:" << vendor;
+ if(!keeprunning) {
+ stop();
+ }
+ return vendor;
+}
QStringList TTSSapi::getVoiceList(QString language)
{
@@ -226,6 +247,7 @@ bool TTSSapi::stop()
| QFile::ReadGroup | QFile::WriteGroup | QFile::ExeGroup
| QFile::ReadOther | QFile::WriteOther | QFile::ExeOther );
QFile::remove(QDir::tempPath() +"/sapi_voice.vbs");
+ m_started = false;
return true;
}
diff --git a/rbutil/rbutilqt/base/ttssapi.h b/rbutil/rbutilqt/base/ttssapi.h
index 6070728..1cdf030 100644
--- a/rbutil/rbutilqt/base/ttssapi.h
+++ b/rbutil/rbutilqt/base/ttssapi.h
@@ -42,6 +42,7 @@ class TTSSapi : public TTSBase
TTSStatus voice(QString text,QString wavfile, QString *errStr);
bool start(QString *errStr);
bool stop();
+ QString voiceVendor(void);
Capabilities capabilities();
// for settings
@@ -49,8 +50,8 @@ class TTSSapi : public TTSBase
void generateSettings();
void saveSettings();
- private slots:
- void updateVoiceList();
+ private slots:
+ void updateVoiceList();
private:
QStringList getVoiceList(QString language);
@@ -66,6 +67,7 @@ class TTSSapi : public TTSBase
QString m_TTSVoice;
QString m_TTSSpeed;
bool m_sapi4;
+ bool m_started;
};