maven Java FreeTTS缺少语音

z9smfwbn  于 2023-10-17  发布在  Maven
关注(0)|答案(4)|浏览(655)

我写了一个小程序,它应该只是做一个文本到speach在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的东西,但这让我更加不清楚:
谢谢你的帮助。

plicqrtu

plicqrtu1#

我也有同样的问题。当我试图调用voiceManager.getVoices()时,我得到的是空列表。问题是,freetts.voices系统属性未设置。所以,添加以下行解决了我的问题:

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

现在,我可以用凯文凯文16的声音。
希望这对你有帮助。

eulz3vhy

eulz3vhy2#

你有没有在任何地方调用 your speak方法?
试试这样的方法:

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声音,而且我在项目中引用freeText库从来没有遇到过问题。
如果你想看看MBROLA,我有一个体面的线程如何设置它在这里

trnvg8h3

trnvg8h33#

对我来说也不管用。我使用了一个不同的存储库(你必须改变你的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>
bogh5gae

bogh5gae4#

只需简单地添加第一行在您的主要

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();
 }

相关问题