1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_SPEECH_TTS_PLATFORM_H_ 6 #define CHROME_BROWSER_SPEECH_TTS_PLATFORM_H_ 7 8 #include <string> 9 10 #include "chrome/browser/speech/tts_controller.h" 11 12 // Abstract class that defines the native platform TTS interface, 13 // subclassed by specific implementations on Win, Mac, etc. 14 class TtsPlatformImpl { 15 public: 16 static TtsPlatformImpl* GetInstance(); 17 18 // Returns true if this platform implementation is supported and available. 19 virtual bool PlatformImplAvailable() = 0; 20 21 // Some platforms may provide a built-in TTS extension. Returns true 22 // if the extension was not previously loaded and is now loading, and 23 // false if it's already loaded or if there's no extension to load. 24 // Will call TtsController::RetrySpeakingQueuedUtterances when 25 // the extension finishes loading. 26 virtual bool LoadBuiltInTtsExtension(Profile* profile); 27 28 // Speak the given utterance with the given parameters if possible, 29 // and return true on success. Utterance will always be nonempty. 30 // If rate, pitch, or volume are -1.0, they will be ignored. 31 // 32 // The TtsController will only try to speak one utterance at 33 // a time. If it wants to interrupt speech, it will always call Stop 34 // before speaking again. 35 virtual bool Speak( 36 int utterance_id, 37 const std::string& utterance, 38 const std::string& lang, 39 const VoiceData& voice, 40 const UtteranceContinuousParameters& params) = 0; 41 42 // Stop speaking immediately and return true on success. 43 virtual bool StopSpeaking() = 0; 44 45 // Returns whether any speech is on going. 46 virtual bool IsSpeaking() = 0; 47 48 // Append information about voices provided by this platform implementation 49 // to |out_voices|. 50 virtual void GetVoices(std::vector<VoiceData>* out_voices) = 0; 51 52 // Pause the current utterance, if any, until a call to Resume, 53 // Speak, or StopSpeaking. 54 virtual void Pause() = 0; 55 56 // Resume speaking the current utterance, if it was paused. 57 virtual void Resume() = 0; 58 59 virtual std::string error(); 60 virtual void clear_error(); 61 virtual void set_error(const std::string& error); 62 63 protected: TtsPlatformImpl()64 TtsPlatformImpl() {} 65 66 // On some platforms this may be a leaky singleton - do not rely on the 67 // destructor being called! http://crbug.com/122026 ~TtsPlatformImpl()68 virtual ~TtsPlatformImpl() {} 69 70 std::string error_; 71 72 DISALLOW_COPY_AND_ASSIGN(TtsPlatformImpl); 73 }; 74 75 #endif // CHROME_BROWSER_SPEECH_TTS_PLATFORM_H_ 76