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 serNULL
se o valor do campo Order forTTS_ORDER_FIRST
ouTTS_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.