TTS_TextToSpeechStream¶
Efetua uma conversão de texto em fala via streaming. Nesse modo de operação o CPqD 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 CPqD 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 CPqD 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_EVENTcontendo 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_BUFFERcontendo o áudio. Esse campo pode serNULLse o valor do campo Order forTTS_ORDER_FIRSTouTTS_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.