Java FreeTTS 缺少语音
Java FreeTTS missing Voice
我写了一个小程序,应该可以简单地在 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
的东西,但这让我更不清楚了:/
感谢您的帮助。
你有没有在任何地方调用过你的 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 声音,而且我从来没有遇到过问题只是在我的项目中引用 freetts 库。
如果您想看看 MBROLA,我确实有一个关于如何设置它的不错的话题 here
这对我也不起作用。我使用了不同的存储库(您必须更改 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>
我遇到了完全相同的问题。当我尝试调用 voiceManager.getVoices()
时,我得到的列表是空的。问题是,freetts.voices
系统 属性 没有设置。因此,添加以下行解决了我的问题:
System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
现在,我可以使用 kevin 或 kevin16 声音了。
希望对您有所帮助。
只需在您的主菜单中添加第一行
在此处输入代码
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();
}
我写了一个小程序,应该可以简单地在 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
的东西,但这让我更不清楚了:/
感谢您的帮助。
你有没有在任何地方调用过你的 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 声音,而且我从来没有遇到过问题只是在我的项目中引用 freetts 库。
如果您想看看 MBROLA,我确实有一个关于如何设置它的不错的话题 here
这对我也不起作用。我使用了不同的存储库(您必须更改 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>
我遇到了完全相同的问题。当我尝试调用 voiceManager.getVoices()
时,我得到的列表是空的。问题是,freetts.voices
系统 属性 没有设置。因此,添加以下行解决了我的问题:
System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
现在,我可以使用 kevin 或 kevin16 声音了。
希望对您有所帮助。
只需在您的主菜单中添加第一行
在此处输入代码
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();
}