/**
* @file qtts.h
* @brief iFLY Speech Synthesizer Header File
*
* This file contains the quick application programming interface (API) declarations
* of TTS. Developer can include this file in your project to build applications.
* For more information, please read the developer guide.
* Use of this software is subject to certain restrictions and limitations set
* forth in a license agreement entered into between iFLYTEK, Co,LTD.
* and the licensee of this software. Please refer to the license
* agreement for license use rights and restrictions.
*
* Copyright (C) 1999 - 2009 by ANHUI USTC iFLYTEK, Co,LTD.
* All rights reserved.
*
* @author Speech Dept.
* @version 1.0
* @date 2009/11/26
*
* @see
*
* History:
*
* Version | Date | Author | Notes |
* 1.0 | 2009/11/26 | Speech | Create this file |
*
*
*/
#ifndef __QTTS_H__
#define __QTTS_H__
#if !defined(MSPAPI)
#if defined(WIN32)
#define MSPAPI __stdcall
#else
#define MSPAPI
#endif /* WIN32 */
#endif /* MSPAPI */
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
#include "msp_types.h"
/**
* @fn QTTSSessionBegin
* @brief Begin a TTS Session
*
* Create a tts session to synthesize data.
*
* @return const char* - Return the new session id in success, otherwise return NULL, error code.
* @param const char* params - [in] parameters when the session created.
* @param const char** sessionID - [out] return a string to this session.
* @see
*/
const char* MSPAPI QTTSSessionBegin(const char* params, int* errorCode);
typedef const char* (MSPAPI *Proc_QTTSSessionBegin)(const char* params, int* errorCode);
#ifdef MSP_WCHAR_SUPPORT
const wchar_t* MSPAPI QTTSSessionBeginW(const wchar_t* params, int* errorCode);
typedef const wchar_t* (MSPAPI *Proc_QTTSSessionBeginW)(const wchar_t* params, int* errorCode);
#endif
/**
* @fn QTTSTextPut
* @brief Put Text Buffer to TTS Session
*
* Writing text string to synthesizer.
*
* @return int MSPAPI - Return 0 in success, otherwise return error code.
* @param const char* sessionID - [in] The session id returned by sesson begin
* @param const char* textString - [in] text buffer
* @param unsigned int textLen - [in] text size in bytes
* @see
*/
int MSPAPI QTTSTextPut(const char* sessionID, const char* textString, unsigned int textLen, const char* params);
typedef int (MSPAPI *Proc_QTTSTextPut)(const char* sessionID, const char* textString, unsigned int textLen, const char* params);
#ifdef MSP_WCHAR_SUPPORT
int MSPAPI QTTSTextPutW(const wchar_t* sessionID, const wchar_t* textString, unsigned int textLen, const wchar_t* params);
typedef int (MSPAPI *Proc_QTTSTextPutW)(const wchar_t* sessionID, const wchar_t* textString, unsigned int textLen, const wchar_t* params);
#endif
/**
* @fn QTTSAudioGet
* @brief Synthesize text to audio
*
* Synthesize text to audio, and return audio information.
*
* @return const void* - Return current synthesized audio data buffer, size returned by QTTSTextSynth.
* @param const char* sessionID - [in] session id returned by session begin
* @param unsigned int* audioLen - [out] synthesized audio size in bytes
* @param int* synthStatus - [out] synthesizing status
* @param int* errorCode - [out] error code if failed, 0 to success.
* @see
*/
const void* MSPAPI QTTSAudioGet(const char* sessionID, unsigned int* audioLen, int* synthStatus, int* errorCode);
typedef const void* (MSPAPI *Proc_QTTSAudioGet)(const char* sessionID, unsigned int* audioLen, int* synthStatus, int* errorCode);
#ifdef MSP_WCHAR_SUPPORT
const void* MSPAPI QTTSAudioGetW(const wchar_t* sessionID, unsigned int* audioLen, int* synthStatus, int* errorCode);
typedef const void* (MSPAPI *Proc_QTTSAudioGetW)(const wchar_t* sessionID, unsigned int* audioLen, int* synthStatus, int* errorCode);
#endif
/**
* @fn QTTSAudioInfo
* @brief Get Synthesized Audio information
*
* Get synthesized audio data information.
*
* @return const char * - Return audio info string.
* @param const char* sessionID - [in] session id returned by session begin
* @see
*/
const char* MSPAPI QTTSAudioInfo(const char* sessionID);
typedef const char* (MSPAPI *Proc_QTTSAudioInfo)(const char* sessionID);
#ifdef MSP_WCHAR_SUPPORT
const wchar_t* MSPAPI QTTSAudioInfoW(const wchar_t* sessionID);
typedef const wchar_t* (MSPAPI *Proc_QTTSAudioInfoW)(const wchar_t* sessionID);
#endif
/**
* @fn QTTSSessionEnd
* @brief End a Recognizer Session
*
* End the recognizer session, release all resource.
*
* @return int MSPAPI - Return 0 in success, otherwise return error code.
* @param const char* session_id - [in] session id string to end
* @param const char* hints - [in] user hints to end session, hints will be logged to CallLog
* @see
*/
int MSPAPI QTTSSessionEnd(const char* sessionID, const char* hints);
typedef int (MSPAPI *Proc_QTTSSessionEnd)(const char* sessionID, const char* hints);
#ifdef MSP_WCHAR_SUPPORT
int MSPAPI QTTSSessionEndW(const wchar_t* sessionID, const wchar_t* hints);
typedef int (MSPAPI *Proc_QTTSSessionEndW)(const wchar_t* sessionID, const wchar_t* hints);
#endif
/**
* @fn QTTSGetParam
* @brief get params related with msc
*
* the params could be local or server param, we only support netflow params "upflow" & "downflow" now
*
* @return int - Return 0 if success, otherwise return errcode.
* @param const char* sessionID - [in] session id of related param, set NULL to got global param
* @param const char* paramName - [in] param name,could pass more than one param split by ','';'or'\n'
* @param const char* paramValue - [in] param value buffer, malloced by user
* @param int *valueLen - [in, out] pass in length of value buffer, and return length of value string
* @see
*/
int MSPAPI QTTSGetParam(const char* sessionID, const char* paramName, char* paramValue, unsigned int* valueLen);
typedef int (MSPAPI *Proc_QTTSGetParam)(const char* sessionID, const char* paramName, char* paramValue, unsigned int* valueLen);
#ifdef MSP_WCHAR_SUPPORT
int MSPAPI QTTSGetParamW(const wchar_t* sessionID, const wchar_t* paramName, wchar_t* paramValue, unsigned int* valueLen);
typedef int (MSPAPI *Proc_QTTSGetParamW)(const wchar_t* sessionID, const wchar_t* paramName, wchar_t* paramValue, unsigned int* valueLen);
#endif
/**
* @fn QTTSSetParam
* @brief set params related with msc
*
* the params could be local or server param, we only support netflow params "upflow" & "downflow" now
*
* @return int - Return 0 if success, otherwise return errcode.
* @param const char* sessionID - [in] session id of related param, set NULL to got global param
* @param const char* paramName - [in] param name,could pass more than one param split by ','';'or'\n'
* @param const char* paramValue - [in] param value buffer, malloced by user
* @see
*/
int MSPAPI QTTSSetParam(const char *sessionID, const char *paramName, const char *paramValue);
typedef int (MSPAPI *Proc_QTTSSetParam)(const char* sessionID, const char* paramName, char* paramValue);
#ifdef MSP_WCHAR_SUPPORT
int MSPAPI QTTSSetParamW(const wchar_t* sessionID, const wchar_t* paramName, wchar_t* paramValue);
typedef int (MSPAPI *Proc_QTTSSetParamW)(const wchar_t* sessionID, const wchar_t* paramName, wchar_t* paramValue);
#endif
typedef void ( *tts_result_ntf_handler)( const char *sessionID, const char *audio, int audioLen, int synthStatus, int ced, const char *audioInfo, int audioInfoLen, void *userData );
typedef void ( *tts_status_ntf_handler)( const char *sessionID, int type, int status, int param1, const void *param2, void *userData);
typedef void ( *tts_error_ntf_handler)(const char *sessionID, int errorCode, const char *detail, void *userData);
int MSPAPI QTTSRegisterNotify(const char *sessionID, tts_result_ntf_handler rsltCb, tts_status_ntf_handler statusCb, tts_error_ntf_handler errCb, void *userData);
#ifdef __cplusplus
} /* extern "C" */
#endif /* C++ */
#endif /* __QTTS_H__ */