Migração da versão 3.6¶
A versão 4.1 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 o pacote JAR da versão 4.1. 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.1.
| Versão 3.6 | Versão 4.1 | 
  | 
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 | 
Equivalência entre APIs em Java¶
Comparação e equivalência entre as funções das APIs em Java das versões 3.x e 4.x.
| Versão 3.6 | Versão 4.1 | 
| Jctf | SynthesisEngine | 
| JctfCanal | SynthesisSession | 
| Jctf.inicializa() | Construtor da classe SynthesisEngine | 
| Jctf.finaliza() | |
| alocaCanal() | SynthesisEngine.createSession() | 
| desalocaCanal() | SynthesisSession.release() | 
  | 
SynthesisSession.textToSpeech() + SynthesisSession.getAudio() | 
  | 
SynthesisSession.textToSpeech() + SynthesisSession.saveAudio() | 
  | 
SynthesisSession.textToSpeechStream() + SynthesisSession.getAudio() | 
  | 
SynthesisSession.textToSpeechStream() + SynthesisSession.saveAudio() | 
| Jctf.getVersion | SynthesisEngine.getEngineInfo() | 
| Jctf.setConfig | |
| Jctf.getConfig | |
| JctfException | SynthesisException | 
Exemplos de uso¶
A 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.
- Inicializa o CPqD Texto Fala
 
- 3.6
 - 4.1
 
Jctf app = new Jctf("/opt/ctf");
app.inicializa();
SynthesisEngine engine = new SynthesisEngine("/opt/cpqd/tts/libcpqdtts.so",
    "/opt/cpqd/tts", "/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.1 do produto suporta múltiplas vozes, o método de criação de sessões possui um argumento onde a aplicação pode indicar uma voz padrão.
- 3.6
 - 4.1
 
JctfCanal canal = app.alocaCanal();
SynthesisSession session = engine.createSession("rosana-highquality");
Recuperar valores de parâmetros de configuração era feito através de uma classe na versão 3.6. A nova versão fornece os valores individualmente através de métodos específicos.
- 3.6
 - 4.1
 
JctfConfig config = app.getConfig(canal);
System.out.println ("Sample rate: " + config.getTaxaAmostragem() + " Hz");
System.out.println ("Sample rate: " + session.getRate() + " Hz");
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.1
 
config.setCodificacaoAudio(TTS_LINEAR_8);
config.setTaxaAmostragem(TTS_KHZ_8);
config.setNumeroCanaisAudio(1);
config.setCabecalhoArquivo(TTS_SEM_CAB);
config.setCabecalhoMemoria(TTS_SEM_CAB);
app.setConfig(canal, config);
session.setEncoderName("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: textToSpeech e textToSpeechStream. Na versão 4.1 o áudio pode obtido ser pelo método getAudio ou salvo em disco com a função saveAudio.
- 3.6
 - 4.1
 
JctfSintese buffer_audioMM = app.sintetizaTextMM(canal "Olá mundo!");
session.textToSpeech("Olá mundo!");
byte[] buffer = session.getAudio();
Por fim, é importante liberar as sessões que não estão mais em uso. Lembre-se que o número de sessões é um recurso limitado. Consulte o método createSession para maiores detalhes.
- 3.6
 - 4.1
 
app.desalocaCanal(canal);
session.release();