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