Home | History | Annotate | Download | only in tts
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.speech.tts;
     18 
     19 import android.net.Uri;
     20 import android.os.Bundle;
     21 import android.os.ParcelFileDescriptor;
     22 import android.speech.tts.ITextToSpeechCallback;
     23 import android.speech.tts.Voice;
     24 
     25 /**
     26  * Interface for TextToSpeech to talk to TextToSpeechService.
     27  *
     28  * {@hide}
     29  */
     30 interface ITextToSpeechService {
     31 
     32     /**
     33      * Tells the engine to synthesize some speech and play it back.
     34      *
     35      * @param callingInstance a binder representing the identity of the calling
     36      *        TextToSpeech object.
     37      * @param text The text to synthesize.
     38      * @param queueMode Determines what to do to requests already in the queue.
     39      * @param param Request parameters.
     40      * @param utteranceId Unique identifier of synthesized utterance.
     41      */
     42     int speak(in IBinder callingInstance, in CharSequence text, in int queueMode, in Bundle params,
     43             String utteranceId);
     44 
     45     /**
     46      * Tells the engine to synthesize some speech and write it to a file.
     47      *
     48      * @param callingInstance a binder representing the identity of the calling
     49      *        TextToSpeech object.
     50      * @param text The text to synthesize.
     51      * @param fileDescriptor The file descriptor to write the synthesized audio to. Has to be
     52               writable.
     53      * @param utteranceId Unique identifier of synthesized utterance.
     54      * @param param Request parameters.
     55      */
     56     int synthesizeToFileDescriptor(in IBinder callingInstance, in CharSequence text,
     57         in ParcelFileDescriptor fileDescriptor, in Bundle params, String utteranceId);
     58 
     59     /**
     60      * Plays an existing audio resource.
     61      *
     62      * @param callingInstance a binder representing the identity of the calling
     63      *        TextToSpeech object.
     64      * @param audioUri URI for the audio resource (a file or android.resource URI)
     65      * @param queueMode Determines what to do to requests already in the queue.
     66      * @param utteranceId Unique identifier of synthesized utterance.
     67      * @param param Request parameters.
     68      */
     69     int playAudio(in IBinder callingInstance, in Uri audioUri, in int queueMode, in Bundle params,
     70             String utteranceId);
     71 
     72     /**
     73      * Plays silence.
     74      *
     75      * @param callingInstance a binder representing the identity of the calling
     76      *        TextToSpeech object.
     77      * @param duration Number of milliseconds of silence to play.
     78      * @param queueMode Determines what to do to requests already in the queue.
     79      * @param utteranceId Unique id used to identify this request in callbacks.
     80      */
     81     int playSilence(in IBinder callingInstance, in long duration, in int queueMode,
     82         in String utteranceId);
     83 
     84     /**
     85      * Checks whether the service is currently playing some audio.
     86      */
     87     boolean isSpeaking();
     88 
     89     /**
     90      * Interrupts the current utterance (if from the given app) and removes any utterances
     91      * in the queue that are from the given app.
     92      *
     93      * @param callingInstance a binder representing the identity of the calling
     94      *        TextToSpeech object.
     95      */
     96     int stop(in IBinder callingInstance);
     97 
     98     /**
     99      * Returns the language, country and variant currently being used by the TTS engine.
    100      * Can be called from multiple threads.
    101      *
    102      * @return A 3-element array, containing language (ISO 3-letter code),
    103      *         country (ISO 3-letter code) and variant used by the engine.
    104      *         The country and variant may be {@code ""}. If country is empty, then variant must
    105      *         be empty too.
    106      */
    107     String[] getLanguage();
    108 
    109     /**
    110      * Returns a default TTS language, country and variant as set by the user.
    111      *
    112      * Can be called from multiple threads.
    113      *
    114      * @return A 3-element array, containing language (ISO 3-letter code),
    115      *         country (ISO 3-letter code) and variant used by the engine.
    116      *         The country and variant may be {@code ""}. If country is empty, then variant must
    117      *         be empty too.
    118      */
    119     String[] getClientDefaultLanguage();
    120 
    121     /**
    122      * Checks whether the engine supports a given language.
    123      *
    124      * @param lang ISO-3 language code.
    125      * @param country ISO-3 country code. May be empty or null.
    126      * @param variant Language variant. May be empty or null.
    127      * @return Code indicating the support status for the locale.
    128      *         One of {@link TextToSpeech#LANG_AVAILABLE},
    129      *         {@link TextToSpeech#LANG_COUNTRY_AVAILABLE},
    130      *         {@link TextToSpeech#LANG_COUNTRY_VAR_AVAILABLE},
    131      *         {@link TextToSpeech#LANG_MISSING_DATA}
    132      *         {@link TextToSpeech#LANG_NOT_SUPPORTED}.
    133      */
    134     int isLanguageAvailable(in String lang, in String country, in String variant);
    135 
    136     /**
    137      * Returns a list of features available for a given language. Elements of the returned
    138      * string array can be passed in as keys to {@link TextToSpeech#speak} and
    139      * {@link TextToSpeech#synthesizeToFile} to select a given feature or features to be
    140      * used during synthesis.
    141      *
    142      * @param lang ISO-3 language code.
    143      * @param country ISO-3 country code. May be empty or null.
    144      * @param variant Language variant. May be empty or null.
    145      * @return An array of strings containing the set of features supported for
    146      *         the supplied locale. The array of strings must not contain
    147      *         duplicates.
    148      */
    149     String[] getFeaturesForLanguage(in String lang, in String country, in String variant);
    150 
    151     /**
    152      * Notifies the engine that it should load a speech synthesis language.
    153      *
    154      * @param caller a binder representing the identity of the calling
    155      *        TextToSpeech object.
    156      * @param lang ISO-3 language code.
    157      * @param country ISO-3 country code. May be empty or null.
    158      * @param variant Language variant. May be empty or null.
    159      * @return Code indicating the support status for the locale.
    160      *         One of {@link TextToSpeech#LANG_AVAILABLE},
    161      *         {@link TextToSpeech#LANG_COUNTRY_AVAILABLE},
    162      *         {@link TextToSpeech#LANG_COUNTRY_VAR_AVAILABLE},
    163      *         {@link TextToSpeech#LANG_MISSING_DATA}
    164      *         {@link TextToSpeech#LANG_NOT_SUPPORTED}.
    165      */
    166     int loadLanguage(in IBinder caller, in String lang, in String country, in String variant);
    167 
    168     /**
    169      * Sets the callback that will be notified when playback of utterance from the
    170      * given app are completed.
    171      *
    172      * @param caller Instance a binder representing the identity of the calling
    173      *        TextToSpeech object.
    174      * @param cb The callback.
    175      */
    176     void setCallback(in IBinder caller, ITextToSpeechCallback cb);
    177 
    178     /**
    179      * Get the array of available voices.
    180      */
    181     List<Voice> getVoices();
    182 
    183     /**
    184      * Notifies the engine that it should load a speech synthesis voice.
    185      *
    186      * @param caller a binder representing the identity of the calling
    187      *        TextToSpeech object.
    188      * @param voiceName Unique voice of the name.
    189      * @return {@link TextToSpeech#SUCCESS} or {@link TextToSpeech#ERROR}.
    190      */
    191     int loadVoice(in IBinder caller, in String voiceName);
    192 
    193     /**
    194      * Return a name of the default voice for a given locale.
    195      *
    196      * This allows {@link TextToSpeech#getVoice} to return a sensible value after a client calls
    197      * {@link TextToSpeech#setLanguage}.
    198      *
    199      * @param lang ISO 3-character language code.
    200      * @param country ISO 3-character country code. May be empty or null.
    201      * @param variant Language variant. May be empty or null.
    202      * @return Code indicating the support status for the locale.
    203      *         One of {@link TextToSpeech#LANG_AVAILABLE},
    204      *         {@link TextToSpeech#LANG_COUNTRY_AVAILABLE},
    205      *         {@link TextToSpeech#LANG_COUNTRY_VAR_AVAILABLE},
    206      *         {@link TextToSpeech#LANG_MISSING_DATA}
    207      *         {@link TextToSpeech#LANG_NOT_SUPPORTED}.
    208      */
    209     String getDefaultVoiceNameFor(in String lang, in String country, in String variant);
    210 }
    211