TTS_TextToSpeechStream

Efetua uma conversão de texto em fala via streaming. Nesse modo de operação o Texto Fala retornará porções do áudio na medida em que a síntese de fala é efetuada. A entrega do áudio é realizada via função de callback e a função TTS_TextToSpeechStream retornará apenas ao final do processo. O tamanho dos blocos de áudio gerados é variável e, em geral, dependente do plugin de síntese que estiver sendo utilizado.

Esse modo de operação é útil em aplicações onde o tempo de resposta é um fator crítico, como em cenários envolvendo diálogo em tempo real. Pode, ainda, ser útil para melhorar o tempo de resposta quando processando textos muito extensos.

Assim como na função TTS_TextToSpeech, o áudio resultante do processo de síntese também estará armazenado na sessão e poderá se recuperado pela função TTS_CopyAudio ou TTS_SaveAudio. Caso a aplicação solicite outra síntese de fala na mesma sessão, o buffer de áudio da sessão será sobrescrito e passará a conter o áudio relativo do último pedido de síntese.

TTS_RETURN TTS_TextToSpeechStream( TTS_HANDLE handle, const char *text,
     TTS_STREAM_CALLBACK *callback, void *data )
handle

Identificador da sessão, previamente criada pela função TTS_CreateSession.

text

Texto de entrada a ser sintetizado. O texto deve estar codificado em ISO-8859-15 ou UTF-8.

callback

Ponteiro para uma função da aplicação que obedeça o protótipo especificado pelo tipo TTS_STREAM_CALLBACK. Essa função será invocada pelo Texto Fala toda vez que houve um bloco de áudio a ser entregue.

data

Ponteiro arbitrário da aplicação a ser passado para a função de _callback_, indicada pelo parâmetro anterior.

A função de callback da aplicação, invocada pelo Texto Fala, recebe o bloco de áudio gerado e algumas informações adicionais. Essa função deve retornar um valor diferente de zero para indicar que a síntese de fala deve prosseguir ou um valor igual a zero para abortar a síntese. Dessa forma, a aplicação pode controlar o andamento da síntese.

typedef uint8_t TTS_STREAM_CALLBACK( TTS_HANDLE handle,
        const TTS_STREAM_EVENT *event, void *data )
handle

Identificador da sessão, previamente criada pela função TTS_CreateSession.

event

Pointeiro para um objeto TTS_STREAM_EVENT contendo informações sobre o evento ocorrido.

data

Ponteiro arbitrário fornecido pela aplicação na chamada de TTS_TextToSpeechStream.

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 estrutura TTS_STREAM_EVENT contém detalhes sobre o evento ocorrido.

typedef struct TTS_STREAM_EVENT
{
    TTS_RETURN Result;

    uint32_t Order;

    TTS_AUDIO_BUFFER *Audio;

} TTS_STREAM_EVENT;
Result

Se o bloco foi sintetizado com sucesso, esse campo conterá o valor TTS_OK. Caso contrário, conterá um dos códigos de erros listados no Apêndice I.

Order

Indica a ordem da chamada da callback e pode assumir três valores:

TTS_ORDER_FIRST

Indica que a síntese de fala começou. O bloco de áudio pode ser vazio nesse momento.

TTS_ORDER_INTERMEDIATE

Indica que a síntese está em andamento e a chamada contém uma porção intermediária do áudio.

TTS_ORDER_LAST

Indica que a síntes de fala terminou. O bloco de áudio pode ser vazio nesse momento.

Audio

Ponteiro para um objeto TTS_AUDIO_BUFFER contendo o áudio. Esse campo pode ser NULL se o valor do campo Order for TTS_ORDER_FIRST ou TTS_ORDER_LAST.

A estrutura TTS_AUDIO_BUFFER contém o bloco de áudio e informações sobre a codificação utilizada.

typedef struct TTS_AUDIO_BUFFER
{

    int8_t* Content;

    uint32_t Length;

    uint32_t Allocated;

    uint8_t BitsPerSample;

    uint8_t Channels;

    uint16_t SampleRate;

} TTS_AUDIO_BUFFER;
Content

Pointeiro para a região de memória que contém as amostras de áudio.

Length

Comprimento, em bytes, da região de memória apontada por Content.

Allocated

Reservado para uso interno.

BitsPerSample

Número de bits por amostra.

Channels

Númer de canais. Pode ser 1 (mono) ou 2 (sterio).

SampleRate

Taxa de amostragem em Hz.