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 CONTENT_BROWSER_SPEECH_GOOGLE_ONE_SHOT_REMOTE_ENGINE_H_
      6 #define CONTENT_BROWSER_SPEECH_GOOGLE_ONE_SHOT_REMOTE_ENGINE_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/memory/ref_counted.h"
     12 #include "base/memory/scoped_ptr.h"
     13 #include "content/browser/speech/audio_encoder.h"
     14 #include "content/browser/speech/speech_recognition_engine.h"
     15 #include "content/common/content_export.h"
     16 #include "net/url_request/url_fetcher_delegate.h"
     17 
     18 namespace net {
     19 class URLRequestContextGetter;
     20 }
     21 
     22 namespace content {
     23 
     24 // Implements a SpeechRecognitionEngine by means of remote interaction with
     25 // Google speech recognition webservice.
     26 class CONTENT_EXPORT GoogleOneShotRemoteEngine
     27     : public NON_EXPORTED_BASE(SpeechRecognitionEngine),
     28       public net::URLFetcherDelegate {
     29  public:
     30   // Duration of each audio packet.
     31   static const int kAudioPacketIntervalMs;
     32   // ID passed to URLFetcher::Create(). Used for testing.
     33   static int url_fetcher_id_for_tests;
     34 
     35   explicit GoogleOneShotRemoteEngine(net::URLRequestContextGetter* context);
     36   virtual ~GoogleOneShotRemoteEngine();
     37 
     38   // SpeechRecognitionEngine methods.
     39   virtual void SetConfig(const SpeechRecognitionEngineConfig& config) OVERRIDE;
     40   virtual void StartRecognition() OVERRIDE;
     41   virtual void EndRecognition() OVERRIDE;
     42   virtual void TakeAudioChunk(const AudioChunk& data) OVERRIDE;
     43   virtual void AudioChunksEnded() OVERRIDE;
     44   virtual bool IsRecognitionPending() const OVERRIDE;
     45   virtual int GetDesiredAudioChunkDurationMs() const OVERRIDE;
     46 
     47   // net::URLFetcherDelegate methods.
     48   virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
     49 
     50  private:
     51   SpeechRecognitionEngineConfig config_;
     52   scoped_ptr<net::URLFetcher> url_fetcher_;
     53   scoped_refptr<net::URLRequestContextGetter> url_context_;
     54   scoped_ptr<AudioEncoder> encoder_;
     55 
     56   DISALLOW_COPY_AND_ASSIGN(GoogleOneShotRemoteEngine);
     57 };
     58 
     59 }  // namespace content
     60 
     61 #endif  // CONTENT_BROWSER_SPEECH_GOOGLE_ONE_SHOT_REMOTE_ENGINE_H_
     62