speakable.completed();
    private boolean outputUtterance(Utterance utterance, BulkTimer timer) {	boolean ok = true;	FreeTTSSpeakable speakable = utterance.getSpeakable();	if (!speakable.isCompleted())  {	    if (utterance.isFirst()) {		audioPlayer.reset();		speakable.started();		log(" --- started ---");	    }	    // log("   utt: " + utterance.getString("input_text"));	    try {		runProcessor(audioOutput, utterance, timer);	    }  catch (ProcessException pe) {		ok = false;                pe.printStackTrace();	    }	    if (ok && utterance.isLast()) {		audioPlayer.drain();		speakable.completed();                log(" --- completed ---");	    } else if (!ok) {		audioPlayer.drain();		speakable.cancelled();		log(" --- cancelled ---");	    }	} else {	    ok = false;	}	return ok;    }