Java FreeTTS 缺少语音

标签 java maven freetts

我写了一个小程序,应该用 Java 简单地进行文本到语音的转换。

我的类(class)是这样的:

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 的信息,但这让我更加不清楚了:/

感谢您的帮助。

最佳答案

我遇到了完全相同的问题。当我尝试调用 voiceManager.getVoices() 时,我得到的列表是空的。问题是,未设置 freetts.voices 系统属性。因此,添加以下行解决了我的问题:

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

现在,我可以使用 kevinkevin16 的声音。

希望这对您有所帮助。

关于Java FreeTTS 缺少语音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808248/

相关文章:

java - 在使用 Java 启动应用程序之前检测 Play 2.2.x 模式

java - 将 get 和 set 方法组合成一个方法是不好的做法吗

java - Spring Boot 应用程序不可执行

android - 当 Maven 构建我的项目时,无法从库项目的 jar 中找到类

java - 获取应用程序路径以创建新文件

java - 如何使用 maven bundle 插件在 OSGi bundle 中包含一个 jar 依赖项?

java - Spring MVC 中的瓷砖

java - FreeTTS 卡在 ColdFusion 8/Java 中

java - java中使用freetts进行文本转语音

java - 带有 FreeTTS 的 MBROLA 语音 - Windows