| Index: webrtc/modules/audio_processing/test/conversational_speech/timing.cc
|
| diff --git a/webrtc/modules/audio_processing/test/conversational_speech/timing.cc b/webrtc/modules/audio_processing/test/conversational_speech/timing.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dd2fdc4ca4035fe7e6a8d99edfe965f034ee9361
|
| --- /dev/null
|
| +++ b/webrtc/modules/audio_processing/test/conversational_speech/timing.cc
|
| @@ -0,0 +1,67 @@
|
| +/*
|
| + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license
|
| + * that can be found in the LICENSE file in the root of the source
|
| + * tree. An additional intellectual property rights grant can be found
|
| + * in the file PATENTS. All contributing project authors may
|
| + * be found in the AUTHORS file in the root of the source tree.
|
| + */
|
| +
|
| +#include "webrtc/modules/audio_processing/test/conversational_speech/timing.h"
|
| +
|
| +#include <fstream>
|
| +#include <iostream>
|
| +
|
| +#include "webrtc/base/array_view.h"
|
| +#include "webrtc/base/stringencode.h"
|
| +
|
| +namespace webrtc {
|
| +namespace test {
|
| +namespace conversational_speech {
|
| +
|
| +bool Turn::operator==(const Turn &b) const {
|
| + return b.speaker_name == speaker_name &&
|
| + b.audiotrack_file_name == audiotrack_file_name &&
|
| + b.offset == offset;
|
| +}
|
| +
|
| +std::vector<Turn> LoadTiming(const std::string& timing_filepath) {
|
| + // Line parser.
|
| + auto parse_line = [](const std::string& line) {
|
| + std::vector<std::string> fields;
|
| + rtc::split(line, ' ', &fields);
|
| + RTC_CHECK_EQ(fields.size(), 3);
|
| + return Turn(fields[0], fields[1], std::atol(fields[2].c_str()));
|
| + };
|
| +
|
| + // Init.
|
| + std::vector<Turn> timing;
|
| +
|
| + // Parse lines.
|
| + std::string line;
|
| + std::ifstream infile(timing_filepath);
|
| + while (std::getline(infile, line)) {
|
| + if (line.empty())
|
| + continue;
|
| + timing.push_back(parse_line(line));
|
| + }
|
| + infile.close();
|
| +
|
| + return timing;
|
| +}
|
| +
|
| +void SaveTiming(const std::string& timing_filepath,
|
| + rtc::ArrayView<const Turn> timing) {
|
| + std::ofstream outfile(timing_filepath);
|
| + // TODO(alessio): check if file open for writing.
|
| + for (const Turn& turn : timing) {
|
| + outfile << turn.speaker_name << " " << turn.audiotrack_file_name
|
| + << " " << turn.offset << std::endl;
|
| + }
|
| + outfile.close();
|
| +}
|
| +
|
| +} // namespace conversational_speech
|
| +} // namespace test
|
| +} // namespace webrtc
|
|
|