google_speech.h
Go to the documentation of this file.
1 // Copyright (c) 2017, The Regents of the University of California
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above copyright
9 // notice, this list of conditions and the following disclaimer in the
10 // documentation and/or other materials provided with the distribution.
11 // * Neither the name of the University of California nor the
12 // names of its contributors may be used to endorse or promote products
13 // derived from this software without specific prior written permission.
14 //
15 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OF THE UNIVERSITY OF CALIFORNIA
19 // BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 // POSSIBILITY OF SUCH DAMAGE.
26 
27 #ifndef COGROB_CLOUD_SPEECH_GOOGLE_SPEECH_H_
28 #define COGROB_CLOUD_SPEECH_GOOGLE_SPEECH_H_
29 
30 #include <grpc++/grpc++.h>
31 #include <atomic>
32 #include <chrono>
33 #include <memory>
34 #include <thread>
35 #include <string>
36 #include <vector>
37 
39 #include "cogrob/cloud/speech/proto/recognition_result.pb.h"
41 
42 namespace cogrob {
43 namespace cloud {
44 namespace speech {
45 
47  public:
49  ~GoogleSpeechRecognizer() override;
50 
51  // Starts voice recognition, non blocking, audio_queue and result_queue must
52  // be valid until Stop() is called or IsRunning() returns false.
55  const std::vector<std::string>& hints, int max_audio_seconds,
56  int max_wait_seconds, int max_alternatives) override;
57 
58  // Tests whether the recognizer is still running.
59  bool IsRunning() override;
60 
61  // Returns the last result.
63 
64  // Waits until recognizer finishes.
65  util::Status Wait() override;
66 
67  // Stops recognition.
68  util::Status Stop() override;
69 
70  private:
71  // A private function runs in a seperate thread
72  void RecognitionThread(AudioQueue* audio_queue,
74  const std::vector<std::string>& hints, int max_audio_seconds,
75  int max_wait_seconds, int max_alternatives);
76 
77  std::mutex general_mutex_;
78  std::shared_ptr<grpc::ChannelInterface> channel_;
79  std::unique_ptr<::google::cloud::speech::v1::Speech::Stub> gspeech_stub_;
80  std::atomic_bool stop_flag_ {false};
81  std::atomic_bool done_flag_ {false};
82  std::unique_ptr<std::thread> thread_;
84 };
85 
86 } // namespace speech
87 } // namespace cloud
88 } // namespace cogrob
89 
90 #endif // COGROB_CLOUD_SPEECH_GOOGLE_SPEECH_H_
void RecognitionThread(AudioQueue *audio_queue, util::SimpleThreadSafeQueue< RecognitionResult > *result_queue, const std::vector< std::string > &hints, int max_audio_seconds, int max_wait_seconds, int max_alternatives)
std::unique_ptr< std::thread > thread_
Definition: google_speech.h:82
util::Status StartRecognize(AudioQueue *audio_queue, util::SimpleThreadSafeQueue< RecognitionResult > *result_queue, const std::vector< std::string > &hints, int max_audio_seconds, int max_wait_seconds, int max_alternatives) override
util::StatusOr< RecognitionResult > latest_result_
Definition: google_speech.h:83
std::unique_ptr<::google::cloud::speech::v1::Speech::Stub > gspeech_stub_
Definition: google_speech.h:79
util::StatusOr< RecognitionResult > GetLastResult() override
std::shared_ptr< grpc::ChannelInterface > channel_
Definition: google_speech.h:78


gcloud_speech
Author(s):
autogenerated on Mon Jun 10 2019 13:20:53