diff options
Diffstat (limited to 'tensorflow/examples/wav_to_spectrogram/main.cc')
-rw-r--r-- | tensorflow/examples/wav_to_spectrogram/main.cc | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tensorflow/examples/wav_to_spectrogram/main.cc b/tensorflow/examples/wav_to_spectrogram/main.cc new file mode 100644 index 0000000000..539e6c4fe4 --- /dev/null +++ b/tensorflow/examples/wav_to_spectrogram/main.cc @@ -0,0 +1,66 @@ +/* Copyright 2017 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include "tensorflow/examples/wav_to_spectrogram/wav_to_spectrogram.h" + +#include "tensorflow/core/lib/core/errors.h" +#include "tensorflow/core/platform/init_main.h" +#include "tensorflow/core/util/command_line_flags.h" + +int main(int argc, char* argv[]) { + // These are the command-line flags the program can understand. + // They define where the graph and input data is located, and what kind of + // input the model expects. If you train your own model, or use something + // other than inception_v3, then you'll need to update these. + tensorflow::string input_wav = + "tensorflow/core/kernels/spectrogram_test_data/short_test_segment.wav"; + tensorflow::int32 window_size = 256; + tensorflow::int32 stride = 128; + float brightness = 64.0f; + tensorflow::string output_image = "spectrogram.png"; + std::vector<tensorflow::Flag> flag_list = { + tensorflow::Flag("input_wav", &input_wav, "audio file to load"), + tensorflow::Flag("window_size", &window_size, + "frequency sample window width"), + tensorflow::Flag("stride", &stride, + "how far apart to place frequency windows"), + tensorflow::Flag("brightness", &brightness, + "controls how bright the output image is"), + tensorflow::Flag("output_image", &output_image, + "where to save the spectrogram image to"), + }; + tensorflow::string usage = tensorflow::Flags::Usage(argv[0], flag_list); + const bool parse_result = tensorflow::Flags::Parse(&argc, argv, flag_list); + if (!parse_result) { + LOG(ERROR) << usage; + return -1; + } + + // We need to call this to set up global state for TensorFlow. + tensorflow::port::InitMain(argv[0], &argc, &argv); + if (argc > 1) { + LOG(ERROR) << "Unknown argument " << argv[1] << "\n" << usage; + return -1; + } + + tensorflow::Status wav_status = WavToSpectrogram( + input_wav, window_size, stride, brightness, output_image); + if (!wav_status.ok()) { + LOG(ERROR) << "WavToSpectrogram failed with " << wav_status; + return -1; + } + + return 0; +} |