Meu projeto de conclusão de curso da faculdade inclui sintetização de voz (texto para fala - TTS) usando a JSAPI - Java Speech… Consegui construir a classe para ler o que eu quiser e só tenho um último problema agora: a lingua portuguesa! Já está disponível a coleção de difonemas para o idioma português brasileiro (pt_BR) do MBROLA e até já a baixei, mas não consigo usá-la no FreeTTS com a minha classe java, só consigo fazer ler com difonema Inglês, que já veio no .jar do FreeTTS que baixei…
Algum fera pode me ajudar aí?
pow cara … to passando o mesmo problema … eu to usando o FreeTTS via implementação do JCaptcha … tá funcionando tudo certo só queria trocar a voz tambem … mas não consigo nem achar o jar do MBrola … vc conseguiu algum avanço ?? vou mandar meus codigos:
package captcha;
import com.octo.captcha.component.sound.soundconfigurator.FreeTTSSoundConfigurator;
import com.octo.captcha.component.sound.soundconfigurator.SoundConfigurator;
import com.octo.captcha.component.sound.wordtosound.FreeTTSWordToSound;
import com.octo.captcha.component.word.worddecorator.SpellerWordDecorator;
import com.octo.captcha.component.word.wordgenerator.RandomWordGenerator;
import com.octo.captcha.component.word.wordgenerator.WordGenerator;
import com.octo.captcha.engine.sound.ListSoundCaptchaEngine;
import com.octo.captcha.sound.speller.SpellerSoundFactory;
public class EngineSom extends ListSoundCaptchaEngine {
protected void buildInitialFactories() {
WordGenerator words = new RandomWordGenerator("12345678");
SoundConfigurator configurator = new FreeTTSSoundConfigurator("kevin16",
"com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory", 1.0f, 100, 110);
FreeTTSWordToSound wordToSound = new FreeTTSWordToSound(configurator, 4, 4);
SpellerWordDecorator decorator = new SpellerWordDecorator(", ");
this.addFactory(new SpellerSoundFactory(words, wordToSound, decorator));
}
}
package captcha;
import com.octo.captcha.service.sound.DefaultManageableSoundCaptchaService;
import com.octo.captcha.service.sound.SoundCaptchaService;
public class Captcha {
private SoundCaptchaService service;
private static Captcha instance = new Captcha();
public Captcha() {
DefaultManageableSoundCaptchaService serv = new DefaultManageableSoundCaptchaService();
serv.setCaptchaEngine(new EngineSom());
service = serv;
}
public static Captcha getInstance() {
return instance;
}
public SoundCaptchaService getService() {
return service;
}
}
Ae pessoal, to usando o sintizador de voz Freetts no meu projeto, porém só tem audio em inglês. Também já baixei do MBROLA o audio portugues mas não consigo usar …
Alguem ae fez algo do tipo?
Estou na mesma furada. Pelo que pude pesquisar(http://freetts.sourceforge.net/docs/index.php#voices_available), não existe nada pronto que possibilite ao FreeTTS adicionar novas linguas além das 3 originais (us_1, us_2 e us_3). O problema é que a mbrola.jar (que está no /lib do freetts) só dá suporte a essas 3 linguas. Literalmente eh um array de Voice com 3 posicoes - nada dinamico. Eu descompilei a classe MbrolaVoiceDirectory.java de dentro do .jar e modifiquei p/ que ela aceite br_2 alem das 3 originais e ele encontrou a linguagem no java -Dmbrola.base=/mbrola -jar lib/mbrola.jar. Ja é um avanço, mas apesar de nao dar erro e o programa rodar normalmente, nenhum som sai nos speakers.
Existem 3 possibilidades:
Alguem reescrever todo o mbrola.jar (tem umas 7 classes la dentro) - Eu ainda não verifiquei se isso é legal. Pode ser que a licença de uso cancele essa opcão.
Usar SAPI5(o formato de voz q vc tem nas opcoes de acessibilidade do Windows) e pagar uma licença do JSAPI (http://www.cloudgarden.com/) p/ conseguir trabalhar com o formato no java.
Eu nao conheco tanto assim de sintetizacao de voz p/ fazer a primeira, nao tenho paciencia p/ a segunda e na terceira, alem de custar $$$, o codigo fica uma nojeira (tirando como base os exemplos que vem na versão trial)… estamos ferrados!
Eu estou pensando em abandonar o freetts… alguem conhece outra API q aceite mbrola?
Estou na mesma furada. Pelo que pude pesquisar(http://freetts.sourceforge.net/docs/index.php#voices_available), não existe nada pronto que possibilite ao FreeTTS adicionar novas linguas além das 3 originais (us_1, us_2 e us_3). O problema é que a mbrola.jar (que está no /lib do freetts) só dá suporte a essas 3 linguas. Literalmente eh um array de Voice com 3 posicoes - nada dinamico. Eu descompilei a classe MbrolaVoiceDirectory.java de dentro do .jar e modifiquei p/ que ela aceite br_2 alem das 3 originais e ele encontrou a linguagem no java -Dmbrola.base=/mbrola -jar lib/mbrola.jar. Ja é um avanço, mas apesar de nao dar erro e o programa rodar normalmente, nenhum som sai nos speakers.
Existem 3 possibilidades:
Alguem reescrever todo o mbrola.jar (tem umas 7 classes la dentro) - Eu ainda não verifiquei se isso é legal. Pode ser que a licença de uso cancele essa opcão.
Usar SAPI5(o formato de voz q vc tem nas opcoes de acessibilidade do Windows) e pagar uma licença do TalkingJava SDK (http://www.cloudgarden.com/) p/ conseguir trabalhar com o formato no java.
Eu nao conheco tanto assim de sintetizacao de voz p/ fazer a primeira, nao tenho paciencia p/ a segunda e na terceira, alem de custar $$$, o codigo fica uma nojeira (tirando como base os exemplos que vem na versão trial)… estamos ferrados!
Eu estou pensando em abandonar o freetts… alguem conhece outra API q aceite mbrola?
cara, então complicou =\ não sei o que fazer, estava querendo colocar isso no meu projeto, ja consegui, mas tudo em ingles como falei, e em portugues não consegui, eu até achei o jar pt_br no mbrola mas nada de conseguir colocar dentro hehehe se você tiver alguma novidade avisa ae blz?
Vlw!
Fala galera, sei que este tópico ta um pouco antigo, porém gostaria de saber se alguém teve avanço. Sei do seguinte, é preciso definir um bando de dados de fone, pode ser arquivo texto, outro de fonema, etc, etc, se alguém ainda tiver interesse neste projeto, estou trabalhando nele, basta mandar msg. Abraços
Olá, eu pesquisei sobre isso faz um tempo, e retornei agora.
Pelo que entendo, o mbrola é um sintetizador de voz que "fala fonemas" e não linguagem escrita.
Fonemas pra quem não sabe são as "silabas faladas" de qqr língua.
Em algumas línguas as regras ortográficas correspondem quase 100% aos fonemas, porém o nosso querido português é bem diferente disso.
Uma solução que pensei há um tempo, é pegar um dicionario de palavras que contém seus respectivos fonemas (um banco de dados)
qqr dicionario possui isso, vejam o exemplo: porta fonema-> por.ta cilindro fonema-> ci.lin.dro
alguns fonemas utilizam até uns caracteres especiais, a ideia seria pegar um dicionario com seu correspondente escrito->fonema
e transformar numa sequencia de fonemas que o mbrola entenda
Tenho vontade de ter um tts em português legal como o mbrola pra utilizar em java, mas da um certo trabalho fazer isso.
Também existe um script em perl que meio q substitui algumas silabas escritas e transforma uma palavra em fonemas, mas não funciona 100% (pensei em transformar esse script em java e melhora-lo)
Tópico antigo mais acredito que o assunto é sempre útil.
Depois de pesquisar muito achei o projeto furbspeech no google code
Ele justamente converte o texto para fonema em português para uso com o mbrola, fiz alguns testes e gostei bastante do resultado