Age | Commit message (Collapse) | Author |
|
|
|
Add a new define for the SpeechDispatcherManager
|
|
Use defined(USE_TTS) && defined(PLATFORM) instead
|
|
|
|
Refactoring as suggested by bluegr on github.
|
|
|
|
|
|
Similarly as on linux, there isn't enough control of the speech
queue to properly implement INTERRUPT_NO_REPEAT. So since this
commit we use our own queuing and use SAPI to speak each speech.
This is done outside the main thread.
|
|
Before I used SPD to queue messages and I had a copy of the queue,
so I could requeue everything when resume is called(). But more
control of the queue is needed, so I don't use the SPD's queue
and instead start speeches from my queue one by one from another
thread.
INTERRUPT_NO_REPEAT now behaves as described in the documentation
|
|
|
|
|
|
The NSSpeechSynthesizer is asynchronous and does not immediately start, pause,
or stop the speech. As a result querrying the state of the NSSpeechSynthesizer
does not alwats return the expected result (for example isSpeaking may not
yet been true just after we requested starting to speak). So instead the
TextToSpeechManager on macOS keeps track of the state itself.
|
|
It seems like, that at least some versions of speech-dispatcher
aren't able to successfuly pause and resume. For me, when trying
to pause, it still finishes the speech just being said instead
of pausing it and then it puts it at the end of the speech queue
with some speech-dispatcher internal commands added to it, which
are also hearable.
There is no way to find out where the speech ended when calling
pause, so it is just stopped and when resume is called it is
read from it's start again.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Remove debuging outputs
Remove commented iconv implementation of text conversion to UTF-8
|
|
* Delete multiple empty rows
* Make getVolume non-virtual and leave just the implementation
in base class
* Resolve warning about signed / unsigned comparison in
gui-manager
* Clear availableVoices when updating voices on linux
* By default set language to transMan language on windows
(if the transMan is available)
* Remove freeVoices method from Windows ttsMan, it isn't needed
anymore
|
|
Voice is changed when changing language on windows, so when poping
state, the voice, that should get set has to be saved before
changing the language.
The speech shouldn't continue when changing state, so it is stopped
in pushState and popState.
|
|
Main changes are:
* Save age information about each voice
* Remove Sample TTS Voice from available voices, because it
basicaly cannot speak.
* Stop speech after silently playing the test speech (the last
voice could be heard speaking after the volume got
restored to its original value)
* Remove voice data freeing from freeVoices, because it gets
freed automaticaly
|
|
This might be useful in the future, because SDL cannot convert
from some important encodings (for example CP850)
|
|
- Add comment to tts initialization on Windows
- Correctly free the voicesInfo in linux ttsMan
- Remove popState method from linux-text-to-speech.h and
windows-text-to-speech.h
- Add tts to help in configure
- Refactor language setting in gui-manager.cpp
It counted with english being the default language in
ttsMan constructors, which isn't true anymore.
|
|
Check if _availableVoices isn't empty.
Replace availaible with available
|
|
|
|
|
|
|
|
|
|
The ScummVM was crashing because of an assert, when there was less
voices availaible, than what was set in the ConfMan.
Now the voice just falls back to 0th voice, if there are not
enough voices.
|
|
Also refactor TTSVoice destruction to use this reference counting.
|
|
|
|
|
|
|
|
|
|
|
|
Add windows configuration in configure
Add basic skeleton to backends
Check if ttsMan is initialized in GUI
|
|
Conversion happens only for languages, that might needed (not
for english)
|
|
|
|
|
|
Unfortunatedly the encoding used by ScummVM breaks the
speech-dispatcher, so after trying to say non-ascii character
the connection has to be restarted. So for now I am restricting
the GUI TTS to english only.
|
|
|
|
|
|
Probably works only in the builtin theme right now.
|
|
|