TTS_RegisterInterpretation¶
O registro de callbacks, independente do mecanismo de templates, permite que um usuário do CPqD Texto Fala crie funções que serão executadas através da tag say-as
do SSML.
Dessa forma, o usuário pode processar o texto utilizando funções da aplicação, ao invés de funções internas do interpretador SSML.
TTS_RETURN TTS_RegisterInterpretation(const char *name, TTS_INTERPRET_CALLBACK *callback,
void *data, bool toNormalize)
- name
- Nome da callback. Este nome será utilizado para identificação e chamada da callback da tag
say-as
do SSML, por meio do atributocallback
. - callback
- Ponteiro para uma função da aplicação que obedeça o protótipo especificado pelo tipo TTS_INTERPRET_CALLBACK. Essa função será invocada pelo CPqD Texto Fala na chamada da tag
say-as
. - data
- Ponteiro arbitrário da aplicação a ser passado para a função de _callback_, indicada pelo parâmetro anterior.
- normalize
- Indica se o texto retornado pela callback deve ser normalizado (
true
) ou não (false
).
Essa função retorna um código de erro do tipo TTS_RETURN
. Se o valor retornado for igual a zero (TTS_OK
), a operação foi realizada com sucesso. Caso contrário, algum erro ocorreu durante a operação e o valor retornado corresponde a um dos códigos de erros descritos no Apêndice I.
A função de callback da aplicação, invocada pelo CPqD Texto Fala, recebe o texto contido entre a tag say-as
e algumas informações adicionais. Com esse texto de entrada, o usuário poderá manipular de acordo com o desejado e retornar na saída o texto processado.
typedef uint8_t TTS_INTERPRET_CALLBACK( void *context,
const char *input, TTS_SAYAS_OUTPUT_CALLBACK *callback, void *data )
- context
- Controlador interno do contexto para uso e manipulação do dado de saída.
- input
- Dado de entrada a ser processado (texto contido entre a tag
say-as
). - callback
Callback interna para uso e manipulação do dado de saída.
typedef bool TTS_INTERPRET_OUTPUT_CALLBACK( void *context, const char *text )
- data
- Ponteiro arbitrário fornecido pela aplicação na chamada de TTS_RegisterInterpretation.
Na callback do usuário (TTS_INTERPRET_CALLBACK
), após manipular o dado de entrada, a saída do texto processado deve ser incluída na chamada da callback interna (TTS_SAYAS_OUTPUT_CALLBACK
).
Exemplo de uso
static void userCallback( void* context, const char *input,
TTS_INTERPRET_OUTPUT_CALLBACK *output, void *data )
{
string out = input;
out += " esse texto";
output(context, out.c_str());
}
TTS_RETURN result = TTS_RegisterInterpretation("teste",
userCallback, NULL, true);
muito <say-as interpret-as = "none" callback="MinhaCallBack"> bom </say-as>
Neste exemplo, a palavra bom será repassada para a callback teste e como resultado teremos muito bom esse texto.