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 o pacote JAR 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 |
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.x |
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.x
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.x 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.x
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.x
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.x
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 o áudio pode obtido ser pelo método getAudio ou salvo em disco com a função saveAudio.
- 3.6
- 4.x
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.x
app.desalocaCanal(canal);
session.release();