Java FreeTTS отсутствует голос

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

Мой класс выглядит так:

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, но это только сделало вещи еще более неясными для меня:/

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

4 ответа

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

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

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

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

Вы когда-нибудь называли свой метод разговора где-нибудь?

Попробуйте что-то вроде этого:

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, у меня есть хорошая ветка о том, как установить его здесь

Это тоже не сработало для меня. Я использовал другой репозиторий (вы должны изменить свой файл 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>

Просто добавьте первую строку в ваш основной

введите код сюда

public static void main(String[] args) throws Exception{
    // TODO code application logic here
 System.setProperty("freetts.voices", 
 "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
  String message = "Hello world! This is a test program";
  Mehrunisa mehrunisa = new Mehrunisa(message);
  mehrunisa.speak();
 }
Другие вопросы по тегам