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

Commit 6276814a authored by Narayan Kamath's avatar Narayan Kamath Committed by Android (Google) Code Review
Browse files

Merge "Make changes to the TTS api suggested by the API review."

parents 21ac7a84 e22b69a7
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -17455,21 +17455,23 @@ package android.speech {
package android.speech.tts {
  public abstract class SynthesisRequest {
    ctor public SynthesisRequest(java.lang.String, android.os.Bundle);
  public abstract interface SynthesisCallback {
    method public abstract int audioAvailable(byte[], int, int);
    method public abstract int completeAudioAvailable(int, int, int, byte[], int, int);
    method public abstract int done();
    method public abstract void error();
    method public abstract int getMaxBufferSize();
    method public abstract int start(int, int, int);
  }
  public final class SynthesisRequest {
    method public java.lang.String getCountry();
    method public java.lang.String getLanguage();
    method public abstract int getMaxBufferSize();
    method public android.os.Bundle getParams();
    method public int getPitch();
    method public int getSpeechRate();
    method public java.lang.String getText();
    method public java.lang.String getVariant();
    method public abstract int start(int, int, int);
  }
  public class TextToSpeech {
@@ -17555,7 +17557,7 @@ package android.speech.tts {
    method protected abstract int onIsLanguageAvailable(java.lang.String, java.lang.String, java.lang.String);
    method protected abstract int onLoadLanguage(java.lang.String, java.lang.String, java.lang.String);
    method protected abstract void onStop();
    method protected abstract void onSynthesizeText(android.speech.tts.SynthesisRequest);
    method protected abstract void onSynthesizeText(android.speech.tts.SynthesisRequest, android.speech.tts.SynthesisCallback);
  }
}
+34 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package android.speech.tts;

/**
 * Defines additional methods the synthesis callback must implement that
 * are private to the TTS service implementation.
 */
abstract class AbstractSynthesisCallback implements SynthesisCallback {
    /**
     * Checks whether the synthesis request completed successfully.
     */
    abstract boolean isDone();

    /**
     * Aborts the speech request.
     *
     * Can be called from multiple threads.
     */
    abstract void stop();
}
+2 −4
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@
package android.speech.tts;

import android.media.AudioFormat;
import android.os.Bundle;
import android.util.Log;

import java.io.File;
@@ -29,7 +28,7 @@ import java.nio.ByteOrder;
/**
 * Speech synthesis request that writes the audio to a WAV file.
 */
class FileSynthesisRequest extends SynthesisRequest {
class FileSynthesisCallback extends AbstractSynthesisCallback {

    private static final String TAG = "FileSynthesisRequest";
    private static final boolean DBG = false;
@@ -48,8 +47,7 @@ class FileSynthesisRequest extends SynthesisRequest {
    private boolean mStopped = false;
    private boolean mDone = false;

    FileSynthesisRequest(String text, Bundle params, File fileName) {
        super(text, params);
    FileSynthesisCallback(File fileName) {
        mFileName = fileName;
    }

+4 −5
Original line number Diff line number Diff line
@@ -15,14 +15,13 @@
 */
package android.speech.tts;

import android.os.Bundle;
import android.speech.tts.TextToSpeechService.UtteranceCompletedDispatcher;
import android.util.Log;

/**
 * Speech synthesis request that plays the audio as it is received.
 */
class PlaybackSynthesisRequest extends SynthesisRequest {
class PlaybackSynthesisCallback extends AbstractSynthesisCallback {

    private static final String TAG = "PlaybackSynthesisRequest";
    private static final boolean DBG = false;
@@ -66,9 +65,9 @@ class PlaybackSynthesisRequest extends SynthesisRequest {

    private final UtteranceCompletedDispatcher mDispatcher;

    PlaybackSynthesisRequest(String text, Bundle params, int streamType, float volume, float pan,
            AudioPlaybackHandler audioTrackHandler, UtteranceCompletedDispatcher dispatcher) {
        super(text, params);
    PlaybackSynthesisCallback(int streamType, float volume, float pan,
            AudioPlaybackHandler audioTrackHandler,
            UtteranceCompletedDispatcher dispatcher) {
        mStreamType = streamType;
        mVolume = volume;
        mPan = pan;
+107 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package android.speech.tts;

/**
 * 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}.
 *
 * Alternatively, the engine can provide all the audio at once, by using
 * {@link #completeAudioAvailable}.
 *
 * {@link #error} can be called at any stage in the synthesis process to
 * indicate that an error has occured, but if the call is made after a call
 * to {@link #done} or {@link #completeAudioAvailable} it might be discarded.
 */
public interface SynthesisCallback {
    /**
     * @return the maximum number of bytes that the TTS engine can pass in a single call of
     *         {@link #audioAvailable}. This does not apply to {@link #completeAudioAvailable}.
     *         Calls to {@link #audioAvailable} with data lengths larger than this
     *         value will not succeed.
     */
    public int getMaxBufferSize();

    /**
     * The service should call this when it starts to synthesize audio for this
     * request.
     *
     * This method should only be called on the synthesis thread,
     * while in {@link TextToSpeechService#onSynthesizeText}.
     *
     * @param sampleRateInHz Sample rate in HZ of the generated audio.
     * @param audioFormat Audio format of the generated audio. Must be one of
     *         the ENCODING_ constants defined in {@link android.media.AudioFormat}.
     * @param channelCount The number of channels. Must be {@code 1} or {@code 2}.
     * @return {@link TextToSpeech#SUCCESS} or {@link TextToSpeech#ERROR}.
     */
    public int start(int sampleRateInHz, int audioFormat, int channelCount);

    /**
     * The service should call this method when synthesized audio is ready for consumption.
     *
     * This method should only be called on the synthesis thread,
     * while in {@link TextToSpeechService#onSynthesizeText}.
     *
     * @param 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 offset The offset into {@code buffer} where the audio data starts.
     * @param 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 {@link TextToSpeech#SUCCESS} or {@link TextToSpeech#ERROR}.
     */
    public int audioAvailable(byte[] buffer, int offset, int length);

    /**
     * The service can call this method instead of using {@link #start}, {@link #audioAvailable}
     * and {@link #done} if all the audio data is available in a single buffer.
     *
     * @param sampleRateInHz Sample rate in HZ of the generated audio.
     * @param audioFormat Audio format of the generated audio. Must be one of
     *         the ENCODING_ constants defined in {@link android.media.AudioFormat}.
     * @param channelCount The number of channels. Must be {@code 1} or {@code 2}.
     * @param 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 offset The offset into {@code buffer} where the audio data starts.
     * @param length The number of bytes of audio data in {@code buffer}.
     * @return {@link TextToSpeech#SUCCESS} or {@link TextToSpeech#ERROR}.
     */
    public int completeAudioAvailable(int sampleRateInHz, int audioFormat,
            int channelCount, byte[] buffer, int offset, int length);

    /**
     * The service should call this method when all the synthesized audio for a request has
     * been passed to {@link #audioAvailable}.
     *
     * This method should only be called on the synthesis thread,
     * while in {@link TextToSpeechService#onSynthesizeText}.
     *
     * @return {@link TextToSpeech#SUCCESS} or {@link TextToSpeech#ERROR}.
     */
    public int done();

    /**
     * The service should call this method if the speech synthesis fails.
     *
     * This method should only be called on the synthesis thread,
     * while in {@link TextToSpeechService#onSynthesizeText}.
     */
    public void error();

}
 No newline at end of file
Loading