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;
|
return op;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RbSettings::ttsUseSapi4()
|
||||||
|
{
|
||||||
|
userSettings->beginGroup("sapi");
|
||||||
|
bool op = userSettings->value("useSapi4",false).toBool();
|
||||||
|
userSettings->endGroup();
|
||||||
|
return op;
|
||||||
|
}
|
||||||
|
|
||||||
QString RbSettings::encoderPath(QString enc)
|
QString RbSettings::encoderPath(QString enc)
|
||||||
{
|
{
|
||||||
userSettings->beginGroup(enc);
|
userSettings->beginGroup(enc);
|
||||||
|
|
@ -523,6 +531,14 @@ void RbSettings::setTTSLang(QString tts, QString lang)
|
||||||
userSettings->endGroup();
|
userSettings->endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RbSettings::setTTSUseSapi4(bool value)
|
||||||
|
{
|
||||||
|
userSettings->beginGroup("sapi");
|
||||||
|
userSettings->setValue("useSapi4",value);
|
||||||
|
userSettings->endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void RbSettings::setEncoderPath(QString enc, QString path)
|
void RbSettings::setEncoderPath(QString enc, QString path)
|
||||||
{
|
{
|
||||||
userSettings->beginGroup(enc);
|
userSettings->beginGroup(enc);
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,7 @@ class RbSettings : public QObject
|
||||||
QString ttsVoice(QString tts);
|
QString ttsVoice(QString tts);
|
||||||
int ttsSpeed(QString tts);
|
int ttsSpeed(QString tts);
|
||||||
QString ttsLang(QString tts);
|
QString ttsLang(QString tts);
|
||||||
|
bool ttsUseSapi4();
|
||||||
QString encoderPath(QString enc);
|
QString encoderPath(QString enc);
|
||||||
QString encoderOptions(QString enc);
|
QString encoderOptions(QString enc);
|
||||||
double encoderQuality(QString enc);
|
double encoderQuality(QString enc);
|
||||||
|
|
@ -116,6 +117,7 @@ class RbSettings : public QObject
|
||||||
void setTTSSpeed(QString tts, int speed);
|
void setTTSSpeed(QString tts, int speed);
|
||||||
void setTTSVoice(QString tts, QString voice);
|
void setTTSVoice(QString tts, QString voice);
|
||||||
void setTTSLang(QString tts, QString lang);
|
void setTTSLang(QString tts, QString lang);
|
||||||
|
void setTTSUseSapi4(bool value);
|
||||||
void setEncoderPath(QString enc, QString path);
|
void setEncoderPath(QString enc, QString path);
|
||||||
void setEncoderOptions(QString enc, QString options);
|
void setEncoderOptions(QString enc, QString options);
|
||||||
void setEncoderQuality(QString enc, double q);
|
void setEncoderQuality(QString enc, double q);
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@
|
||||||
<item row="3" column="1" >
|
<item row="3" column="1" >
|
||||||
<widget class="QLineEdit" name="ttsoptions" />
|
<widget class="QLineEdit" name="ttsoptions" />
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0" colspan="2" >
|
<item row="5" column="0" colspan="2" >
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
|
|
@ -79,7 +79,7 @@
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="0" colspan="2" >
|
<item row="6" column="0" colspan="2" >
|
||||||
<layout class="QHBoxLayout" >
|
<layout class="QHBoxLayout" >
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="reset" >
|
<widget class="QPushButton" name="reset" >
|
||||||
|
|
@ -123,6 +123,13 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</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>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ void initTTSList()
|
||||||
ttsList["flite"] = "Flite TTS Engine";
|
ttsList["flite"] = "Flite TTS Engine";
|
||||||
ttsList["swift"] = "Swift TTS Engine";
|
ttsList["swift"] = "Swift TTS Engine";
|
||||||
#if defined(Q_OS_WIN)
|
#if defined(Q_OS_WIN)
|
||||||
ttsList["sapi"] = "Sapi 5 TTS Engine";
|
ttsList["sapi"] = "Sapi TTS Engine";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -156,7 +156,7 @@ TTSSapi::TTSSapi() : TTSBase()
|
||||||
{
|
{
|
||||||
m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\"";
|
m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\"";
|
||||||
defaultLanguage ="english";
|
defaultLanguage ="english";
|
||||||
|
m_sapi4 =false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -166,8 +166,9 @@ bool TTSSapi::start(QString *errStr)
|
||||||
m_TTSOpts = settings->ttsOptions("sapi");
|
m_TTSOpts = settings->ttsOptions("sapi");
|
||||||
m_TTSLanguage =settings->ttsLang("sapi");
|
m_TTSLanguage =settings->ttsLang("sapi");
|
||||||
m_TTSVoice=settings->ttsVoice("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::remove(QDir::tempPath() +"/sapi_voice.vbs");
|
||||||
QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs");
|
QFile::copy(":/builtin/sapi_voice.vbs",QDir::tempPath() + "/sapi_voice.vbs");
|
||||||
m_TTSexec = 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("%voice",m_TTSVoice);
|
||||||
execstring.replace("%speed",m_TTSSpeed);
|
execstring.replace("%speed",m_TTSSpeed);
|
||||||
|
|
||||||
|
if(m_sapi4)
|
||||||
|
execstring.append(" /sapi4 ");
|
||||||
|
|
||||||
qDebug() << "init" << execstring;
|
qDebug() << "init" << execstring;
|
||||||
voicescript = new QProcess(NULL);
|
voicescript = new QProcess(NULL);
|
||||||
//connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error()));
|
//connect(voicescript,SIGNAL(readyReadStandardError()),this,SLOT(error()));
|
||||||
|
|
@ -219,9 +223,13 @@ QStringList TTSSapi::getVoiceList(QString language)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
// create the voice process
|
// 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("%exe",m_TTSexec);
|
||||||
execstring.replace("%lang",language);
|
execstring.replace("%lang",language);
|
||||||
|
|
||||||
|
if(settings->ttsUseSapi4())
|
||||||
|
execstring.append(" /sapi4 ");
|
||||||
|
|
||||||
qDebug() << "init" << execstring;
|
qDebug() << "init" << execstring;
|
||||||
voicescript = new QProcess(NULL);
|
voicescript = new QProcess(NULL);
|
||||||
voicescript->start(execstring);
|
voicescript->start(execstring);
|
||||||
|
|
@ -234,6 +242,11 @@ QStringList TTSSapi::getVoiceList(QString language)
|
||||||
result = dataRaw.split(",",QString::SkipEmptyParts);
|
result = dataRaw.split(",",QString::SkipEmptyParts);
|
||||||
result.sort();
|
result.sort();
|
||||||
result.removeFirst();
|
result.removeFirst();
|
||||||
|
for(int i = 0; i< result.size();i++)
|
||||||
|
{
|
||||||
|
result[i] = result.at(i).simplified();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
delete voicescript;
|
delete voicescript;
|
||||||
QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner
|
QFile::setPermissions(QDir::tempPath() +"/sapi_voice.vbs",QFile::ReadOwner |QFile::WriteOwner|QFile::ExeOwner
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ private:
|
||||||
QString m_TTSLanguage;
|
QString m_TTSLanguage;
|
||||||
QString m_TTSVoice;
|
QString m_TTSVoice;
|
||||||
QString m_TTSSpeed;
|
QString m_TTSSpeed;
|
||||||
|
bool m_sapi4;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TTSExes : public TTSBase
|
class TTSExes : public TTSBase
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ TTSSapiGui::TTSSapiGui(TTSSapi* sapi,QDialog* parent) : QDialog(parent)
|
||||||
this->hide();
|
this->hide();
|
||||||
connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset()));
|
connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset()));
|
||||||
connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString)));
|
connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString)));
|
||||||
|
connect(ui.usesapi4,SIGNAL(stateChanged(int)),this,SLOT(useSapi4Changed(int)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTSSapiGui::showCfg()
|
void TTSSapiGui::showCfg()
|
||||||
|
|
@ -40,8 +40,11 @@ void TTSSapiGui::showCfg()
|
||||||
QString selLang = settings->ttsLang("sapi");
|
QString selLang = settings->ttsLang("sapi");
|
||||||
QString selVoice = settings->ttsVoice("sapi");
|
QString selVoice = settings->ttsVoice("sapi");
|
||||||
ui.speed->setValue(settings->ttsSpeed("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
|
// fill in language combobox
|
||||||
QStringList languages = settings->allLanguages();
|
QStringList languages = settings->allLanguages();
|
||||||
|
|
||||||
|
|
@ -79,6 +82,10 @@ void TTSSapiGui::accept(void)
|
||||||
settings->setTTSLang("sapi",ui.languagecombo->currentText());
|
settings->setTTSLang("sapi",ui.languagecombo->currentText());
|
||||||
settings->setTTSVoice("sapi",ui.voicecombo->currentText());
|
settings->setTTSVoice("sapi",ui.voicecombo->currentText());
|
||||||
settings->setTTSSpeed("sapi",ui.speed->value());
|
settings->setTTSSpeed("sapi",ui.speed->value());
|
||||||
|
if(ui.usesapi4->checkState() == Qt::Checked)
|
||||||
|
settings->setTTSUseSapi4(true);
|
||||||
|
else
|
||||||
|
settings->setTTSUseSapi4(false);
|
||||||
// sync settings
|
// sync settings
|
||||||
settings->sync();
|
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)
|
TTSExesGui::TTSExesGui(QDialog* parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
ui.setupUi(this);
|
ui.setupUi(this);
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ public slots:
|
||||||
virtual void reject(void);
|
virtual void reject(void);
|
||||||
virtual void reset(void);
|
virtual void reset(void);
|
||||||
void updateVoices(QString language);
|
void updateVoices(QString language);
|
||||||
|
void useSapi4Changed(int);
|
||||||
private:
|
private:
|
||||||
Ui::SapiCfgFrm ui;
|
Ui::SapiCfgFrm ui;
|
||||||
RbSettings* settings;
|
RbSettings* settings;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue