Loading core/java/android/speech/tts/FileSynthesisCallback.java +8 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,14 @@ class FileSynthesisCallback extends AbstractSynthesisCallback { Log.d(TAG, "FileSynthesisRequest.start(" + sampleRateInHz + "," + audioFormat + "," + channelCount + ")"); } if (audioFormat != AudioFormat.ENCODING_PCM_8BIT || audioFormat != AudioFormat.ENCODING_PCM_16BIT || audioFormat != AudioFormat.ENCODING_PCM_FLOAT) { Log.e(TAG, "Audio format encoding " + audioFormat + " not supported. Please use one " + "of AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT or " + "AudioFormat.ENCODING_PCM_FLOAT"); } FileChannel fileChannel = null; synchronized (mStateLock) { if (mStatusCode == TextToSpeech.STOPPED) { Loading core/java/android/speech/tts/PlaybackSynthesisCallback.java +8 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package android.speech.tts; import android.media.AudioFormat; import android.speech.tts.TextToSpeechService.AudioOutputParams; import android.speech.tts.TextToSpeechService.UtteranceProgressDispatcher; import android.util.Log; Loading Loading @@ -122,6 +123,13 @@ class PlaybackSynthesisCallback extends AbstractSynthesisCallback { public int start(int sampleRateInHz, int audioFormat, int channelCount) { if (DBG) Log.d(TAG, "start(" + sampleRateInHz + "," + audioFormat + "," + channelCount + ")"); if (audioFormat != AudioFormat.ENCODING_PCM_8BIT || audioFormat != AudioFormat.ENCODING_PCM_16BIT || audioFormat != AudioFormat.ENCODING_PCM_FLOAT) { Log.w(TAG, "Audio format encoding " + audioFormat + " not supported. Please use one " + "of AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT or " + "AudioFormat.ENCODING_PCM_FLOAT"); } int channelConfig = BlockingAudioTrack.getChannelConfig(channelCount); Loading core/java/android/speech/tts/SynthesisCallback.java +23 −3 Original line number Diff line number Diff line Loading @@ -15,6 +15,14 @@ */ package android.speech.tts; import android.annotation.IntDef; import android.annotation.IntRange; import android.media.AudioFormat; import android.speech.tts.TextToSpeech; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * A callback to return speech data synthesized by a text to speech engine. * Loading @@ -31,6 +39,13 @@ package android.speech.tts; * All methods can be only called on the synthesis thread. */ public interface SynthesisCallback { /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef({AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.ENCODING_PCM_FLOAT}) public @interface SupportedAudioFormat {}; /** * @return 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 Loading @@ -38,6 +53,7 @@ public interface SynthesisCallback { */ public int getMaxBufferSize(); // TODO: Replace reference to Android N to an API level when the API level for N is decided. /** * The service should call this when it starts to synthesize audio for this * request. Loading @@ -47,12 +63,16 @@ public interface SynthesisCallback { * * @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}. * {@link android.media.AudioFormat.ENCODING_PCM_8BIT} or * {@link android.media.AudioFormat.ENCODING_PCM_16BIT}. Or * {@link android.media.AudioFormat.ENCODING_PCM_FLOAT} when targetting Android N and * above. * @param channelCount The number of channels. Must be {@code 1} or {@code 2}. * @return {@link TextToSpeech#SUCCESS}, {@link TextToSpeech#ERROR} or * {@link TextToSpeech#STOPPED}. */ public int start(int sampleRateInHz, int audioFormat, int channelCount); public int start(int sampleRateInHz, @SupportedAudioFormat int audioFormat, @IntRange(from=1,to=2) int channelCount); /** * The service should call this method when synthesized audio is ready for consumption. Loading Loading @@ -102,7 +122,7 @@ public interface SynthesisCallback { * @param errorCode Error code to pass to the client. One of the ERROR_ values from * {@link TextToSpeech} */ public void error(int errorCode); public void error(@TextToSpeech.Error int errorCode); /** * Check if {@link #start} was called or not. Loading core/java/android/speech/tts/TextToSpeech.java +9 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package android.speech.tts; import android.annotation.IntDef; import android.annotation.RawRes; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; Loading @@ -38,6 +39,8 @@ import android.util.Log; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; Loading Loading @@ -75,6 +78,12 @@ public class TextToSpeech { */ public static final int STOPPED = -2; /** @hide */ @IntDef({ERROR_SYNTHESIS, ERROR_SERVICE, ERROR_OUTPUT, ERROR_NETWORK, ERROR_NETWORK_TIMEOUT, ERROR_INVALID_REQUEST, ERROR_NOT_INSTALLED_YET}) @Retention(RetentionPolicy.SOURCE) public @interface Error {} /** * Denotes a failure of a TTS engine to synthesize the given input. */ Loading Loading
core/java/android/speech/tts/FileSynthesisCallback.java +8 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,14 @@ class FileSynthesisCallback extends AbstractSynthesisCallback { Log.d(TAG, "FileSynthesisRequest.start(" + sampleRateInHz + "," + audioFormat + "," + channelCount + ")"); } if (audioFormat != AudioFormat.ENCODING_PCM_8BIT || audioFormat != AudioFormat.ENCODING_PCM_16BIT || audioFormat != AudioFormat.ENCODING_PCM_FLOAT) { Log.e(TAG, "Audio format encoding " + audioFormat + " not supported. Please use one " + "of AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT or " + "AudioFormat.ENCODING_PCM_FLOAT"); } FileChannel fileChannel = null; synchronized (mStateLock) { if (mStatusCode == TextToSpeech.STOPPED) { Loading
core/java/android/speech/tts/PlaybackSynthesisCallback.java +8 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package android.speech.tts; import android.media.AudioFormat; import android.speech.tts.TextToSpeechService.AudioOutputParams; import android.speech.tts.TextToSpeechService.UtteranceProgressDispatcher; import android.util.Log; Loading Loading @@ -122,6 +123,13 @@ class PlaybackSynthesisCallback extends AbstractSynthesisCallback { public int start(int sampleRateInHz, int audioFormat, int channelCount) { if (DBG) Log.d(TAG, "start(" + sampleRateInHz + "," + audioFormat + "," + channelCount + ")"); if (audioFormat != AudioFormat.ENCODING_PCM_8BIT || audioFormat != AudioFormat.ENCODING_PCM_16BIT || audioFormat != AudioFormat.ENCODING_PCM_FLOAT) { Log.w(TAG, "Audio format encoding " + audioFormat + " not supported. Please use one " + "of AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT or " + "AudioFormat.ENCODING_PCM_FLOAT"); } int channelConfig = BlockingAudioTrack.getChannelConfig(channelCount); Loading
core/java/android/speech/tts/SynthesisCallback.java +23 −3 Original line number Diff line number Diff line Loading @@ -15,6 +15,14 @@ */ package android.speech.tts; import android.annotation.IntDef; import android.annotation.IntRange; import android.media.AudioFormat; import android.speech.tts.TextToSpeech; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * A callback to return speech data synthesized by a text to speech engine. * Loading @@ -31,6 +39,13 @@ package android.speech.tts; * All methods can be only called on the synthesis thread. */ public interface SynthesisCallback { /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef({AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.ENCODING_PCM_FLOAT}) public @interface SupportedAudioFormat {}; /** * @return 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 Loading @@ -38,6 +53,7 @@ public interface SynthesisCallback { */ public int getMaxBufferSize(); // TODO: Replace reference to Android N to an API level when the API level for N is decided. /** * The service should call this when it starts to synthesize audio for this * request. Loading @@ -47,12 +63,16 @@ public interface SynthesisCallback { * * @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}. * {@link android.media.AudioFormat.ENCODING_PCM_8BIT} or * {@link android.media.AudioFormat.ENCODING_PCM_16BIT}. Or * {@link android.media.AudioFormat.ENCODING_PCM_FLOAT} when targetting Android N and * above. * @param channelCount The number of channels. Must be {@code 1} or {@code 2}. * @return {@link TextToSpeech#SUCCESS}, {@link TextToSpeech#ERROR} or * {@link TextToSpeech#STOPPED}. */ public int start(int sampleRateInHz, int audioFormat, int channelCount); public int start(int sampleRateInHz, @SupportedAudioFormat int audioFormat, @IntRange(from=1,to=2) int channelCount); /** * The service should call this method when synthesized audio is ready for consumption. Loading Loading @@ -102,7 +122,7 @@ public interface SynthesisCallback { * @param errorCode Error code to pass to the client. One of the ERROR_ values from * {@link TextToSpeech} */ public void error(int errorCode); public void error(@TextToSpeech.Error int errorCode); /** * Check if {@link #start} was called or not. Loading
core/java/android/speech/tts/TextToSpeech.java +9 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package android.speech.tts; import android.annotation.IntDef; import android.annotation.RawRes; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; Loading @@ -38,6 +39,8 @@ import android.util.Log; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; Loading Loading @@ -75,6 +78,12 @@ public class TextToSpeech { */ public static final int STOPPED = -2; /** @hide */ @IntDef({ERROR_SYNTHESIS, ERROR_SERVICE, ERROR_OUTPUT, ERROR_NETWORK, ERROR_NETWORK_TIMEOUT, ERROR_INVALID_REQUEST, ERROR_NOT_INSTALLED_YET}) @Retention(RetentionPolicy.SOURCE) public @interface Error {} /** * Denotes a failure of a TTS engine to synthesize the given input. */ Loading