// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_SPEECH_TTS_PLATFORM_H_ #define CHROME_BROWSER_SPEECH_TTS_PLATFORM_H_ #include <string> #include "chrome/browser/speech/tts_controller.h" // Abstract class that defines the native platform TTS interface, // subclassed by specific implementations on Win, Mac, etc. class TtsPlatformImpl { public: static TtsPlatformImpl* GetInstance(); // Returns true if this platform implementation is supported and available. virtual bool PlatformImplAvailable() = 0; // Some platforms may provide a built-in TTS extension. Returns true // if the extension was not previously loaded and is now loading, and // false if it's already loaded or if there's no extension to load. // Will call TtsController::RetrySpeakingQueuedUtterances when // the extension finishes loading. virtual bool LoadBuiltInTtsExtension(Profile* profile); // Speak the given utterance with the given parameters if possible, // and return true on success. Utterance will always be nonempty. // If rate, pitch, or volume are -1.0, they will be ignored. // // The TtsController will only try to speak one utterance at // a time. If it wants to interrupt speech, it will always call Stop // before speaking again. virtual bool Speak( int utterance_id, const std::string& utterance, const std::string& lang, const VoiceData& voice, const UtteranceContinuousParameters& params) = 0; // Stop speaking immediately and return true on success. virtual bool StopSpeaking() = 0; // Returns whether any speech is on going. virtual bool IsSpeaking() = 0; // Append information about voices provided by this platform implementation // to |out_voices|. virtual void GetVoices(std::vector<VoiceData>* out_voices) = 0; // Pause the current utterance, if any, until a call to Resume, // Speak, or StopSpeaking. virtual void Pause() = 0; // Resume speaking the current utterance, if it was paused. virtual void Resume() = 0; virtual std::string error(); virtual void clear_error(); virtual void set_error(const std::string& error); protected: TtsPlatformImpl() {} // On some platforms this may be a leaky singleton - do not rely on the // destructor being called! http://crbug.com/122026 virtual ~TtsPlatformImpl() {} std::string error_; DISALLOW_COPY_AND_ASSIGN(TtsPlatformImpl); }; #endif // CHROME_BROWSER_SPEECH_TTS_PLATFORM_H_