Nos últimos tempos, a tecnologia de conversão de texto para fala (TTS) tem avançado de maneira impressionante. Recentemente, conheci um projeto open-source chamado Voices, que promete revolucionar a forma como desenvolvedores em Java, a partir da versão 17, podem integrar TTS em suas aplicações. O interessante é que essa biblioteca funciona sem a necessidade de APIs externas ou softwares instalados manualmente, o que facilita bastante a vida de quem está desenvolvendo. Vamos explorar mais sobre isso.

Introdução

Imagine ter a capacidade de gerar áudio natural a partir de texto em um sistema Java, sem depender de serviços externos. Isso é o que o Voices se propõe a fazer! Com a versão 0.0.8, lançada em outubro de 2025, essa biblioteca utiliza o ONNX Runtime, um motor de IA cross-platform que otimiza o treinamento e a inferência de modelos. O resultado? Uma solução mais rápida e eficiente para aplicações que precisam de síntese de fala.

Como funciona,

O Voices permite a geração de arquivos de áudio em várias línguas, utilizando dicionários ou o OpenVoice. A configuração inicial é cimples. Se você estiver usando Maven, basta adicionar algumas dependências ao seu pom.xml. Veja um exemplo básico:

<dependency>
    <groupId>org.pitest.voices</groupId>
    <artifactId>chorus</artifactId>
    <version>0.0.8</version>
</dependency>

Além disso, você pode optar por usar um dicionário em inglês britânico ou americano, dependendo da sua necessidade. O Voices é flexível, permitindo que você escolha modelos de fala disponíveis tanto em tempo de compilação quanto em tempo de execução. Isso é particularmente útil em aplicações que exigem personalização dinâmica.

Exemplo Prático

Vamos considerar um exemplo onde você deseja converter um texto em inglês para um arquivo de áudio. Abaixo, um trecho de código que mostra como isso pode ser feito:

ChorusConfig config = chorusConfig(EnUkDictionary.en_uk());
try (Chorus chorus = new Chorus(config)) {
    Voice alba = chorus.voice(Alba.albaMedium());
    Audio audio = alba.say("This is a demo of the Voices library.");
    Path path = Paths.get("Demo_English");
    audio.save(path);
}

Esse código é bem direto. Ele cria uma instância do Chorus com a configuração desejada, gerando o áudio e salvando-o em um arquivo. Um detalhe que vale a pena mencionar é a importância de utilizar uma única instância do Chorus ao longo da aplicação, porque carregar modelos pode ser custoso em termos de recursos.

Dicas Avançadas

Se você está buscando um desempenho ainda melhor, considere usar a versão onnxruntime_gpu para tirar proveito da aceleração por GPU. Isso pode ser particularmente benéfico em cenários onde a latência é um fator crítico. Para isso, bastaria fazer uma pequena alteração na sua configuração:

ChorusConfig config = gpuChorusConfig(EnUkDictionary.en_uk());

Outra dica é usar o OpenVoice, que pode melhorar a qualidade da fala gerada, embora exija mais recursos computacionais. Ao importar a dependência do OpenVoice, você pode criar um fornecedor que não requer dicionários, permitindo uma maior flexibilidade. Aqui está um exemplo:

ChorusConfig config = chorusConfig(Dictionaries.empty()).withModel(new OpenVoiceSupplier());

Essa abordagem. é útil se você está lidando com textos em diferentes idiomas ou dialetos.

Conclusão

A biblioteca Voices representa um avanço significativo na síntese de fala para aplicações Java. Com funcionalidades que permitem personalização e melhoria da qualidade de áudio, ela se destaca em um cenário onde alternativas como Sherpa Onnx e MaryTTS podem ser menos flexíveis ou mais difíceis de integrar. Para desenvolvedores que buscam soluções práticas e eficientes, o Voices se apresenta como uma ferramenta poderosa. Vale a pena explorar suas capacidades e adaptá-las às suas necessidades específicas.

Em um mundo onde a comunicação clara e eficaz é cada vez mais valorizada, ter uma ferramenta como essa em seu arsenal pode ser um diferencial e tanto. Vamos explorar essa tecnologia e ver até onde ela pode nos levar.