From b4401e589e6a4f138e718cce527c5da95907d240 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Thu, 11 Mar 2010 20:09:22 +0000 Subject: 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 --- rbutil/rbutilqt/base/rbsettings.cpp | 2 +- rbutil/rbutilqt/base/ttscarbon.cpp | 13 +++++++++++++ rbutil/rbutilqt/base/ttscarbon.h | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'rbutil/rbutilqt') 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 +#include #include #include #include @@ -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); -- cgit