Added more logging

This commit is contained in:
Daniel Wolf 2016-06-14 17:38:11 +02:00
parent 542a5ee3d8
commit d1bbe8538e
5 changed files with 29 additions and 2 deletions

View File

@ -217,6 +217,8 @@ set(TEST_FILES
src/Phone.cpp src/Phone.h src/Phone.cpp src/Phone.h
src/tokenization.cpp src/tokenization.h src/tokenization.cpp src/tokenization.h
src/g2p.cpp src/g2p.h src/g2p.cpp src/g2p.h
src/logging.cpp src/logging.h
src/tools.cpp src/tools.h
) )
add_executable(runTests ${TEST_FILES}) add_executable(runTests ${TEST_FILES})
target_link_libraries(runTests gtest gmock gmock_main flite cppFormat) target_link_libraries(runTests gtest gmock gmock_main flite cppFormat)

View File

@ -4,10 +4,13 @@
#include <boost/optional/optional.hpp> #include <boost/optional/optional.hpp>
#include <logging.h> #include <logging.h>
#include <pairs.h> #include <pairs.h>
#include <boost/range/adaptor/transformed.hpp>
using std::numeric_limits; using std::numeric_limits;
using std::vector; using std::vector;
using boost::optional; using boost::optional;
using boost::adaptors::transformed;
using fmt::format;
float getRMS(AudioStream& audioStream, int maxSampleCount = numeric_limits<int>::max()) { float getRMS(AudioStream& audioStream, int maxSampleCount = numeric_limits<int>::max()) {
double sum = 0; double sum = 0;
@ -53,5 +56,8 @@ BoundedTimeline<void> detectVoiceActivity(std::unique_ptr<AudioStream> audioStre
} }
} }
logging::debugFormat("Found {} sections of voice activity: {}", activity.size(),
join(activity | transformed([](const Timed<void>& t) { return format("{0}-{1}", t.getStart(), t.getEnd()); }), ", "));
return activity; return activity;
} }

View File

@ -1,6 +1,7 @@
#include <g2p.h> #include <g2p.h>
#include <regex> #include <regex>
#include "stringTools.h" #include "stringTools.h"
#include "logging.h"
using std::vector; using std::vector;
using std::wstring; using std::wstring;
@ -89,7 +90,13 @@ vector<Phone> wordToPhones(const std::string& word) {
vector<Phone> result; vector<Phone> result;
for (wchar_t c : wideWord) { for (wchar_t c : wideWord) {
result.push_back(charToPhone(c)); Phone phone = charToPhone(c);
if (phone == Phone::Unknown) {
logging::errorFormat("G2P error determining pronunciation for '{}': Character '{}' is not a recognized phone shorthand.",
word, static_cast<char>(c));
} else {
result.push_back(phone);
}
} }
return result; return result;
} }

View File

@ -14,6 +14,7 @@
#include "ContinuousTimeline.h" #include "ContinuousTimeline.h"
#include <boost/filesystem/operations.hpp> #include <boost/filesystem/operations.hpp>
#include "stringTools.h" #include "stringTools.h"
#include <boost/range/adaptor/transformed.hpp>
using std::exception; using std::exception;
using std::string; using std::string;
@ -27,6 +28,7 @@ using std::map;
using std::chrono::duration; using std::chrono::duration;
using std::chrono::duration_cast; using std::chrono::duration_cast;
using boost::filesystem::path; using boost::filesystem::path;
using boost::adaptors::transformed;
namespace tclap = TCLAP; namespace tclap = TCLAP;
@ -131,6 +133,9 @@ int main(int argc, char *argv[]) {
addFileSink(path(logFileName.getValue()), logLevel.getValue()); addFileSink(path(logFileName.getValue()), logLevel.getValue());
} }
logging::infoFormat("Application startup. Command line: {}", join(
vector<char*>(argv, argv + argc) | transformed([](char* arg) { return fmt::format("\"{}\"", arg); }), " "));
// Detect phones // Detect phones
const int columnWidth = 30; const int columnWidth = 30;
std::cerr << std::left; std::cerr << std::left;
@ -168,20 +173,25 @@ int main(int argc, char *argv[]) {
throw std::runtime_error("Unknown export format."); throw std::runtime_error("Unknown export format.");
} }
exporter->exportShapes(path(inputFileName.getValue()), shapes, std::cout); exporter->exportShapes(path(inputFileName.getValue()), shapes, std::cout);
logging::info("Exiting application normally.");
return 0; return 0;
} catch (tclap::ArgException& e) { } catch (tclap::ArgException& e) {
// Error parsing command-line args. // Error parsing command-line args.
cmd.getOutput()->failure(cmd, e); cmd.getOutput()->failure(cmd, e);
std::cerr << std::endl; std::cerr << std::endl;
logging::error("Invalid command line. Exiting application with error code.");
return 1; return 1;
} catch (tclap::ExitException&) { } catch (tclap::ExitException&) {
// A built-in TCLAP command (like --help) has finished. Exit application. // A built-in TCLAP command (like --help) has finished. Exit application.
std::cerr << std::endl; std::cerr << std::endl;
logging::info("Exiting application after help-like command.");
return 0; return 0;
} catch (const exception& e) { } catch (const exception& e) {
// Generic error // Generic error
std::cerr << "An error occurred.\n" << getMessage(e) << std::endl; string message = getMessage(e);
std::cerr << "An error occurred.\n" << message << std::endl;
logging::errorFormat("Exiting application with error: {}", message);
return 1; return 1;
} }
} }

View File

@ -334,6 +334,7 @@ BoundedTimeline<Phone> detectPhones(
ps_set_search(decoder.get(), "lm"); ps_set_search(decoder.get(), "lm");
BoundedTimeline<Phone> result(audioStream->getTruncatedRange()); BoundedTimeline<Phone> result(audioStream->getTruncatedRange());
logging::debug("Speech recognition -- start");
for (const auto& timedUtterance : utterances) { for (const auto& timedUtterance : utterances) {
ProgressMerger utteranceProgressMerger(**utteranceProgressSinkIt++); ProgressMerger utteranceProgressMerger(**utteranceProgressSinkIt++);
ProgressSink& wordRecognitionProgressSink = utteranceProgressMerger.addSink(1.0); ProgressSink& wordRecognitionProgressSink = utteranceProgressMerger.addSink(1.0);
@ -370,6 +371,7 @@ BoundedTimeline<Phone> detectPhones(
result.set(timedPhone); result.set(timedPhone);
} }
} }
logging::debug("Speech recognition -- end");
return result; return result;
} }