@Override
	public Boolean[] segment(Utterance utterance, boolean training, boolean trace) {
		// Return all segmentation points as true
		Boolean[] boundaries = utterance.getBoundariesCopy();

		// Randomly insert boundaries
		for (int i=0; i<boundaries.length; i++) {
			if (Math.random() < threshold) {
				boundaries[i] = true;
				segs++;
			}
			else {
				boundaries[i] = false;
			}
		}

		// Increment the words used in the utterance.
		if (training) {
			lexicon.incUtteranceWords(utterance.getUnits(), utterance.getStresses(),
					boundaries, null);
		}

		return boundaries;
	}