Home | History | Annotate | Download | only in speech
      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:
     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
     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