我收到以下错误:
System property "mbrola.base" is undefined. Will not use MBROLA voices.
import javax.speech.*;
import javax.speech.synthesis.*;
import java.util.Locale;
public class HelloWorld
{
public static void main(String args[])
{
try
{
// Create a synthesizer for English
Synthesizer synth = Central.createSynthesizer(
new SynthesizerModeDesc(Locale.ENGLISH));
// Get it ready to speak
synth.allocate();
synth.resume();
// Speak the “Hello world” string
synth.speakPlainText("Hello", null);
// Wait till speaking is done
synth.waitEngineState(Synthesizer.QUEUE_EMPTY);
// Clean up
synth.deallocate();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
答案 0 :(得分:4)
对于那些仍在努力解决这个问题的人来说,这就是我如何在普通记事本中使用Windows工作,而不涉及Eclipse。
我去了http://tcts.fpms.ac.be/synthesis/mbrola.html 并在二进制语音下载下下载了2个软件包: PC / Windows和PC / DOS
解压缩所有内容并将PC / Windows二进制文件放在与PC / DOS可执行文件mbrola.exe相同的目录中。 请注意mbrola.exe不能为我工作b / c它是16位(去图!),但我找到了这个链接:
http://sourceforge.net/projects/freetts/forums/forum/137669/topic/1219083
它有一个包含2个二进制文件的zip文件,其中一个来自2004年,似乎可以在我的64位Windows上运行。
然后我在第1部分I中下载了mbrola网站上的声音
想要一个女性的声音,所以我抓住了us1并将整个文件夹放在与
相同的目录中
上面的PC / Windows二进制文件和PC / DOS可执行文件。
在代码中我指定了以下内容: System.setProperty(“mbrola.base”,“C:\ devsrc \ main \ Head-Rev \ src \ java \ freetts-1.2 \ mbrola”); 语音= vm.getVoice( “mbrola_us1”);
我得到了我的女声。我不需要任何编译或运行时标志。
希望这有助于某人。
答案 1 :(得分:2)
对我来说:
我下载了Mbrola Tool
将步骤3中的文件解压缩到从步骤2获取的unziped目录。
使用以下内容设置属性“mbrola.base”:System.setProperty("mbrola.base", "E:\\xxx\\xxx\\mbrxxx");
答案 2 :(得分:0)
您的代码需要系统中的MBROLA应用程序。所以你需要告诉你的应用程序MBROLA在这里:
-Dmbrola.base=/location/to/mbrola
或System.setProperty("mbrola.base", Morbola.class.getName())
并将mbrola JAR放在类路径中。请参阅此类似question
(您可以使用任何一种解决方案)
答案 3 :(得分:0)
适用于Windows系统以设置mbrola.base: - 在windows os中设置环境变量“MBROLA_HOME” - 使用此代码段设置属性mbrola.base
公共课FreeTTSVoice {
private static String path = System.getenv("MBROLA_HOME");
// System.out.println(path);
public FreeTTSVoice(){
System.setProperty("mbrola.base", path);
listAllVoices();
}
public static void listAllVoices() {
System.out.println("All voices available:");
VoiceManager voiceManager = VoiceManager.getInstance();
Voice[] voices = voiceManager.getVoices();
for (int i = 0; i < voices.length; i++) {
System.out.println(" " + voices[i].getName()
+ " (" + voices[i].getDomain() + " domain)");
}
}
...
答案 4 :(得分:0)
因为我使用mvenla的maven存储库而不是下载它,所以我不得不在我的java项目中覆盖这个文件:com.sun.speech.freetts - &gt; internal_voices.txt并添加:
# Uncomment to allow MBROLA voices:
de.dfki.lt.freetts.en.us.MbrolaVoiceDirectory
答案 5 :(得分:0)
我正在使用ubuntu 如果您使用的是Windows,则只需要第1步和第2步。
创建了一个名为mbrola的文件夹 1.为我的操作系统linux下载mbrola-base 2.将下载的us1,us2,us3解压缩文件夹放到此文件夹中 3.通过命令行在ubuntu中安装mbrola。 sudo apt-get istall mbrola
After installation use this commad to check where your files has located
dpkg -L mbrola
现在它应该工作