mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 13:15:18 -05:00
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:
parent
8681ba082c
commit
5f641ed3c2
7 changed files with 68 additions and 10 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ private:
|
|||
QString m_TTSLanguage;
|
||||
QString m_TTSVoice;
|
||||
QString m_TTSSpeed;
|
||||
|
||||
bool m_sapi4;
|
||||
};
|
||||
|
||||
class TTSExes : public TTSBase
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue