public double[] utteranceWordsScores(String[] units, Boolean[] stresses, Boolean[] boundaries,
			SubSeqCounter counter) {
		// Get slices of the stresses and units in this utterance
		Object[][] wordsUnits =
			SegUtil.slicesFromAllBoundaries(units, boundaries);
		Object[][] wordsStresses =
			SegUtil.slicesFromAllBoundaries(stresses, boundaries);

		// Each element of the outer array represents units/stresses for a single word
		double[] wordsScores = new double[wordsUnits.length];
		for (int i = 0; i < wordsUnits.length; i++) {
			Word w = getWord((String[]) wordsUnits[i], ((Boolean[]) wordsStresses[i]));
			// If the word is missing, give the initial score
			if (w == null) {
				wordsScores[i] = getNewWordScore();
			}
			else {
				// If it's there, smooth up to the minimum if needed
				wordsScores[i] = getScore(w, counter);
			}
		}
		return wordsScores;
	}