!7 p-experiment { L voiceLog = scanLog(cereprocLog()); L earLog = scanLog(speechRecognitionLog()); for (S s : earLog) { S timestamp = beforeSpace(s); if (!isInteger(timestamp)) continue; if (!cic(s, "[Chrome Speech]")) continue; int i = -Collections.binarySearch(voiceLog, timestamp)-2; while (i > 0 && !eq(safeUnstructMap(dropUntilSpace(get(voiceLog, i))).get("action"), "End talking")) --i; S said = get(voiceLog, i); S timestamp2 = beforeSpace(said); if (!isInteger(timestamp2)) continue; // huh? long diff = parseLong(timestamp)-parseLong(timestamp2); if (diff >= 10000) continue; //print(s + " => " + i + ", " + diff + " ms " + dropUntilSpace(said)); S heard = afterSquareBracketStuff(s); Map map = safeUnstructMap(dropUntilSpace(said)); print(pad(diff, 5) + " ms: " + heard + " => " + map.get("text")); } }