[Scummvm-git-logs] scummvm master -> 6254fe8dec3f050f82c5af3ec657e48b687736eb
criezy
criezy at scummvm.org
Sun Jun 21 15:34:09 UTC 2020
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
3591003ea3 TTS: Add method to get the default voice
75698aa306 MACOSX: Implement TextToSpeechManager::getDefaultVoice()
a362d58821 GUI: Allow selecting the default TTS voice in the Options
4b774d71ac TESTBED: Use the default voice for the TTS tests
6254fe8dec TTS: Add override keyword
Commit: 3591003ea399babff4da5863980cb1939a093e34
https://github.com/scummvm/scummvm/commit/3591003ea399babff4da5863980cb1939a093e34
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2020-06-21T16:31:15+01:00
Commit Message:
TTS: Add method to get the default voice
This returns by default the first voice, but can be reimplemented
in derived classes to return the system default voice.
Changed paths:
common/text-to-speech.h
diff --git a/common/text-to-speech.h b/common/text-to-speech.h
index cd34c28747..d35553b4c5 100644
--- a/common/text-to-speech.h
+++ b/common/text-to-speech.h
@@ -293,6 +293,11 @@ public:
*/
Array<int> getVoiceIndicesByGender (TTSVoice::Gender gender);
+ /**
+ * returns the index for the default voice.
+ */
+ virtual int getDefaultVoice() { return 0; }
+
/**
* Pushes the current state of the TTS
*/
Commit: 75698aa306c1568abd6340043e4e2e113042d795
https://github.com/scummvm/scummvm/commit/75698aa306c1568abd6340043e4e2e113042d795
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2020-06-21T16:31:15+01:00
Commit Message:
MACOSX: Implement TextToSpeechManager::getDefaultVoice()
On macOS, TextToSpeechManager::getDefaultVoice() now returns the
system default voice (assuming the system language is the same as
the language for which we ask the default voice in ScummVM, otherwise
it returns the first voice).
Changed paths:
backends/text-to-speech/macosx/macosx-text-to-speech.h
backends/text-to-speech/macosx/macosx-text-to-speech.mm
diff --git a/backends/text-to-speech/macosx/macosx-text-to-speech.h b/backends/text-to-speech/macosx/macosx-text-to-speech.h
index 40ea8083dc..1ca39fe323 100644
--- a/backends/text-to-speech/macosx/macosx-text-to-speech.h
+++ b/backends/text-to-speech/macosx/macosx-text-to-speech.h
@@ -55,6 +55,8 @@ public:
virtual void setLanguage(Common::String language);
+ virtual int getDefaultVoice();
+
virtual void freeVoiceData(void *data);
bool startNextSpeech();
diff --git a/backends/text-to-speech/macosx/macosx-text-to-speech.mm b/backends/text-to-speech/macosx/macosx-text-to-speech.mm
index 4d232f3b95..66feb54d4b 100644
--- a/backends/text-to-speech/macosx/macosx-text-to-speech.mm
+++ b/backends/text-to-speech/macosx/macosx-text-to-speech.mm
@@ -227,6 +227,19 @@ void MacOSXTextToSpeechManager::setLanguage(Common::String language) {
updateVoices();
}
+int MacOSXTextToSpeechManager::getDefaultVoice() {
+ if (_ttsState->_availableVoices.size() < 2)
+ return 0;
+ NSString *defaultVoice = [NSSpeechSynthesizer defaultVoice];
+ if (defaultVoice == nil)
+ return 0;
+ for (int i = 0 ; i < _ttsState->_availableVoices.size() ; ++i) {
+ if ([defaultVoice isEqualToString:(NSString*)(_ttsState->_availableVoices[i].getData())])
+ return i;
+ }
+ return 0;
+}
+
void MacOSXTextToSpeechManager::freeVoiceData(void *data) {
NSString* voiceId = (NSString*)data;
[voiceId release];
Commit: a362d5882121cf5cdd642a4afc3c2ee3746529f9
https://github.com/scummvm/scummvm/commit/a362d5882121cf5cdd642a4afc3c2ee3746529f9
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2020-06-21T16:31:15+01:00
Commit Message:
GUI: Allow selecting the default TTS voice in the Options
Changed paths:
gui/gui-manager.cpp
gui/options.cpp
diff --git a/gui/gui-manager.cpp b/gui/gui-manager.cpp
index 22d7c8a17c..d088cec1b4 100644
--- a/gui/gui-manager.cpp
+++ b/gui/gui-manager.cpp
@@ -664,12 +664,12 @@ void GuiManager::initTextToSpeech() {
ttsMan->setVolume(volume);
unsigned voice;
- if(ConfMan.hasKey("tts_voice"))
+ if(ConfMan.hasKey("tts_voice")) {
voice = ConfMan.getInt("tts_voice", "scummvm");
- else
- voice = 0;
- if (voice >= ttsMan->getVoicesArray().size())
- voice = 0;
+ if (voice >= ttsMan->getVoicesArray().size())
+ voice = ttsMan->getDefaultVoice();
+ } else
+ voice = ttsMan->getDefaultVoice();
ttsMan->setVoice(voice);
}
#endif
diff --git a/gui/options.cpp b/gui/options.cpp
index c7e970d3a5..24e392f4b5 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -2176,16 +2176,18 @@ void GlobalOptionsDialog::addAccessibilityControls(GuiObject *boss, const Common
if (ttsMan != nullptr)
voices = ttsMan->getVoicesArray();
- for(unsigned i = 0; i < voices.size(); i++) {
- _ttsVoiceSelectionPopUp->appendEntry(voices[i].getDescription(), i);
- }
if (voices.empty())
_ttsVoiceSelectionPopUp->appendEntry(_("None"), 0);
+ else {
+ _ttsVoiceSelectionPopUp->appendEntry(_("<default>"));
+ for(unsigned i = 0; i < voices.size(); i++)
+ _ttsVoiceSelectionPopUp->appendEntry(voices[i].getDescription(), i);
+ }
- if (ConfMan.hasKey("tts_voice") && (unsigned) ConfMan.getInt("tts_voice", _domain) < voices.size())
+ if (ConfMan.hasKey("tts_voice", _domain) && (unsigned) ConfMan.getInt("tts_voice", _domain) < voices.size())
_ttsVoiceSelectionPopUp->setSelectedTag(ConfMan.getInt("tts_voice", _domain)) ;
else
- _ttsVoiceSelectionPopUp->setSelectedTag(0);
+ _ttsVoiceSelectionPopUp->setSelected(0);
}
#endif
@@ -2347,15 +2349,17 @@ void GlobalOptionsDialog::apply() {
else {
ttsMan->setLanguage(newLang);
}
- _ttsVoiceSelectionPopUp->setSelectedTag(0);
+ _ttsVoiceSelectionPopUp->setSelected(0);
}
int volume = (ConfMan.getInt("speech_volume", "scummvm") * 100) / 256;
if (ConfMan.hasKey("mute", "scummvm") && ConfMan.getBool("mute", "scummvm"))
volume = 0;
ttsMan->setVolume(volume);
ConfMan.setBool("tts_enabled", _ttsCheckbox->getState(), _domain);
- int selectedVoice = _ttsVoiceSelectionPopUp->getSelectedTag();
+ unsigned selectedVoice = _ttsVoiceSelectionPopUp->getSelectedTag();
ConfMan.setInt("tts_voice", selectedVoice, _domain);
+ if (selectedVoice >= ttsMan->getVoicesArray().size())
+ selectedVoice = ttsMan->getDefaultVoice();
ttsMan->setVoice(selectedVoice);
}
#endif
Commit: 4b774d71ac777cb8f26605c437549059bac13318
https://github.com/scummvm/scummvm/commit/4b774d71ac777cb8f26605c437549059bac13318
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2020-06-21T16:31:15+01:00
Commit Message:
TESTBED: Use the default voice for the TTS tests
Changed paths:
engines/testbed/speech.cpp
diff --git a/engines/testbed/speech.cpp b/engines/testbed/speech.cpp
index 895a926f99..a0892dfcbb 100644
--- a/engines/testbed/speech.cpp
+++ b/engines/testbed/speech.cpp
@@ -116,7 +116,7 @@ TestExitStatus Speechtests::testStop() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech stop test. You should expect a voice to start speaking and after approximately a second it should stop the speech";
@@ -152,7 +152,7 @@ TestExitStatus Speechtests::testPauseResume() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech pause test. You should expect a voice to start speaking, then after approximately a second of speech, it should pause and then continue from where it left.";
@@ -197,7 +197,7 @@ TestExitStatus Speechtests::testRate() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech rate test. You should expect a voice to say: \"Text to speech slow rate.\" really slowly and then \"Text to speech fast rate\" really fast";
@@ -230,7 +230,7 @@ TestExitStatus Speechtests::testVolume() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech volume test. You should expect a voice to say: \"Text to speech low volume.\" quietly and then \"Text to speech max volume\" at a higher volume";
@@ -262,7 +262,7 @@ TestExitStatus Speechtests::testPitch() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech pitch test. You should expect a high pitched voice to say: \"Text to speech high pitch.\" and then a low pitched voice: \"Text to speech low pitch\"";
@@ -294,7 +294,7 @@ TestExitStatus Speechtests::testStateStacking() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech state stacking test. You should expect a speech from three different voices (different pitch, gender, volume and speech rate), each voice will say: \"Voice number X is speaking.\", the voices will speak in this order: 1, 2, 3, 2, 1. A voice with the same number should sound the same every time";
@@ -348,7 +348,7 @@ TestExitStatus Speechtests::testQueueing() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech queue test. You should expect a voice to say: \"This is first speech. This is second speech\"";
@@ -377,7 +377,7 @@ TestExitStatus Speechtests::testInterrupting() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech interrupt test. You should expect a voice to start saying english alphabet and after about a second it should get interrupted and say: \"Speech interrupted\" instead.";
@@ -407,7 +407,7 @@ TestExitStatus Speechtests::testDroping() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech drop test. You should expect a voice to start say:\"Today is a really nice weather, perfect day to use ScummVM, don't you think?\" and nothing else.";
@@ -436,7 +436,7 @@ TestExitStatus Speechtests::testInterruptNoRepeat() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech interrupt no repeat test. You should expect a voice to start saying:\"This is the first sentence, this should get interrupted\", but the speech gets interrupted and \"This is the second sentence, it should play only once\" is said instead.";
@@ -473,7 +473,7 @@ TestExitStatus Speechtests::testQueueNoRepeat() {
ttsMan->setVolume(100);
ttsMan->setRate(0);
ttsMan->setPitch(0);
- ttsMan->setVoice(0);
+ ttsMan->setVoice(ttsMan->getDefaultVoice());
Testsuite::clearScreen();
Common::String info = "Text to speech queue no repeat test. You should expect a voice to start say:\"This is the first sentence. This is the second sentence\" and nothing else";
Commit: 6254fe8dec3f050f82c5af3ec657e48b687736eb
https://github.com/scummvm/scummvm/commit/6254fe8dec3f050f82c5af3ec657e48b687736eb
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2020-06-21T16:31:15+01:00
Commit Message:
TTS: Add override keyword
Changed paths:
backends/text-to-speech/linux/linux-text-to-speech.h
backends/text-to-speech/macosx/macosx-text-to-speech.h
backends/text-to-speech/windows/windows-text-to-speech.h
diff --git a/backends/text-to-speech/linux/linux-text-to-speech.h b/backends/text-to-speech/linux/linux-text-to-speech.h
index 4c02b99d7c..c67e22aa74 100644
--- a/backends/text-to-speech/linux/linux-text-to-speech.h
+++ b/backends/text-to-speech/linux/linux-text-to-speech.h
@@ -55,31 +55,31 @@ public:
};
SpeechDispatcherManager();
- virtual ~SpeechDispatcherManager();
+ virtual ~SpeechDispatcherManager() override;
- virtual bool say(Common::String str, Action action, Common::String charset = "");
+ virtual bool say(Common::String str, Action action, Common::String charset = "") override;
- virtual bool stop();
- virtual bool pause();
- virtual bool resume();
+ virtual bool stop() override;
+ virtual bool pause() override;
+ virtual bool resume() override;
- virtual bool isSpeaking();
- virtual bool isPaused();
- virtual bool isReady();
+ virtual bool isSpeaking() override;
+ virtual bool isPaused() override;
+ virtual bool isReady() override;
- virtual void setVoice(unsigned index);
- virtual void setRate(int rate);
- virtual void setPitch(int pitch);
- virtual void setVolume(unsigned volume);
- virtual void setLanguage(Common::String language);
+ virtual void setVoice(unsigned index) override;
+ virtual void setRate(int rate) override;
+ virtual void setPitch(int pitch) override;
+ virtual void setVolume(unsigned volume) override;
+ virtual void setLanguage(Common::String language) override;
void updateState(SpeechEvent event);
- virtual void freeVoiceData(void *data);
+ virtual void freeVoiceData(void *data) override;
private:
void init();
- virtual void updateVoices();
+ virtual void updateVoices() override;
void createVoice(int typeNumber, Common::TTSVoice::Gender, Common::TTSVoice::Age, char *description);
Common::String strToUtf8(Common::String str, Common::String charset);
static void *startSpeech(void *p);
diff --git a/backends/text-to-speech/macosx/macosx-text-to-speech.h b/backends/text-to-speech/macosx/macosx-text-to-speech.h
index 1ca39fe323..19679d3f86 100644
--- a/backends/text-to-speech/macosx/macosx-text-to-speech.h
+++ b/backends/text-to-speech/macosx/macosx-text-to-speech.h
@@ -33,36 +33,36 @@
class MacOSXTextToSpeechManager : public Common::TextToSpeechManager {
public:
MacOSXTextToSpeechManager();
- virtual ~MacOSXTextToSpeechManager();
+ virtual ~MacOSXTextToSpeechManager() override;
- virtual bool say(Common::String str, Action action, Common::String charset = "");
+ virtual bool say(Common::String str, Action action, Common::String charset = "") override;
- virtual bool stop();
- virtual bool pause();
- virtual bool resume();
+ virtual bool stop() override;
+ virtual bool pause() override;
+ virtual bool resume() override;
- virtual bool isSpeaking();
- virtual bool isPaused();
- virtual bool isReady();
+ virtual bool isSpeaking() override;
+ virtual bool isPaused() override;
+ virtual bool isReady() override;
- virtual void setVoice(unsigned index);
+ virtual void setVoice(unsigned index) override;
- virtual void setRate(int rate);
+ virtual void setRate(int rate) override;
- virtual void setPitch(int pitch);
+ virtual void setPitch(int pitch) override;
- virtual void setVolume(unsigned volume);
+ virtual void setVolume(unsigned volume) override;
- virtual void setLanguage(Common::String language);
+ virtual void setLanguage(Common::String language) override;
- virtual int getDefaultVoice();
+ virtual int getDefaultVoice() override;
- virtual void freeVoiceData(void *data);
+ virtual void freeVoiceData(void *data) override;
bool startNextSpeech();
private:
- virtual void updateVoices();
+ virtual void updateVoices() override;
struct SpeechText {
Common::String text;
diff --git a/backends/text-to-speech/windows/windows-text-to-speech.h b/backends/text-to-speech/windows/windows-text-to-speech.h
index 3e7c29ba35..3527f36fc6 100644
--- a/backends/text-to-speech/windows/windows-text-to-speech.h
+++ b/backends/text-to-speech/windows/windows-text-to-speech.h
@@ -49,33 +49,33 @@ public:
};
WindowsTextToSpeechManager();
- virtual ~WindowsTextToSpeechManager();
+ virtual ~WindowsTextToSpeechManager() override;
- virtual bool say(Common::String str, Action action, Common::String charset = "");
+ virtual bool say(Common::String str, Action action, Common::String charset = "") override;
- virtual bool stop();
- virtual bool pause();
- virtual bool resume();
+ virtual bool stop() override;
+ virtual bool pause() override;
+ virtual bool resume() override;
- virtual bool isSpeaking();
- virtual bool isPaused();
- virtual bool isReady();
+ virtual bool isSpeaking() override;
+ virtual bool isPaused() override;
+ virtual bool isReady() override;
- virtual void setVoice(unsigned index);
+ virtual void setVoice(unsigned index) override;
- virtual void setRate(int rate);
+ virtual void setRate(int rate) override;
- virtual void setPitch(int pitch);
+ virtual void setPitch(int pitch) override;
- virtual void setVolume(unsigned volume);
+ virtual void setVolume(unsigned volume) override;
- virtual void setLanguage(Common::String language);
+ virtual void setLanguage(Common::String language) override;
- virtual void freeVoiceData(void *data);
+ virtual void freeVoiceData(void *data) override;
private:
void init();
- virtual void updateVoices();
+ virtual void updateVoices() override;
void createVoice(void *cpVoiceToken);
Common::String lcidToLocale(Common::String lcid);
SpeechState _speechState;
More information about the Scummvm-git-logs
mailing list