aboutsummaryrefslogtreecommitdiff
path: root/backends/text-to-speech
AgeCommit message (Collapse)Author
2019-09-05TTS: Fix possible deadlockJaromir Wysoglad
2019-09-05TTS: Minimize the time needed for stop() on Win32Jaromir Wysoglad
This gets rid of freezes when using TTS on Windows.
2019-09-01TTS: Use Common::Encoding for encoding conversion.Jaromir Wysoglad
2019-09-01TTS: Better documentation of TTSVoice.Jaromir Wysoglad
2019-09-01TTS: Rename LinuxTextToSpeechManager to SpeechDispatcherManagerJaromir Wysoglad
Add a new define for the SpeechDispatcherManager
2019-09-01TTS: Remove USE_PLATFORM_TTS definesJaromir Wysoglad
Use defined(USE_TTS) && defined(PLATFORM) instead
2019-09-01TTS: Add summary of changes in sphelper-scummvm.hJaromir Wysoglad
2019-09-01TTS: RefactoringJaromir Wysoglad
Refactoring as suggested by bluegr on github.
2019-09-01TTS: Fix missing indentationJaromir Wysoglad
2019-09-01JANITORIAL: Remove some trailing whitespacesJaromir Wysoglad
2019-09-01TTS: Implement our own queuing on windows.Jaromir Wysoglad
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.
2019-09-01TTS: Add proper speech queuing, update INT_NO_REP.Jaromir Wysoglad
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
2019-09-01TTS: Restart SPD if resume() fails.Jaromir Wysoglad
2019-09-01TTS: Fix INTERRUPT_NO_REPEAT on WindowsJaromir Wysoglad
2019-09-01TTS: Implement *_NO_REPEAT actions and Fix state synchronization issues on macOSThierry Crozat
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.
2019-09-01TTS: Implement our own queuing for linuxJaromir Wysoglad
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.
2019-09-01TTS: Add *_NO_REPEAT actionsJaromir Wysoglad
2019-09-01TTS: Reimplement isSpeaking on Windows.Jaromir Wysoglad
2019-09-01TTS: Fix pause() and resume() on linuxJaromir Wysoglad
2019-09-01TTS: Make state switching faster on LinuxJaromir Wysoglad
2019-09-01TTS: Implement speech queueing on macOSThierry Crozat
2019-09-01TTS: Implement speech queueing on Linux and WinJaromir Wysoglad
2019-09-01TTS: Stop or pause speaking on word boundaries in macOS implementationThierry Crozat
2019-09-01TTS: Implement TextToSpeechManager for macOSThierry Crozat
2019-09-01TTS: Add TTS support when compiling with msvc.Jaromir Wysoglad
2019-09-01TTS: Remove unneeded codeJaromir Wysoglad
Remove debuging outputs Remove commented iconv implementation of text conversion to UTF-8
2019-09-01TTS: RefactoringJaromir Wysoglad
* 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
2019-09-01TTS: Fix state switching on windowsJaromir Wysoglad
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.
2019-09-01TTS: Minor Windows TTS refactoringJaromir Wysoglad
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
2019-09-01TTS: Add iconv implementation of strToUtf8Jaromir Wysoglad
This might be useful in the future, because SDL cannot convert from some important encodings (for example CP850)
2019-09-01TTS: Minor refactorisationsJaromir Wysoglad
- 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.
2019-09-01TTS: Add check to getVoice, fix typo.Jaromir Wysoglad
Check if _availableVoices isn't empty. Replace availaible with available
2019-09-01TTS: Change String == "" to String.empty()Jaromir Wysoglad
2019-09-01TTS: Move popState to the base classJaromir Wysoglad
2019-09-01TTS: Implement conversion to unicode in say on winJaromir Wysoglad
2019-09-01TTS: Implement conversion to UTF-8 in say on linuxJaromir Wysoglad
2019-09-01TTS: Fix voice setting on startupJaromir Wysoglad
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.
2019-09-01TTS: Add reference counting to TTSVoiceJaromir Wysoglad
Also refactor TTSVoice destruction to use this reference counting.
2019-09-01TTS: Unify setters between linux and win backends.Jaromir Wysoglad
2019-09-01TTS: Make sure that TTS lang matches transMan langJaromir Wysoglad
2019-09-01TTS: Add age to TTSVoiceJaromir Wysoglad
2019-09-01TTS: Finish implementing the Windows TTS managerJaromir Wysoglad
2019-09-01TTS: Start implementing windows TTSJaromir Wysoglad
2019-09-01TTS: Prepare for windows TTSJaromir Wysoglad
Add windows configuration in configure Add basic skeleton to backends Check if ttsMan is initialized in GUI
2019-09-01TTS: Convert strings to UTF-8Jaromir Wysoglad
Conversion happens only for languages, that might needed (not for english)
2019-09-01TTS: Restart spd connection on speak error.Jaromir Wysoglad
2019-09-01TTS: Add warning if the TTS could not be initedJaromir Wysoglad
2019-09-01TTS: Restrict TTS on linux to only englishJaromir Wysoglad
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.
2019-09-01TTS: Add voice selection to optionsJaromir Wysoglad
2019-09-01TTS: Add text to speech to the GUI.Jaromir Wysoglad