00001 00002 // Name: tts_sapi.h 00003 // Purpose: A wxWidgets wrapper around SAPI 00004 // Author: Julian Smart 00005 // Modified by: 00006 // Created: 2009-02-10 00007 // RCS-ID: 00008 // Copyright: (c) Julian Smart 00009 // Licence: New BSD License 00011 00012 #ifndef _WX_TTS_SAPI_ 00013 #define _WX_TTS_SAPI_ 00014 00015 /* 00016 * Includes 00017 */ 00018 00019 #include "tts/tts.h" 00020 00021 /* 00022 * Styles and types 00023 */ 00024 00025 // SAPI-specific properties 00026 00033 class wxTTSSapiData; 00034 class wxTTSSapiHandler: public wxTTSHandler 00035 { 00036 DECLARE_DYNAMIC_CLASS( wxTTSSapiHandler ) 00037 00038 public: 00039 // Constructors 00040 00041 wxTTSSapiHandler(); 00042 ~wxTTSSapiHandler(); 00043 00044 // Operations 00045 00047 void Init(); 00048 00050 virtual bool Initialize(); 00051 00053 virtual bool Uninitialize(); 00054 00056 virtual bool Speak(const wxString& text, int options = wxTTS_SPEAK_ASYNC); 00057 00059 virtual bool SpeakFile(const wxString& filename, int options = wxTTS_SPEAK_ASYNC, const wxString& waveFilename = wxEmptyString); 00060 00062 virtual bool DoSpeak(const wxString& textOrFilename, bool isFilename, int options = wxTTS_SPEAK_ASYNC, const wxString& waveFilename = wxEmptyString); 00063 00065 virtual bool IsSpeaking() const; 00066 00068 virtual bool IsPaused() const; 00069 00071 virtual bool Stop(); 00072 00074 virtual bool Pause(); 00075 00077 virtual bool Resume(); 00078 00082 virtual bool Skip(int toSkip, wxTTSSkipType itemType = wxTTS_SkipSentence); 00083 00085 virtual bool CanSkip() const; 00086 00088 virtual wxArrayString GetAvailableVoices() const; 00089 00094 virtual bool VoicesAreCompatible(const wxString& voice1, const wxString& voice2) const; 00095 00097 virtual wxArrayString GetAvailableVoiceVariants() const; 00098 00100 virtual bool HasCapability(wxTTSCapability capability) const; 00101 00102 virtual int GetMinSpeed() const { return -10; } 00103 virtual int GetMaxSpeed() const { return 10; } 00104 virtual int GetMinVolume() const { return 0; } 00105 virtual int GetMaxVolume() const { return 100; } 00106 00107 // Native pitch control is a multiplication factor, 00108 // but convert to percentage for wxTextToSpeech. 00109 // 50 would be the default. 00110 virtual int GetMinPitch() const { return 0; } 00111 virtual int GetMaxPitch() const { return 100; } 00112 00114 virtual wxString GetDefaultVoice() const; 00115 00117 virtual wxString GetDefaultVoiceVariant() const; 00118 00120 static wxArrayString GetAvailableVoicesForDir(const wxString& voicesDir); 00121 00123 virtual int CreateTransformerOptions(int mandatoryOptions = 0) const; 00124 00126 wxTTSSapiData* GetData() const { return m_data; } 00127 00129 void Callback(); 00130 void Yield(); 00131 00135 static void SetSimultaneousVoiceExclusions(const wxArrayString& exclusions) { sm_simultaneousVoiceExclusions = exclusions; } 00136 static const wxArrayString& GetSimultaneousVoiceExclusions() { return sm_simultaneousVoiceExclusions; } 00137 protected: 00138 00139 wxTTSSapiData* m_data; 00140 static wxArrayString sm_simultaneousVoiceExclusions; 00141 }; 00142 00143 #endif 00144 // _WX_TTS_SAPI_