print_rms.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 <cmath>
00028 
00029 #include "cogrob/cloud/speech/record_audio.h"
00030 #include "third_party/gflags.h"
00031 #include "third_party/glog.h"
00032 #include "util/simple_thread_safe_queue.h"
00033 
00034 namespace speech = ::cogrob::cloud::speech;
00035 using speech::AudioSample;
00036 
00037 int main(int argc, char *argv[]) {
00038   google::InitGoogleLogging(argv[0]);
00039   google::LogToStderr();
00040   gflags::SetUsageMessage("PrintRMS utility for testing microphone.");
00041   gflags::SetVersionString("1.0.0");
00042   gflags::ParseCommandLineFlags(&argc, &argv, true);
00043 
00044   util::SimpleThreadSafeQueue<std::unique_ptr<AudioSample>> audio_queue;
00045   speech::AudioRecorder recorder(&audio_queue);
00046   while (true) {
00047     std::unique_ptr<AudioSample> sample = std::move(audio_queue.blocking_pop());
00048     double square_sum = 0;
00049     for (size_t i = 0; i < sample->size(); i += 2) {
00050       int s = (static_cast<int8_t>((*sample)[i + 1])) << 8 | (*sample)[i];
00051       square_sum += s * s;
00052     }
00053     double rms = std::sqrt(square_sum / (sample->size() / 2));
00054     LOG(INFO) << "RMS: " << rms;
00055   }
00056 }


gcloud_speech_utils
Author(s):
autogenerated on Thu Jun 6 2019 17:58:05