// Copyright (c) 2011 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_CHROMEOS_CROS_SPEECH_SYNTHESIS_LIBRARY_H_ #define CHROME_BROWSER_CHROMEOS_CROS_SPEECH_SYNTHESIS_LIBRARY_H_ #pragma once #include "base/memory/singleton.h" namespace chromeos { // This interface defines the interaction with the ChromeOS login library APIs. class SpeechSynthesisLibrary { public: typedef void(*InitStatusCallback)(bool success); virtual ~SpeechSynthesisLibrary() {} // Speaks the specified text. virtual bool Speak(const char* text) = 0; // Sets options for the subsequent speech synthesis requests. // Use the constants below. virtual bool SetSpeakProperties(const char* props) = 0; // Stops speaking the current utterance. virtual bool StopSpeaking() = 0; // Checks if the engine is currently speaking. virtual bool IsSpeaking() = 0; // Starts the speech synthesis service and indicates through a callback if // it started successfully. virtual void InitTts(InitStatusCallback) = 0; // Factory function, creates a new instance and returns ownership. // For normal usage, access the singleton via CrosLibrary::Get(). static SpeechSynthesisLibrary* GetImpl(bool stub); // Constants to be used with SetSpeakProperties. static const char kSpeechPropertyLocale[]; static const char kSpeechPropertyGender[]; static const char kSpeechPropertyRate[]; static const char kSpeechPropertyPitch[]; static const char kSpeechPropertyVolume[]; static const char kSpeechPropertyEquals[]; static const char kSpeechPropertyDelimiter[]; }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_CROS_SPEECH_SYNTHESIS_LIBRARY_H_