Recentemente, em um projeto de pesquisa aqui da Furb no qual participo, desenvolvemos uma API de conversão texto-fala (text-to-speech, ou somente TTS) para o idioma português. Antes de iniciar o desenvolvimento, fizemos uma pesquisa para encontrar alguma solução de text-to-speech pronta para utilizar em uma aplicação Java. Encontramos alguns softwares de text-to-speech, porém isso não nos interessava, precisavamos de uma API e que tratasse o idioma português do Brasil. Nessa pesquisa, encontramos a JSR-113 – Java Speech API. Parecia ser o melhor caminho a seguir, porém verificamos que existiam poucas implementações dessa especificação freeware e opensource. Analisamos a implementação chamada de FreeTTS desenvolvida em Java, porém notamos uma complexidade exceciva ao montar um simples “Hello World”, sendo que também não tratava o idioma português.
Pensamos em uma API simples, prática e principalmente bem testada. Algo que pudessemos dizer: “Quero que você (a API) converta um texto T em fala.” e ela gerasse um arquivo de audio (.wav por exemplo) contendo a respectiva fala. Dessa forma, a implementação da nossa API (chamada de FurbSpeech) possibilita uma chamada assim:
File audio = new FurbSpeech().text("Rua antônio da veiga").to().speech();
O papel da FurbSpeech é gerar arquivos de texto contendo uma série de símbolos fonéticos, juntamente com sua frequência, duração e amplitude. Um exemplo de arquivos gerado pela nossa biblioteca pode ser visto a seguir:
_ 300 r 120 100 100.0 u 120 100 100.49480791850904 a 105 100 100.95885107720841 am 105 100 101.36327752004667 t 120 100 101.6829419696158 o 120 100 101.89796923871117 n 105 100 101.9949899732081 i 105 100 101.96797189374787 o 105 100 101.81859485365136 d 120 100 101.55614639377585 a 120 100 101.19694428820792 v 120 100 100.76332198410466 e 120 100 100.28224001611973 i 120 100 99.78360973093979 g 105 100 99.29843354462076 a 105 100 98.8568773625153 _ 300 _ 300 _ 300
Para transformar esse arquivos de fonemas em som propriamente dito, utilizamos um sintetizador chamado MBROLA. Ele recebe como entrada um arquivo de fonemas e gera um arquivo de audio no formato WAV.
Ainda não disponibilizamos o código-fonte da API para download, pois ainda não está completamente finalizada e testada devidamente. Porém, se houver interesse, fique a vontade para entrar em contato.
Até a próxima.