diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2010-03-11 20:09:22 +0000 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2010-03-11 20:09:22 +0000 |
commit | b4401e589e6a4f138e718cce527c5da95907d240 (patch) | |
tree | d6bccb60ed2e25975f94c8dee586ef89811d721c /rbutil | |
parent | c8752b428dc11db98f2ccd16d2e4239dd731f992 (diff) |
Implement speed adjustment for OS X TTS.
Note that some voices don't support speed adjustment. These voices will ignore
the selected value. The current implementation doesn't mark those voices in any
way.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25125 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil')
-rw-r--r-- | rbutil/rbutilqt/base/rbsettings.cpp | 2 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/ttscarbon.cpp | 13 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/ttscarbon.h | 3 |
3 files changed, 16 insertions, 2 deletions
diff --git a/rbutil/rbutilqt/base/rbsettings.cpp b/rbutil/rbutilqt/base/rbsettings.cpp index 37f01c6c1c..c6f1bfcf6b 100644 --- a/rbutil/rbutilqt/base/rbsettings.cpp +++ b/rbutil/rbutilqt/base/rbsettings.cpp @@ -55,7 +55,7 @@ const static struct { { RbSettings::TtsUseSapi4, "sapi/useSapi4", "false" }, { RbSettings::EncoderNarrowBand, ":encoder:/narrowband", "false" }, { RbSettings::WavtrimThreshold, "wavtrimthreshold", "500"}, - { RbSettings::TtsSpeed, ":tts:/speed", "0" }, + { RbSettings::TtsSpeed, ":tts:/speed", "175" }, { RbSettings::EncoderComplexity, ":encoder:/complexity", "10" }, { RbSettings::EncoderQuality, ":encoder:/quality", "8.0" }, { RbSettings::EncoderVolume, ":encoder:/volume", "1.0" }, diff --git a/rbutil/rbutilqt/base/ttscarbon.cpp b/rbutil/rbutilqt/base/ttscarbon.cpp index b8259a374b..a74cb23da3 100644 --- a/rbutil/rbutilqt/base/ttscarbon.cpp +++ b/rbutil/rbutilqt/base/ttscarbon.cpp @@ -24,6 +24,7 @@ #include "rbsettings.h" #include <CoreFoundation/CoreFoundation.h> +#include <ApplicationServices/ApplicationServices.h> #include <Carbon/Carbon.h> #include <unistd.h> #include <sys/stat.h> @@ -81,6 +82,10 @@ bool TTSCarbon::start(QString *errStr) error = NewSpeechChannel(vspecref, &m_channel); //SetSpeechInfo(channel, soSpeechDoneCallBack, speechDone); + Fixed rate = (Fixed)(0x10000 * RbSettings::subValue("carbon", + RbSettings::TtsSpeed).toInt()); + if(rate != 0) + SetSpeechRate(m_channel, rate); return (error == 0) ? true : false; } @@ -125,6 +130,12 @@ void TTSCarbon::generateSettings(void) tr("Voice:"), voice, voiceNames, EncTtsSetting::eNOBTN); insertSetting(ConfigVoice, setting); + // speed + int speed = RbSettings::subValue("carbon", RbSettings::TtsSpeed).toInt(); + setting = new EncTtsSetting(this, EncTtsSetting::eINT, + tr("Speed (words/min):"), speed, 80, 500, + EncTtsSetting::eNOBTN); + insertSetting(ConfigSpeed, setting); } @@ -133,6 +144,8 @@ void TTSCarbon::saveSettings(void) // save settings in user config RbSettings::setSubValue("carbon", RbSettings::TtsVoice, getSetting(ConfigVoice)->current().toString()); + RbSettings::setSubValue("carbon", RbSettings::TtsSpeed, + getSetting(ConfigSpeed)->current().toInt()); RbSettings::sync(); } diff --git a/rbutil/rbutilqt/base/ttscarbon.h b/rbutil/rbutilqt/base/ttscarbon.h index c6b4a61320..b2d39047a5 100644 --- a/rbutil/rbutilqt/base/ttscarbon.h +++ b/rbutil/rbutilqt/base/ttscarbon.h @@ -32,7 +32,8 @@ class TTSCarbon : public TTSBase //! Enum to identify the settings enum ConfigValuesCarbon { - ConfigVoice + ConfigVoice, + ConfigSpeed }; public: TTSCarbon(QObject *parent = NULL); |