/**@class android.speech.tts.SynthesisCallback A callback to return speech data synthesized by a text to speech engine. The engine can provide streaming audio by calling {@link #start}, then {@link #audioAvailable} until all audio has been provided, then finally {@link #done}. {@link #error} can be called at any stage in the synthesis process to indicate that an error has occurred, but if the call is made after a call to {@link #done}, it might be discarded. {@link #done} must be called at the end of synthesis, regardless of errors. All methods can be only called on the synthesis thread. */ var SynthesisCallback = { /** @return {Number} the maximum number of bytes that the TTS engine can pass in a single call of {@link #audioAvailable}. Calls to {@link #audioAvailable} with data lengths larger than this value will not succeed. */ getMaxBufferSize : function( ) {}, /**The service should call this when it starts to synthesize audio for this request. <p>This method should only be called on the synthesis thread, while in {@link android.speech.tts.TextToSpeechService#onSynthesizeText}. @param {Number} sampleRateInHz Sample rate in HZ of the generated audio. @param {Number} audioFormat Audio format of the generated audio. Must be one of {@link AudioFormat#ENCODING_PCM_8BIT} or {@link AudioFormat#ENCODING_PCM_16BIT}. Can also be {@link AudioFormat#ENCODING_PCM_FLOAT} when targetting Android N and above. @param {Number} channelCount The number of channels. Must be {@code 1} or {@code 2}. @return {Number} {@link android.speech.tts.TextToSpeech#SUCCESS}, {@link android.speech.tts.TextToSpeech#ERROR} or {@link android.speech.tts.TextToSpeech#STOPPED}. */ start : function( ) {}, /**The service should call this method when synthesized audio is ready for consumption. <p>This method should only be called on the synthesis thread, while in {@link android.speech.tts.TextToSpeechService#onSynthesizeText}. @param {Object {byte[]}} buffer The generated audio data. This method will not hold on to {@code buffer}, so the caller is free to modify it after this method returns. @param {Number} offset The offset into {@code buffer} where the audio data starts. @param {Number} length The number of bytes of audio data in {@code buffer}. This must be less than or equal to the return value of {@link #getMaxBufferSize}. @return {Number} {@link android.speech.tts.TextToSpeech#SUCCESS}, {@link android.speech.tts.TextToSpeech#ERROR} or {@link android.speech.tts.TextToSpeech#STOPPED}. */ audioAvailable : function( ) {}, /**The service should call this method when all the synthesized audio for a request has been passed to {@link #audioAvailable}. <p>This method should only be called on the synthesis thread, while in {@link android.speech.tts.TextToSpeechService#onSynthesizeText}. <p>This method has to be called if {@link #start} and/or {@link #error} was called. @return {Number} {@link android.speech.tts.TextToSpeech#SUCCESS}, {@link android.speech.tts.TextToSpeech#ERROR} or {@link android.speech.tts.TextToSpeech#STOPPED}. */ done : function( ) {}, /**The service should call this method if the speech synthesis fails. <p>This method should only be called on the synthesis thread, while in {@link android.speech.tts.TextToSpeechService#onSynthesizeText}. */ error : function( ) {}, /**The service should call this method if the speech synthesis fails. <p>This method should only be called on the synthesis thread, while in {@link android.speech.tts.TextToSpeechService#onSynthesizeText}. @param {Number} errorCode Error code to pass to the client. One of the ERROR_ values from {@link android.speech.tts.TextToSpeech} */ error : function( ) {}, /**Check if {@link #start} was called or not. <p>This method should only be called on the synthesis thread, while in {@link android.speech.tts.TextToSpeechService#onSynthesizeText}. <p>Useful for checking if a fallback from network request is possible. */ hasStarted : function( ) {}, /**Check if {@link #done} was called or not. <p>This method should only be called on the synthesis thread, while in {@link android.speech.tts.TextToSpeechService#onSynthesizeText}. <p>Useful for checking if a fallback from network request is possible. */ hasFinished : function( ) {}, /**The service may call this method to provide timing information about the spoken text. <p>Calling this method means that at the given audio frame, the given range of the input is about to be spoken. If this method is called the client will receive a callback on the listener ({@link android.speech.tts.UtteranceProgressListener#onRangeStart}) at the moment that frame has been reached by the playback head. <p>This information can be used by the client, for example, to highlight ranges of the text while it is spoken. <p>The markerInFrames is a frame index into the audio for this synthesis request, i.e. into the concatenation of the audio bytes sent to audioAvailable for this synthesis request. The definition of a frame depends on the format given by {@link #start}. See {@link AudioFormat} for more information. <p>This method should only be called on the synthesis thread, while in {@link android.speech.tts.TextToSpeechService#onSynthesizeText}. @param {Number} markerInFrames The position in frames in the audio where this range is spoken. @param {Number} start The start index of the range in the input text. @param {Number} end The end index (exclusive) of the range in the input text. */ rangeStart : function( ) {}, };