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

Commit c99ba1c3 authored by Niels Egberts's avatar Niels Egberts
Browse files

API to listen in on the synthesized audio.

Change-Id: Ic943d39a0540f0061ef6f629e4934dc71f69ab6b
parent 9ef46c26
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