Main Page
Namespaces
Classes
Files
File List
File Members
src
workspace
cogrob
cloud
speech
speech_local_main.cc
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
#include <grpc++/grpc++.h>
28
29
#include <chrono>
30
#include <iostream>
31
#include <memory>
32
#include <thread>
33
#include <string>
34
35
#include "
cogrob/cloud/basic/defaults.h
"
36
#include "
third_party/gflags.h
"
37
#include "
third_party/glog.h
"
38
#include "
util/simple_thread_safe_queue.h
"
39
40
#include "
cogrob/cloud/speech/audio_sample.h
"
41
#include "
cogrob/cloud/speech/record_audio.h
"
42
#include "
cogrob/cloud/speech/google_speech.h
"
43
#include "
cogrob/cloud/speech/google_speech_interface.h
"
44
45
DEFINE_bool
(early_interrupt,
false
,
"Whether to early interrupt the request"
);
46
47
namespace
speech
= ::cogrob::cloud::speech;
48
49
int
main
(
int
argc,
char
* argv[]) {
50
google::InitGoogleLogging(argv[0]);
51
gflags::ParseCommandLineFlags(&argc, &argv,
true
);
52
cogrob::cloud::PrepareGoogleCloudCredentials
();
53
grpc_init();
54
55
util::SimpleThreadSafeQueue<speech::RecognitionResult>
result_queue;
56
speech::AudioQueue
audio_queue;
57
speech::AudioRecorder
recorder(&audio_queue);
58
std::unique_ptr<speech::GoogleSpeechRecognizerInterface> recognizer(
59
new
speech::GoogleSpeechRecognizer
());
60
61
while
(
true
) {
62
LOG(INFO) <<
"Main thread Running"
;
63
audio_queue.
clear
();
64
result_queue.
clear
();
65
std::cerr <<
"Start recognize."
<< std::endl;
66
recognizer->StartRecognize(&audio_queue, &result_queue, {
"CogRob"
}, 15, 18);
67
std::chrono::system_clock::time_point early_interrupt_deadline =
68
std::chrono::system_clock::now() + std::chrono::seconds(5);
69
while
(recognizer->IsRunning()) {
70
if
(FLAGS_early_interrupt &&
71
std::chrono::system_clock::now() > early_interrupt_deadline) {
72
recognizer->Stop();
73
}
74
util::StatusOr<speech::RecognitionResult>
result
75
= result_queue.
blocking_pop
(100);
76
if
(result.
ok
()) {
77
std::cerr <<
"----------------------------------------"
<< std::endl;
78
std::cerr << result.
ConsumeValueOrDie
().DebugString() << std::endl;
79
}
80
}
81
}
82
83
LOG(ERROR) <<
"Main thread about to finish."
;
84
}
util::SimpleThreadSafeQueue::clear
void clear()
Definition:
simple_thread_safe_queue.h:90
glog.h
util::StatusOr::ConsumeValueOrDie
T ConsumeValueOrDie()
Definition:
statusor.h:299
main
int main(int argc, char *argv[])
Definition:
speech_local_main.cc:49
cogrob::cloud::speech::AudioRecorder
Definition:
record_audio.h:43
audio_sample.h
util::StatusOr
Definition:
statusor.h:93
util::StatusOr::ok
bool ok() const
Definition:
statusor.h:277
util::SimpleThreadSafeQueue::blocking_pop
T blocking_pop()
Definition:
simple_thread_safe_queue.h:60
google_speech.h
cogrob::cloud::speech
Definition:
audio_sample.h:37
cogrob::cloud::speech::GoogleSpeechRecognizer
Definition:
google_speech.h:46
simple_thread_safe_queue.h
util::SimpleThreadSafeQueue
Definition:
simple_thread_safe_queue.h:40
DEFINE_bool
DEFINE_bool(early_interrupt, false,"Whether to early interrupt the request")
google_speech_interface.h
gflags.h
cogrob::cloud::PrepareGoogleCloudCredentials
void PrepareGoogleCloudCredentials()
Definition:
defaults.cc:51
record_audio.h
defaults.h
gcloud_speech
Author(s):
autogenerated on Mon Jun 10 2019 13:20:53