diff options
| -rw-r--r-- | common/text-to-speech.h | 141 | 
1 files changed, 140 insertions, 1 deletions
diff --git a/common/text-to-speech.h b/common/text-to-speech.h index 1283dfea5f..a1d8a314e6 100644 --- a/common/text-to-speech.h +++ b/common/text-to-speech.h @@ -31,6 +31,10 @@  #include "common/debug.h"  namespace Common { + +/** + * Text to speech voice class. + */  class TTSVoice {  	friend class TextToSpeechManager; @@ -58,12 +62,57 @@ class TTSVoice {  			, _age(age)  			, _data(data)  			, _description(description) {} + +		/** +		 * Returns the gender of the used voice. +		 * +		 * @note The gender information is really platform specific, it may not be +		 * possible to find it out on some platforms. Sometimes it can be set by +		 * the user in the TTS engine configuration and so the information might be +		 * wrong +		 */  		Gender getGender() { return _gender; }; + +		/** +		 * Sets the voice gender, should probably be used only by the backends +		 * that are directly communicating with the TTS engine. +		 */  		void setGender(Gender gender) { _gender = gender; }; + +		/** +		 * Returns the age of the used voice. +		 * +		 * @note The age information is really platform specific, it may not be +		 * possible to find it out on some platforms. Sometimes it can be set by +		 * the user in the TTS engine configuration and so the information might be +		 * wrong +		 */  		Age getAge() { return _age; }; + +		/** +		 * Sets the voice age, should probably be used only by the backends +		 * that are directly communicating with the TTS engine. +		 */  		void setAge(Age age) { _age = age; }; + +		/** +		 * Returns the data about the voice, this is engine specific variable, +		 * it has close to no value for anything else then communicating with +		 * directly with the TTS engine, which should probably be done only by +		 * the backends. +		 */  		void setData(void *data) { _data = data; }; + +		/** +		 * Sets the voice age, should probably be used only by the backends +		 * that are directly communicating with the TTS engine. +		 */  		void *getData() { return _data; }; + +		/** +		 * Returns the voice description. This description is really tts engine +		 * specific and might be not be availaible with some tts engines. +		 */  		String getDescription() { return _description; };  	protected: @@ -85,41 +134,131 @@ struct TTSState {  /**   * The TextToSpeechManager allows speech synthesis. - *   */  class TextToSpeechManager {  public: +	/** +	 * The constructor sets the language to the translation manager language if  +	 * USE_TRANSLATION is defined, or english when it isn't defined. It sets the rate, +	 * pitch and volume to their middle values. +	 */  	TextToSpeechManager();  	virtual ~TextToSpeechManager(); +	/** +	 * Says the given string +	 * +	 * @param str The string to say +	 */  	virtual bool say(String str) { return false; } +	/** +	 * Stops the speech +	 */  	virtual bool stop() { return false; } + +	/** +	 * Pauses the speech +	 */  	virtual bool pause() { return false; } + +	/** +	 * Resumes the speech +	 */  	virtual bool resume() { return false; } +	/** +	 * Returns true, if the TTS engine is speaking +	 */  	virtual bool isSpeaking() { return false; } + +	/** +	 * Returns true, if the TTS engine is paused +	 */  	virtual bool isPaused() { return false; } + +	/** +	 * Returns true, if the TTS engine is ready to speak (isn't speaking and isn't paused) +	 */  	virtual bool isReady() { return false; } +	/** +	 * Sets a voice to be used by the TTS. +	 * +	 * @param index The index of the voice inside the _ttsState->_availaibleVoices array +	 */  	virtual void setVoice(unsigned index) {} + +	/** +	 * Returns the voice, that is used right now +	 */  	TTSVoice getVoice() { return _ttsState->_availaibleVoices[_ttsState->_activeVoice]; } +	/** +	 * Sets the speech rate +	 * +	 * @param rate Integer between -100 (slowest) and 100 (fastest) +	 */  	virtual void setRate(int rate) {} + +	/** +	 * Returns the current speech rate +	 */  	int getRate() { return _ttsState->_rate; } +	/** +	 * Sets the pitch +	 * +	 * @param pitch Integer between -100 (lowest) and 100 (highest) +	 */  	virtual void setPitch(int pitch) {} + +	/** +	 * Returns current speech pitch +	 */  	int getPitch() { return _ttsState->_pitch; } +	/** +	 * Sets the speech volume +	 * +	 * @param volume Volume as a percentage (0 means muted, 100 means as loud as possible) +	 */  	virtual void setVolume(unsigned volume) {} + +	/** +	 * Returns the current voice volume +	 */  	virtual int getVolume() { return _ttsState->_volume; } +	/** +	 * Sets the speech language +	 * +	 * @param language The language identifier as defined by ISO (2 characters long string) +	 * +	 * @note After using this method, it is probably a good idea to use setVoice, +	 * because voices are usually language specific and so it is set to some platform +	 * specific default after switching languages. +	 */  	virtual void setLanguage(String language) {} + +	/** +	 * Returns the current speech language +	 */  	String getLanguage() { return _ttsState->_language; } +	/** +	 * Returns array of availaible voices for the current language +	 */  	Array<TTSVoice> getVoicesArray() { return _ttsState->_availaibleVoices; } +	/** +	 * Pushes the current state of the TTS +	 */  	void pushState(); + +	/** +	 * Pops the TTS state +	 */  	virtual bool popState() { return true; }  protected:  | 
