Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cac707dc authored by Niels Egberts's avatar Niels Egberts Committed by Android (Google) Code Review
Browse files

Merge "API to listen in on the synthesized audio."

parents fe434a15 c99ba1c3
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -34412,6 +34412,8 @@ package android.speech.tts {
  public abstract class UtteranceProgressListener {
    ctor public UtteranceProgressListener();
    method public void onAudioAvailable(java.lang.String, byte[]);
    method public void onBeginSynthesis(java.lang.String, int, int, int);
    method public abstract void onDone(java.lang.String);
    method public abstract deprecated void onError(java.lang.String);
    method public void onError(java.lang.String, int);
+2 −0
Original line number Diff line number Diff line
@@ -36662,6 +36662,8 @@ package android.speech.tts {
  public abstract class UtteranceProgressListener {
    ctor public UtteranceProgressListener();
    method public void onAudioAvailable(java.lang.String, byte[]);
    method public void onBeginSynthesis(java.lang.String, int, int, int);
    method public abstract void onDone(java.lang.String);
    method public abstract deprecated void onError(java.lang.String);
    method public void onError(java.lang.String, int);
+2 −0
Original line number Diff line number Diff line
@@ -34426,6 +34426,8 @@ package android.speech.tts {
  public abstract class UtteranceProgressListener {
    ctor public UtteranceProgressListener();
    method public void onAudioAvailable(java.lang.String, byte[]);
    method public void onBeginSynthesis(java.lang.String, int, int, int);
    method public abstract void onDone(java.lang.String);
    method public abstract deprecated void onError(java.lang.String);
    method public void onError(java.lang.String, int);
+5 −0
Original line number Diff line number Diff line
@@ -111,6 +111,7 @@ class FileSynthesisCallback extends AbstractSynthesisCallback {
                       "of AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT or " +
                       "AudioFormat.ENCODING_PCM_FLOAT");
        }
        mDispatcher.dispatchOnBeginSynthesis(sampleRateInHz, audioFormat, channelCount);

        FileChannel fileChannel = null;
        synchronized (mStateLock) {
@@ -176,6 +177,10 @@ class FileSynthesisCallback extends AbstractSynthesisCallback {
            fileChannel = mFileChannel;
        }

        final byte[] bufferCopy = new byte[length];
        System.arraycopy(buffer, offset, bufferCopy, 0, length);
        mDispatcher.dispatchOnAudioAvailable(bufferCopy);

        try {
            fileChannel.write(ByteBuffer.wrap(buffer,  offset,  length));
            return TextToSpeech.SUCCESS;
+38 −6
Original line number Diff line number Diff line
@@ -22,33 +22,65 @@ package android.speech.tts;
 */
oneway interface ITextToSpeechCallback {
    /**
     * Tells the client that the synthesis has started.
     * Tells the client that the synthesis has started playing.
     *
     * @param utteranceId Unique id identifying synthesis request.
     * @param utteranceId Unique id identifying the synthesis request.
     */
    void onStart(String utteranceId);

    /**
     * Tells the client that the synthesis has finished.
     * Tells the client that the synthesis has finished playing.
     *
     * @param utteranceId Unique id identifying synthesis request.
     * @param utteranceId Unique id identifying the synthesis request.
     */
    void onSuccess(String utteranceId);

    /**
     * Tells the client that the synthesis was stopped.
     *
     * @param utteranceId Unique id identifying synthesis request.
     * @param utteranceId Unique id identifying the synthesis request.
     */
    void onStop(String utteranceId, boolean isStarted);

    /**
     * Tells the client that the synthesis has failed.
     *
     * @param utteranceId Unique id identifying synthesis request.
     * @param utteranceId Unique id identifying the synthesis request.
     * @param errorCode One of the values from
     *        {@link android.speech.tts.v2.TextToSpeech}.
     */
    void onError(String utteranceId, int errorCode);

    /**
     * Tells the client that the TTS engine has started synthesizing the audio for a request.
     *
     * <p>
     * This doesn't mean the synthesis request has already started playing (for example when there
     * are synthesis requests ahead of it in the queue), but after receiving this callback you can
     * expect onAudioAvailable to be called.
     * </p>
     *
     * @param utteranceId Unique id identifying the synthesis request.
     * @param sampleRateInHz Sample rate in HZ of the generated audio.
     * @param audioFormat The audio format of the generated audio in the {@link #onAudioAvailable}
     *        call. Should be one of {@link android.media.AudioFormat.ENCODING_PCM_8BIT},
     *        {@link android.media.AudioFormat.ENCODING_PCM_16BIT} or
     *        {@link android.media.AudioFormat.ENCODING_PCM_FLOAT}.
     * @param channelCount The number of channels.
     */
    void onBeginSynthesis(String utteranceId, int sampleRateInHz, int audioFormat, int channelCount);

    /**
     * Tells the client about a chunk of the synthesized audio.
     *
     * <p>
     * Called when a chunk of the synthesized audio is ready. This may be called more than once for
     * every synthesis request, thereby streaming the audio to the client.
     * </p>
     *
     * @param utteranceId Unique id identifying the synthesis request.
     * @param audio The raw audio bytes. Its format is specified by the {@link #onStartAudio}
     * callback.
     */
    void onAudioAvailable(String utteranceId, in byte[] audio);
}
Loading