TTS_RegisterInterpretation

O registro de callbacks, independente do mecanismo de templates, permite que um usuário do 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 atributo callback.

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 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 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.