Migração da versão 3.6¶
A versão 4.x do CPqD Texto Fala introduziu uma nova arquitetura de software, oferecendo mais funcionalidades e uma API mais moderna. Como consequência, aplicações que utilizam as versões 3.6 não são diretamente compatíveis com os binários da versão 4.x. Desenvolvedores precisam adaptar suas aplicações para utilizar o novo CPqD Texto Fala.
Arquivo de configuração¶
A tabela abaixo apresenta a relação de equivalência entre os parâmetros de configuração do CPqD Texto Fala versão 3.6 e 4.x.
Versão 3.6 | Versão 4.x |
|
Parâmetro de inicialização |
pathDat | General.VoicePath |
Não suporta múltiplas vozes | |
|
Audio.Encoder |
volume | Audio.Volume |
ritmo | Audio.Rate |
entonacao | Audio.Pitch |
codificacaoTexto | Detectado automaticamente |
Não suportado | Text.SSML |
pausaInicial | Audio.BeginSilence |
pausaFinal | Audio.EndSilence |
logTextos | Log.Level |
Interfaces de programação¶
Versão 3.6 | Versão 4.x |
|
TTS_Initialize |
tts_finaliza | TTS_Terminate |
tts_alocaCanal | TTS_CreateSession |
tts_desalocaCanal | TTS_ReleaseSession |
|
TTS_TextToSpeech + TTS_CopyAudio |
|
TTS_TextToSpeech + TTS_SaveAudio |
|
TTS_TextToSpeechStream + TTS_CopyAudio |
|
TTS_TextToSpeechStream + TTS_SaveAudio |
|
TTS_Free |
tts_versao | TTS_GetEngineInfo |
tts_ajustaConfiguracaoSintese | |
tts_obtemConfiguracaoSintese | |
tts_mensagemErro | TTS_GetLastError |
Exemplo de uso¶
A função de inicialização recebeu um argumento a mais para indicar o local onde estão os arquivos de log. Na versão 3.6 o local dos arquivos de log era especificado no arquivo de configuração.
- 3.6
- 4.x
long result;
result = tts_inic_config ("/opt/ctf");
TTS_RETURN result;
result = TTS_Initialize("/opt/cpqd/tts/engine", "/var/log");
Os canais de síntese passaram a ser denominados de sessões, um conceito mais genérico e aderente ao jargão de desenvolvimento de software. Além disso, como a versão 4 do produto suporta múltiplas vozes, a função de criação de sessões TTS_CreateSession possui um argumento onde a aplicação pode indicar uma voz padrão.
- 3.6
- 4.x
long canal;
canal = tts_alocaCanal();
TTS_HANDLE session;
TTS_CreateSession("rosana-highquality", &session);
Recuperar valores de parâmetros de configuração era feito através de uma estrutura na versão 3.6. A nova versão fornece os valores individualmente através de funções destinadas a tipos de dados específicos.
- 3.6
- 4.x
// imprime a taxa de amostragem
_tts_config_sintese configSintese;
tts_obtemConfigSintese(canal, configSintese);
printf("Sample rate: %d Hz\n", configSintese.taxaAmostragem);
// imprime a taxa de amostragem
float value;
TTS_GetFloatParameter(session, TTS_PARAM_SAMPLE_RATE, &value);
printf("Sample rate: %d Hz\n", value);
A definição de parâmetros de configuração também passou a usar funções individuais ao invés de uma estrutura.
- 3.6
- 4.x
// altera o formato de saída para PCM Linear 8000 KHz Mono
configSintese.codificacaoAudio = TTS_LINEAR_8;
configSintese.taxaAmostragem = TTS_KHZ_8;
configSintese.numeroCanaisAudio = 1;
configSintese.cabecalhoArquivo = TTS_SEM_CAB;
configSintese.cabecalhoMemoria = TTS_SEM_CAB;
tts_ajustaConfigSintese(canal, configSintese);
// altera o formato de saída para PCM Linear 8000 KHz Mono
TTS_SetStringParameter(session, TTS_PARAM_ENCODER, "pcm/8000/8/1");
As diversas funções para efetuar síntese de fala da versão 3.6 foram substituídas por apenas duas função na nova versão: TTS_TextToSpeech e TTS_TextToSpeechStream. Na versão 4.X o áudio pode ser obtido pela função TTS_CopyAudio ou salvo em disco com a função TTS_SaveAudio.
- 3.6
- 4.x
// converte texto em fala e obtém o áudio em memória
char *buffer_voz;
tamanho = tts_sintetizaTexto_mm(canal, "Olá mundo!", &buffer_voz);
// converte texto em fala e obtém o áudio em memória
// primeiro convertemos o texto em fala
TTS_TextToSpeech(session, "Olá mundo!");
// depois copiamos o áudio para uma região de memória
uint32_t length;
uint8_t *buffer;
TTS_GetAudioLength(session, &length);
buffer = (uint8_t*) malloc(length);
TTS_CopyAudio(session, 0, length, buffer, &length);