diff options
| author | Jaromir Wysoglad | 2019-07-11 00:14:28 +0200 | 
|---|---|---|
| committer | Filippos Karapetis | 2019-09-01 22:47:55 +0300 | 
| commit | 39e74b027e372dcaed33ffa1b18f0de4abf82eb1 (patch) | |
| tree | 0c430da6aad4b88036d5c025525e39ad1f7db92e /common | |
| parent | f78fc85f3a0c92245802098327425d21670d9479 (diff) | |
| download | scummvm-rg350-39e74b027e372dcaed33ffa1b18f0de4abf82eb1.tar.gz scummvm-rg350-39e74b027e372dcaed33ffa1b18f0de4abf82eb1.tar.bz2 scummvm-rg350-39e74b027e372dcaed33ffa1b18f0de4abf82eb1.zip | |
TTS: Add part of linux TTS
Diffstat (limited to 'common')
| -rw-r--r-- | common/module.mk | 5 | ||||
| -rw-r--r-- | common/text-to-speech.cpp | 47 | ||||
| -rw-r--r-- | common/text-to-speech.h | 75 | 
3 files changed, 125 insertions, 2 deletions
| diff --git a/common/module.mk b/common/module.mk index 46e32d72d9..56ed05fe72 100644 --- a/common/module.mk +++ b/common/module.mk @@ -99,5 +99,10 @@ MODULE_OBJS += \  	lua/scummvm_file.o  endif +ifdef USE_TTS +MODULE_OBJS += \ +	text-to-speech.o +endif +  # Include common rules  include $(srcdir)/rules.mk diff --git a/common/text-to-speech.cpp b/common/text-to-speech.cpp new file mode 100644 index 0000000000..d1b9539f93 --- /dev/null +++ b/common/text-to-speech.cpp @@ -0,0 +1,47 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + + +#include "common/text-to-speech.h" +#if defined(USE_TTS) + +namespace Common { +TextToSpeechManager::TextToSpeechManager() { +	_ttsState = new TTSState; +	_ttsState->_pitch = 0; +	_ttsState->_volume = 0; +	_ttsState->_rate = 0; +	_ttsState->_activeVoice = nullptr; +	_ttsState->_next = nullptr; +} + +TextToSpeechManager::~TextToSpeechManager() { +	TTSState *tmp = _ttsState; +	while (tmp != nullptr) { +		tmp = _ttsState->_next; +		delete _ttsState; +		_ttsState = tmp; +	} +} + +} +#endif diff --git a/common/text-to-speech.h b/common/text-to-speech.h index e95050e3f5..62cc5e878b 100644 --- a/common/text-to-speech.h +++ b/common/text-to-speech.h @@ -23,19 +23,90 @@  #ifndef BACKENDS_TEXT_TO_SPEECH_ABSTRACT_H  #define BACKENDS_TEXT_TO_SPEECH_ABSTRACT_H +#include "common/scummsys.h" +  #if defined(USE_TTS) +#include "common/array.h" +#include "common/debug.h"  namespace Common { +class TTSVoice { +	friend class TextToSpeechManager; + +	public: +		enum Gender { +			MALE, +			FEMALE, +			UNKNOWN +		}; + +	public: +		TTSVoice() +			: _gender(UNKNOWN) +			, _data(nullptr) {} +		TTSVoice(Gender gender, void *data)  +			: _gender(gender) +			, _data(data) {} +		~TTSVoice() { debug("%d", * (int *)_data); if (_data != nullptr) free(_data); } +		Gender getGender() { return _gender; }; +		void setGender(Gender gender) { _gender = gender; }; +		void setData(void *data) { _data = data; }; +		void *getData() { return _data; }; + +	protected: +		Gender _gender; +		void *_data; +}; + +struct TTSState { +	int _rate; +	int _pitch; +	int _volume; +	String _language; +	TTSVoice *_activeVoice; +	Array<TTSVoice> _availaibleVoices; +	TTSState *_next; +}; +  /**   * The TextToSpeechManager allows speech synthesis.   *   */  class TextToSpeechManager {  public: -	TextToSpeechManager() {} -	virtual ~TextToSpeechManager() {} +	TextToSpeechManager(); +	virtual ~TextToSpeechManager(); + +	virtual bool say(String str) { return false; } + +	virtual bool stop() { return false; } +	virtual bool pause() { return false; } +	virtual bool resume() { return false; } + +	virtual bool isSpeaking() { return false; } +	 +	virtual void setVoice(TTSVoice *voice) {} +	TTSVoice getVoice() { return *(_ttsState->_activeVoice); } + +	virtual void setRate(int rate) {} +	int getRate() { return _ttsState->_rate; } + +	virtual void setPitch(int pitch) {} +	int getPitch() { return _ttsState->_pitch; } + +	virtual void setVolume(int volume) {} +	int getVolume() { return _ttsState->_volume; } + +	virtual void setLanguage(String language) {} +	String getLanguage() { return _ttsState->_language; } + +	Array<TTSVoice> getVoicesArray() { return _ttsState->_availaibleVoices; } + +protected: +	TTSState *_ttsState; +	virtual void updateVoices() {};  };  } // End of namespace Common | 
