1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_CROS_SPEECH_SYNTHESIS_LIBRARY_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_CHROMEOS_CROS_SPEECH_SYNTHESIS_LIBRARY_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/singleton.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos { 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This interface defines the interaction with the ChromeOS login library APIs. 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SpeechSynthesisLibrary { 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef void(*InitStatusCallback)(bool success); 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~SpeechSynthesisLibrary() {} 1921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Speaks the specified text. 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool Speak(const char* text) = 0; 2221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets options for the subsequent speech synthesis requests. 2421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Use the constants below. 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool SetSpeakProperties(const char* props) = 0; 2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Stops speaking the current utterance. 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool StopSpeaking() = 0; 2921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Checks if the engine is currently speaking. 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool IsSpeaking() = 0; 3221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Starts the speech synthesis service and indicates through a callback if 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // it started successfully. 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void InitTts(InitStatusCallback) = 0; 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Factory function, creates a new instance and returns ownership. 383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // For normal usage, access the singleton via CrosLibrary::Get(). 393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick static SpeechSynthesisLibrary* GetImpl(bool stub); 4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 4121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Constants to be used with SetSpeakProperties. 4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen static const char kSpeechPropertyLocale[]; 4321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen static const char kSpeechPropertyGender[]; 4421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen static const char kSpeechPropertyRate[]; 4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen static const char kSpeechPropertyPitch[]; 4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen static const char kSpeechPropertyVolume[]; 4721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen static const char kSpeechPropertyEquals[]; 4821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen static const char kSpeechPropertyDelimiter[]; 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace chromeos 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_CHROMEOS_CROS_SPEECH_SYNTHESIS_LIBRARY_H_ 54