1
0
Fork 0
forked from len0rd/rockbox

rbutil: fix a Bug in the sapi settings. Allow sapi4 (not sure if it really works).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16284 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Wenger 2008-02-11 17:39:07 +00:00
parent 8681ba082c
commit 5f641ed3c2
7 changed files with 68 additions and 10 deletions

View file

@ -307,6 +307,14 @@ QString RbSettings::ttsLang(QString tts)
return op;
}
bool RbSettings::ttsUseSapi4()
{
userSettings->beginGroup("sapi");
bool op = userSettings->value("useSapi4",false).toBool();
userSettings->endGroup();
return op;
}
QString RbSettings::encoderPath(QString enc)
{
userSettings->beginGroup(enc);
@ -523,6 +531,14 @@ void RbSettings::setTTSLang(QString tts, QString lang)
userSettings->endGroup();
}
void RbSettings::setTTSUseSapi4(bool value)
{
userSettings->beginGroup("sapi");
userSettings->setValue("useSapi4",value);
userSettings->endGroup();
}
void RbSettings::setEncoderPath(QString enc, QString path)
{
userSettings->beginGroup(enc);

View file

@ -69,6 +69,7 @@ class RbSettings : public QObject
QString ttsVoice(QString tts);
int ttsSpeed(QString tts);
QString ttsLang(QString tts);
bool ttsUseSapi4();
QString encoderPath(QString enc);
QString encoderOptions(QString enc);
double encoderQuality(QString enc);
@ -116,6 +117,7 @@ class RbSettings : public QObject
void setTTSSpeed(QString tts, int speed);
void setTTSVoice(QString tts, QString voice);
void setTTSLang(QString tts, QString lang);
void setTTSUseSapi4(bool value);
void setEncoderPath(QString enc, QString path);
void setEncoderOptions(QString enc, QString options);
void setEncoderQuality(QString enc, double q);

View file

@ -66,7 +66,7 @@
<item row="3" column="1" >
<widget class="QLineEdit" name="ttsoptions" />
</item>
<item row="4" column="0" colspan="2" >
<item row="5" column="0" colspan="2" >
<spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
@ -79,7 +79,7 @@
</property>
</spacer>
</item>
<item row="5" column="0" colspan="2" >
<item row="6" column="0" colspan="2" >
<layout class="QHBoxLayout" >
<item>
<widget class="QPushButton" name="reset" >
@ -123,6 +123,13 @@
</item>
</layout>
</item>
<item row="4" column="0" colspan="2" >
<widget class="QCheckBox" name="usesapi4" >
<property name="text" >
<string>Use Sapi 4</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View file

@ -30,7 +30,7 @@ void initTTSList()
ttsList["flite"] = "Flite TTS Engine";
ttsList["swift"] = "Swift TTS Engine";
#if defined(Q_OS_WIN)
ttsList["sapi"] = "Sapi 5 TTS Engine";
ttsList["sapi"] = "Sapi TTS Engine";
#endif
}
@ -156,7 +156,7 @@ TTSSapi::TTSSapi() : TTSBase()
{
m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\"";
defaultLanguage ="english";
m_sapi4 =false;
}
@ -166,8 +166,9 @@ bool TTSSapi::start(QString *errStr)
m_TTSOpts = settings->ttsOptions("sapi");
m_TTSLanguage =settings->ttsLang("sapi");
m_TTSVoice=settings->ttsVoice("sapi");
m_TTSSpeed=settings->ttsSpeed("sapi");
m_TTSSpeed=QString("%1").arg(settings->ttsSpeed("sapi"));
m_sapi4 = settings->ttsUseSapi4();
QFile::remove(QDir::tempPath() +"/sapi_voice.vbs");
QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs");
m_TTSexec = QDir::tempPath() +"/sapi_voice.vbs";
@ -186,6 +187,9 @@ bool TTSSapi::start(QString *errStr)
execstring.replace("%voice",m_TTSVoice);
execstring.replace("%speed",m_TTSSpeed);
if(m_sapi4)
execstring.append(" /sapi4 ");
qDebug() << "init" << execstring;
voicescript = new QProcess(NULL);
//connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error()));
@ -219,9 +223,13 @@ QStringList TTSSapi::getVoiceList(QString language)
return result;
// create the voice process
QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices";;
QString execstring = "cscript //nologo \"%exe\" /language:%lang /listvoices";
execstring.replace("%exe",m_TTSexec);
execstring.replace("%lang",language);
if(settings->ttsUseSapi4())
execstring.append(" /sapi4 ");
qDebug() << "init" << execstring;
voicescript = new QProcess(NULL);
voicescript->start(execstring);
@ -234,6 +242,11 @@ QStringList TTSSapi::getVoiceList(QString language)
result = dataRaw.split(",",QString::SkipEmptyParts);
result.sort();
result.removeFirst();
for(int i = 0; i< result.size();i++)
{
result[i] = result.at(i).simplified();
}
delete voicescript;
QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner

View file

@ -88,7 +88,7 @@ private:
QString m_TTSLanguage;
QString m_TTSVoice;
QString m_TTSSpeed;
bool m_sapi4;
};
class TTSExes : public TTSBase

View file

@ -30,7 +30,7 @@ TTSSapiGui::TTSSapiGui(TTSSapi* sapi,QDialog* parent) : QDialog(parent)
this->hide();
connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset()));
connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString)));
connect(ui.usesapi4,SIGNAL(stateChanged(int)),this,SLOT(useSapi4Changed(int)));
}
void TTSSapiGui::showCfg()
@ -40,8 +40,11 @@ void TTSSapiGui::showCfg()
QString selLang = settings->ttsLang("sapi");
QString selVoice = settings->ttsVoice("sapi");
ui.speed->setValue(settings->ttsSpeed("sapi"));
if(settings->ttsUseSapi4())
ui.usesapi4->setCheckState(Qt::Checked);
else
ui.usesapi4->setCheckState(Qt::Unchecked);
// fill in language combobox
QStringList languages = settings->allLanguages();
@ -79,6 +82,10 @@ void TTSSapiGui::accept(void)
settings->setTTSLang("sapi",ui.languagecombo->currentText());
settings->setTTSVoice("sapi",ui.voicecombo->currentText());
settings->setTTSSpeed("sapi",ui.speed->value());
if(ui.usesapi4->checkState() == Qt::Checked)
settings->setTTSUseSapi4(true);
else
settings->setTTSUseSapi4(false);
// sync settings
settings->sync();
@ -98,6 +105,18 @@ void TTSSapiGui::updateVoices(QString language)
}
void TTSSapiGui::useSapi4Changed(int)
{
if(ui.usesapi4->checkState() == Qt::Checked)
settings->setTTSUseSapi4(true);
else
settings->setTTSUseSapi4(false);
// sync settings
settings->sync();
updateVoices(ui.languagecombo->currentText());
}
TTSExesGui::TTSExesGui(QDialog* parent) : QDialog(parent)
{
ui.setupUi(this);

View file

@ -42,6 +42,7 @@ public slots:
virtual void reject(void);
virtual void reset(void);
void updateVoices(QString language);
void useSapi4Changed(int);
private:
Ui::SapiCfgFrm ui;
RbSettings* settings;