speech_local_main.cc
Go to the documentation of this file.
00001 // Copyright (c) 2017, The Regents of the University of California
00002 // All rights reserved.
00003 //
00004 // Redistribution and use in source and binary forms, with or without
00005 // modification, are permitted provided that the following conditions are met:
00006 // * Redistributions of source code must retain the above copyright
00007 //   notice, this list of conditions and the following disclaimer.
00008 // * Redistributions in binary form must reproduce the above copyright
00009 //   notice, this list of conditions and the following disclaimer in the
00010 //   documentation and/or other materials provided with the distribution.
00011 // * Neither the name of the University of California nor the
00012 //   names of its contributors may be used to endorse or promote products
00013 //   derived from this software without specific prior written permission.
00014 //
00015 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00016 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00017 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00018 // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OF THE UNIVERSITY OF CALIFORNIA
00019 // BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00020 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00021 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00022 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00023 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00024 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00025 // POSSIBILITY OF SUCH DAMAGE.
00026 
00027 #include <grpc++/grpc++.h>
00028 
00029 #include <chrono>
00030 #include <iostream>
00031 #include <memory>
00032 #include <thread>
00033 #include <string>
00034 
00035 #include "cogrob/cloud/basic/defaults.h"
00036 #include "third_party/gflags.h"
00037 #include "third_party/glog.h"
00038 #include "util/simple_thread_safe_queue.h"
00039 
00040 #include "cogrob/cloud/speech/audio_sample.h"
00041 #include "cogrob/cloud/speech/record_audio.h"
00042 #include "cogrob/cloud/speech/google_speech.h"
00043 #include "cogrob/cloud/speech/google_speech_interface.h"
00044 
00045 DEFINE_bool(early_interrupt, false, "Whether to early interrupt the request");
00046 
00047 namespace speech = ::cogrob::cloud::speech;
00048 
00049 int main(int argc, char* argv[]) {
00050   google::InitGoogleLogging(argv[0]);
00051   gflags::ParseCommandLineFlags(&argc, &argv, true);
00052   cogrob::cloud::PrepareGoogleCloudCredentials();
00053   grpc_init();
00054 
00055   util::SimpleThreadSafeQueue<speech::RecognitionResult> result_queue;
00056   speech::AudioQueue audio_queue;
00057   speech::AudioRecorder recorder(&audio_queue);
00058   std::unique_ptr<speech::GoogleSpeechRecognizerInterface> recognizer(
00059       new speech::GoogleSpeechRecognizer());
00060 
00061   while (true) {
00062     LOG(INFO) << "Main thread Running";
00063     audio_queue.clear();
00064     result_queue.clear();
00065     std::cerr << "Start recognize." << std::endl;
00066     recognizer->StartRecognize(&audio_queue, &result_queue, {"CogRob"}, 15, 18);
00067     std::chrono::system_clock::time_point early_interrupt_deadline =
00068         std::chrono::system_clock::now() + std::chrono::seconds(5);
00069     while (recognizer->IsRunning()) {
00070       if (FLAGS_early_interrupt &&
00071           std::chrono::system_clock::now() > early_interrupt_deadline) {
00072         recognizer->Stop();
00073       }
00074       util::StatusOr<speech::RecognitionResult> result
00075           = result_queue.blocking_pop(100);
00076       if (result.ok()) {
00077         std::cerr << "----------------------------------------" << std::endl;
00078         std::cerr << result.ConsumeValueOrDie().DebugString() << std::endl;
00079       }
00080     }
00081   }
00082 
00083   LOG(ERROR) << "Main thread about to finish.";
00084 }


gcloud_speech
Author(s):
autogenerated on Thu Jun 6 2019 17:58:03