Add ACR descriptions
[platform/core/uifw/stt.git] / include / stt.h
old mode 100644 (file)
new mode 100755 (executable)
index 9fecdaa..7a82ced
@@ -42,7 +42,7 @@ typedef enum {
        STT_ERROR_OUT_OF_MEMORY                 = TIZEN_ERROR_OUT_OF_MEMORY,    /**< Out of Memory */
        STT_ERROR_IO_ERROR                      = TIZEN_ERROR_IO_ERROR,         /**< I/O error */
        STT_ERROR_INVALID_PARAMETER             = TIZEN_ERROR_INVALID_PARAMETER,/**< Invalid parameter */
-       STT_ERROR_TIMED_OUT                     = TIZEN_ERROR_TIMED_OUT,        /**< No answer from the daemon */
+       STT_ERROR_TIMED_OUT                     = TIZEN_ERROR_TIMED_OUT,        /**< No answer from the STT service */
        STT_ERROR_RECORDER_BUSY                 = TIZEN_ERROR_RESOURCE_BUSY,    /**< Device or resource busy */
        STT_ERROR_OUT_OF_NETWORK                = TIZEN_ERROR_NETWORK_DOWN,     /**< Network is down */
        STT_ERROR_PERMISSION_DENIED             = TIZEN_ERROR_PERMISSION_DENIED,/**< Permission denied */
@@ -52,11 +52,12 @@ typedef enum {
        STT_ERROR_ENGINE_NOT_FOUND              = TIZEN_ERROR_STT | 0x03,       /**< No available engine  */
        STT_ERROR_OPERATION_FAILED              = TIZEN_ERROR_STT | 0x04,       /**< Operation failed  */
        STT_ERROR_NOT_SUPPORTED_FEATURE         = TIZEN_ERROR_STT | 0x05,       /**< Not supported feature of current engine */
-       STT_ERROR_NO_SPEECH                     = TIZEN_ERROR_STT | 0x06,       /**< No speech while recording */
-       STT_ERROR_IN_PROGRESS_TO_READY          = TIZEN_ERROR_STT | 0x07,       /**< Progress to ready is not finished */
-       STT_ERROR_IN_PROGRESS_TO_RECORDING      = TIZEN_ERROR_STT | 0x08,       /**< Progress to recording is not finished */
-       STT_ERROR_IN_PROGRESS_TO_PROCESSING     = TIZEN_ERROR_STT | 0x09,       /**< Progress to processing is not finished */
-       STT_ERROR_RECORDING_TIMED_OUT           = TIZEN_ERROR_STT | 0x10        /**< Recording timed out */
+       STT_ERROR_RECORDING_TIMED_OUT           = TIZEN_ERROR_STT | 0x06,       /**< Recording timed out @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
+       STT_ERROR_NO_SPEECH                     = TIZEN_ERROR_STT | 0x07,       /**< No speech while recording @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
+       STT_ERROR_IN_PROGRESS_TO_READY          = TIZEN_ERROR_STT | 0x08,       /**< Progress to ready is not finished @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
+       STT_ERROR_IN_PROGRESS_TO_RECORDING      = TIZEN_ERROR_STT | 0x09,       /**< Progress to recording is not finished @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
+       STT_ERROR_IN_PROGRESS_TO_PROCESSING     = TIZEN_ERROR_STT | 0x10,       /**< Progress to processing is not finished @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
+       STT_ERROR_SERVICE_RESET                 = TIZEN_ERROR_STT | 0x11        /**< Service reset @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
 } stt_error_e;
 
 /**
@@ -302,18 +303,20 @@ typedef void (*stt_default_language_changed_cb)(stt_h stt, const char* previous_
 
 /**
  * @brief Called when the engine is changed.
- * @since_tizen 3.0
+ * @since_tizen @if MOBILE 3.0 @elseif WEARABLE 2.3.2 @endif
+ *
+ * @remarks The language is specified as an ISO 3166 alpha-2 two letter country-code followed by ISO 639-1 for the two-letter language code. For example, "ko_KR" for Korean, "en_US" for American English.
  *
  * @param[in] stt The STT handle
  * @param[in] engine_id Engine id
  * @param[in] language The default language
- * @param[in] support_silence support silence detection
- * @param[in] need_credential necessity of credential
+ * @param[in] support_silence Whether the silence detection is supported or not
+ * @param[in] need_credential The necessity of credential
  * @param[in] user_data The user data passed from the callback registration function
  *
  * @see stt_set_engine_changed_cb()
 */
-typedef bool (*stt_engine_changed_cb)(stt_h stt, const char* engine_id, const char* language,
+typedef void (*stt_engine_changed_cb)(stt_h stt, const char* engine_id, const char* language,
                                                bool support_silence, bool need_credential, void* user_data);
 
 /**
@@ -332,6 +335,7 @@ typedef bool (*stt_engine_changed_cb)(stt_h stt, const char* engine_id, const ch
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @post If this function is called, the STT state will be #STT_STATE_CREATED.
  *
@@ -352,6 +356,7 @@ int stt_create(stt_h* stt);
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @see stt_create()
 */
@@ -373,6 +378,7 @@ int stt_destroy(stt_h stt);
  * @retval #STT_ERROR_INVALID_STATE STT Not initialized
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  * @post This function invokes stt_supported_engine_cb() repeatedly for getting engine information.
@@ -398,6 +404,7 @@ int stt_foreach_supported_engines(stt_h stt, stt_supported_engine_cb callback, v
  * @retval #STT_ERROR_INVALID_STATE STT Not initialized
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  *
@@ -410,6 +417,9 @@ int stt_get_engine(stt_h stt, char** engine_id);
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  * @privlevel public
  * @privilege %http://tizen.org/privilege/recorder
+ * @privilege %http://tizen.org/privilege/appmanager.launch
+ *
+ * @remarks A privilege (%http://tizen.org/privilege/appmanager.launch) is necessary since 3.0.
  *
  * @param[in] stt The STT handle
  * @param[in] engine_id Engine id
@@ -420,6 +430,7 @@ int stt_get_engine(stt_h stt, char** engine_id);
  * @retval #STT_ERROR_INVALID_STATE STT Not initialized
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  *
@@ -429,9 +440,13 @@ int stt_set_engine(stt_h stt, const char* engine_id);
 
 /**
  * @brief Sets the app credential.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/recorder
+ * @details Using this API, the application can set a credential.
+ *     The credential is a key to verify the authorization about using the engine.
+ *     If the application sets the credential, it will be able to use functions of the engine entirely.
+ * @since_tizen @if MOBILE 3.0 @elseif WEARABLE 2.3.2 @endif
+ *
+ * @remarks The necessity of the credential depends on the engine. In case of the engine which is basically embedded in Tizen, the credential is not necessary so far.
+ *     However, if the user wants to apply the 3rd party's engine, the credential may be necessary. In that case, please follow the policy provided by the corresponding engine.
  *
  * @param[in] stt The STT handle
  * @param[in] credential The app credential
@@ -439,6 +454,7 @@ int stt_set_engine(stt_h stt, const char* engine_id);
  * @return 0 on success, otherwise a negative error value
  * @retval #STT_ERROR_NONE Success
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
  *
  * @pre The state should be #STT_STATE_CREATED or #STT_STATE_READY.
@@ -450,7 +466,14 @@ int stt_set_credential(stt_h stt, const char* credential);
 
 /**
  * @brief Sets the private data to stt engine.
- * @since_tizen 3.0
+ * @details The private data is the setting parameter for applying keys provided by the engine.
+ *     Using this API, the application can set the private data and use the corresponding key of the engine.
+ *     For example, if the engine provides 'partial recognition' as a recognition type, the application can set the private data as the following. \n
+ *     int ret = stt_set_private_data(stt_h, "recognition_type", "PARTIAL");
+ *
+ * @since_tizen @if MOBILE 3.0 @elseif WEARABLE 2.3.2 @endif
+ *
+ * @remarks If the engine is replaced with the other engine, the key may be ignored.
  *
  * @param[in] stt The STT handle
  * @param[in] key The field name of private data
@@ -460,9 +483,8 @@ int stt_set_credential(stt_h stt, const char* credential);
  * @retval #STT_ERROR_NONE Successful
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
- * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
- * @retval #STT_ERROR_TIMED_OUT No answer from the daemon
+ * @retval #STT_ERROR_TIMED_OUT No answer from the STT service
  *
  * @pre The state should be #STT_STATE_READY.
  *
@@ -472,19 +494,25 @@ int stt_set_private_data(stt_h stt, const char* key, const char* data);
 
 /**
  * @brief Gets the private data from stt engine.
- * @since_tizen 3.0
+ * @details The private data is the information provided by the engine.
+ *     Using this API, the application can get the private data which corresponds to the key from the engine.
+
+ * @since_tizen @if MOBILE 3.0 @elseif WEARABLE 2.3.2 @endif
+ *
+ * @remarks If the engine is replaced with the other engine, the key may be ignored.
  *
  * @param[in] stt The STT handle
  * @param[in] key The field name of private data
- * @param[out] data The data
+ * @param[out] data The data field of private data
+ *
+ * @remarks The @a data must be released using free() when it is no longer required.
  *
  * @return 0 on success, otherwise a negative error value
  * @retval #STT_ERROR_NONE Successful
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
- * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
- * @retval #STT_ERROR_TIMED_OUT No answer from the daemon
+ * @retval #STT_ERROR_TIMED_OUT No answer from the STT service
  *
  * @pre The state should be #STT_STATE_READY.
  *
@@ -493,7 +521,7 @@ int stt_set_private_data(stt_h stt, const char* key, const char* data);
 int stt_get_private_data(stt_h stt, const char* key, char** data);
 
 /**
- * @brief Connects the daemon asynchronously.
+ * @brief Connects the STT service asynchronously.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  * @privlevel public
  * @privilege %http://tizen.org/privilege/recorder
@@ -505,6 +533,7 @@ int stt_get_private_data(stt_h stt, const char* key, char** data);
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  * @post If this function is successful, the STT state will be #STT_STATE_READY. \n
@@ -515,7 +544,7 @@ int stt_get_private_data(stt_h stt, const char* key, char** data);
 int stt_prepare(stt_h stt);
 
 /**
- * @brief Disconnects the daemon.
+ * @brief Disconnects the STT service.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  * @privlevel public
  * @privilege %http://tizen.org/privilege/recorder
@@ -527,6 +556,7 @@ int stt_prepare(stt_h stt);
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_READY.
  * @post If this function is called, the STT state will be #STT_STATE_CREATED.
@@ -548,9 +578,11 @@ int stt_unprepare(stt_h stt);
  * @return 0 on success, otherwise a negative error value
  * @retval #STT_ERROR_NONE Successful
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #STT_ERROR_OUT_OF_MEMORY Out of memory
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_ENGINE_NOT_FOUND No available engine
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @post This function invokes stt_supported_language_cb() repeatedly for getting languages.
  *
@@ -576,6 +608,7 @@ int stt_foreach_supported_languages(stt_h stt, stt_supported_language_cb callbac
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @see stt_foreach_supported_languages()
 */
@@ -594,6 +627,7 @@ int stt_get_default_language(stt_h stt, char** language);
  * @retval #STT_ERROR_NONE Successful
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @see stt_start()
  * @see stt_stop()
@@ -604,11 +638,9 @@ int stt_get_state(stt_h stt, stt_state_e* state);
 
 /**
  * @brief Gets the current error message.
- * @since_tizen 3.0
- * @privlevel public
- * @privilege %http://tizen.org/privilege/recorder
+ * @since_tizen @if MOBILE 3.0 @elseif WEARABLE 2.3.2 @endif
  * @remarks This function should be called during an stt error callback. If not, the error as operation failure will be returned. \n
- * If the function succeeds, @a err_msg must be released using free() when it is no longer required.
+ *     If the function succeeds, @a err_msg must be released using free() when it is no longer required.
  *
  * @param[in] stt The STT handle
  * @param[out] err_msg The current error message
@@ -640,6 +672,7 @@ int stt_get_error_message(stt_h stt, char** err_msg);
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_READY.
 */
@@ -660,6 +693,7 @@ int stt_is_recognition_type_supported(stt_h stt, const char* type, bool* support
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED_FEATURE Not supported feature of current engine
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_READY.
 */
@@ -682,6 +716,7 @@ int stt_set_silence_detection(stt_h stt, stt_option_silence_detection_e type);
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_READY.
 */
@@ -701,6 +736,7 @@ int stt_set_start_sound(stt_h stt, const char* filename);
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_READY.
 */
@@ -723,6 +759,7 @@ int stt_unset_start_sound(stt_h stt);
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_READY.
 */
@@ -742,6 +779,7 @@ int stt_set_stop_sound(stt_h stt, const char* filename);
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_READY.
 */
@@ -753,7 +791,7 @@ int stt_unset_stop_sound(stt_h stt);
  * @privlevel public
  * @privilege %http://tizen.org/privilege/recorder
  *
- * @remarks This function starts recording in the daemon and sending recording data to engine. \n
+ * @remarks This function starts recording in the STT service and sending recording data to engine. \n
  * This work continues until stt_stop(), stt_cancel() or silence detected by engine.
  *
  * @param[in] stt The STT handle
@@ -768,6 +806,7 @@ int stt_unset_stop_sound(stt_h stt);
  * @retval #STT_ERROR_RECORDER_BUSY Recorder busy
  * @retval #STT_ERROR_INVALID_LANGUAGE Invalid language
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  * @retval #STT_ERROR_IN_PROGRESS_TO_RECORDING Progress to recording is not finished
  *
  * @pre The state should be #STT_STATE_READY.
@@ -795,6 +834,7 @@ int stt_start(stt_h stt, const char* language, const char* type);
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  * @retval #STT_ERROR_IN_PROGRESS_TO_READY Progress to ready is not finished
  * @retval #STT_ERROR_IN_PROGRESS_TO_RECORDING Progress to recording is not finished
  * @retval #STT_ERROR_IN_PROGRESS_TO_PROCESSING Progress to processing is not finished
@@ -828,6 +868,7 @@ int stt_stop(stt_h stt);
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  * @retval #STT_ERROR_IN_PROGRESS_TO_READY Progress to ready is not finished
  * @retval #STT_ERROR_IN_PROGRESS_TO_RECORDING Progress to recording is not finished
  * @retval #STT_ERROR_IN_PROGRESS_TO_PROCESSING Progress to processing is not finished
@@ -858,6 +899,7 @@ int stt_cancel(stt_h stt);
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_RECORDING.
  *
@@ -883,6 +925,7 @@ int stt_get_recording_volume(stt_h stt, float* volume);
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_OPERATION_FAILED Operation failure
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre This function should be called in stt_recognition_result_cb().
  * @post This function invokes stt_result_time_cb() repeatedly for getting time information.
@@ -907,6 +950,7 @@ int stt_foreach_detailed_result(stt_h stt, stt_result_time_cb callback, void* us
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  *
@@ -928,6 +972,7 @@ int stt_set_recognition_result_cb(stt_h stt, stt_recognition_result_cb callback,
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  *
@@ -950,6 +995,7 @@ int stt_unset_recognition_result_cb(stt_h stt);
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  *
@@ -971,6 +1017,7 @@ int stt_set_state_changed_cb(stt_h stt, stt_state_changed_cb callback, void* use
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  *
@@ -993,6 +1040,7 @@ int stt_unset_state_changed_cb(stt_h stt);
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  *
@@ -1014,6 +1062,7 @@ int stt_set_error_cb(stt_h stt, stt_error_cb callback, void* user_data);
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  *
@@ -1036,6 +1085,7 @@ int stt_unset_error_cb(stt_h stt);
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  *
@@ -1057,6 +1107,7 @@ int stt_set_default_language_changed_cb(stt_h stt, stt_default_language_changed_
  * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #STT_ERROR_INVALID_STATE Invalid state
  * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ * @retval #STT_ERROR_PERMISSION_DENIED Permission denied
  *
  * @pre The state should be #STT_STATE_CREATED.
  *
@@ -1064,6 +1115,46 @@ int stt_set_default_language_changed_cb(stt_h stt, stt_default_language_changed_
 */
 int stt_unset_default_language_changed_cb(stt_h stt);
 
+/**
+ * @brief Registers a callback function to detect the engine change.
+ * @since_tizen @if MOBILE 3.0 @elseif WEARABLE 2.3.2 @endif
+ *
+ * @param[in] stt The STT handle
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #STT_ERROR_NONE Successful
+ * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #STT_ERROR_INVALID_STATE Invalid state
+ * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ *
+ * @pre The state should be #STT_STATE_CREATED.
+ *
+ * @see stt_engine_changed_cb()
+ * @see stt_unset_engine_changed_cb()
+*/
+int stt_set_engine_changed_cb(stt_h stt, stt_engine_changed_cb callback, void* user_data);
+
+/**
+ * @brief Unregisters the callback function.
+ * @since_tizen @if MOBILE 3.0 @elseif WEARABLE 2.3.2 @endif
+ *
+ * @param[in] stt The STT handle
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #STT_ERROR_NONE Successful
+ * @retval #STT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #STT_ERROR_INVALID_STATE Invalid state
+ * @retval #STT_ERROR_NOT_SUPPORTED STT NOT supported
+ *
+ * @pre The state should be #STT_STATE_CREATED.
+ *
+ * @see stt_set_engine_changed_cb()
+*/
+int stt_unset_engine_changed_cb(stt_h stt);
+
+
 #ifdef __cplusplus
 }
 #endif