2015-01-06 1 views
2

Я написал небольшую программу, которая должна просто выполнять текст в речь в Java.Java FreeTTS missing Голос

Мой класс выглядит следующим образом:

import com.sun.speech.freetts.Voice; 
import com.sun.speech.freetts.VoiceManager; 

public class TalkResource { 

private static final String VOICENAME_kevin = "kevin16"; 
private final String text; // string to speech 

public TalkResource(String text) { 
    this.text = text; 
} 

public void speak() { 
    Voice voice; 
    VoiceManager voiceManager = VoiceManager.getInstance(); 
    voice = voiceManager.getVoice(VOICENAME_kevin); 
    voice.allocate(); 

    String newText = "example"; 
    voice.speak(newText); 
    } 
} 

Я уверен, что синтаксис (и прочее) правильно, но мой voice всегда null.

Я предполагаю, что «kevin16» не найден и не включен в проект, но я просто не могу понять, как добавить какой-либо голос в мой проект. Чтобы получить зависимости, я использую maven.

<dependency> 
    <groupId>net.sf.sociaal</groupId> 
    <artifactId>freetts</artifactId> 
    <version>1.2.2</version> 
</dependency> 

Все есть, кроме голосов. Из того, что я читал, я предполагаю, что «kevin16» должен быть включен в FreeTTS. Любые идеи, как продолжать? Как добавить голос? Также я нашел что-то около MBROLA, но это только что сделало меня еще более неясным:/

Спасибо за любую помощь.

+0

исправить эту проблему? – ip696

+0

еще нет, нет :(еще время от времени – DasSaffe

ответ

0

Вы когда-нибудь называли своим способом?

попробовать что-то вроде этого:

import com.sun.speech.freetts.Voice; 
import com.sun.speech.freetts.VoiceManager; 

public class TalkResource { 

    private static final String VOICENAME_kevin = "kevin16"; 

    public TalkResource(String sayText) { 
     Voice voice; 
     VoiceManager voiceManager = VoiceManager.getInstance(); 
     voice = voiceManager.getVoice(VOICENAME_kevin); 
     voice.allocate(); 

     voice.speak(sayText); 
    } 

    public static void main(String []args) { 
     new TalkResource("hello"); 
    } 
} 

Я собираюсь принять удар на него и сказать, что вы больше знакомы с серверами Maven, чем я, однако я также часто играют с FreeTTS и MBROLA голосов, и у меня никогда не было проблемы с просто ссылкой на библиотеки freetts в моем проекте.

Если вы чувствуете, как проверить MBROLA, у меня есть приличная нить о том, как установить его here

0

Это не работает для меня тоже. Я использовал другой репозиторий (вам нужно изменить файл POM). я использовал следующие зависимости:

<dependencies> 
    <dependency> 
     <groupId>org.mobicents.external.freetts</groupId> 
     <artifactId>freetts</artifactId> 
     <version>1.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mobicents.external.freetts</groupId> 
     <artifactId>en_us</artifactId> 
     <version>1.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mobicents.external.freetts</groupId> 
     <artifactId>cmu_us_kal</artifactId> 
     <version>1.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mobicents.external.freetts</groupId> 
     <artifactId>cmu_time_awb</artifactId> 
     <version>1.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mobicents.external.freetts</groupId> 
     <artifactId>cmulex</artifactId> 
     <version>1.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mobicents.external.freetts</groupId> 
     <artifactId>cmutimelex</artifactId> 
     <version>1.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mobicents.external.freetts</groupId> 
     <artifactId>cmudict04</artifactId> 
     <version>1.2.2</version> 
    </dependency> 

Для этого я использовал следующие репозитории:

<repository> 
    <id>sonatype-oss-public</id> 
    <url>https://oss.sonatype.org/content/groups/public/</url> 
    <releases> 
     <enabled>true</enabled> 
    </releases> 
    <snapshots> 
     <enabled>true</enabled> 
    </snapshots> 
</repository> 
+0

, а затем, какой голос был доступен? Спасибо за ваше обновление! – DasSaffe

+0

Кроме того, есть сообщение об ошибке, сообщающее мне, что эти зависимости не находятся в сонатипе-oss -публичный репозиторий – DasSaffe

+0

Используйте версию 1.0 и вытащите ее из центрального maven repo –

0

У меня была точно такая же проблема. Я получал пустой список, когда пытался позвонить voiceManager.getVoices(). Проблема была в том, что системное свойство freetts.voices не было установлено. Таким образом, добавив следующую строку фиксированного моей проблемы:

System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory"); 

Теперь я могу использовать Кевин или kevin16 голоса.

Надеюсь, это поможет.