使用JSAPI将文本转换为语音时,“系统属性mbrola.base未定义。将不会使用MBROLA语音”进行故障排除

时间:2010-10-20 08:52:47

标签: text-to-speech jsapi

我收到以下错误:

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

}

}

6 个答案:

答案 0 :(得分:4)

对于那些仍在努力解决这个问题的人来说,这就是我如何在普通记事本中使用Windows工作,而不涉及Eclipse。

  1. 我去了http://tcts.fpms.ac.be/synthesis/mbrola.html 并在二进制语音下载下下载了2个软件包: PC / Windows和PC / DOS

  2. 解压缩所有内容并将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上运行。

  3. 然后我在第1部分I中下载了mbrola网站上的声音 想要一个女性的声音,所以我抓住了us1并将整个文件夹放在与
    相同的目录中 上面的PC / Windows二进制文件和PC / DOS可执行文件。

  4. 在代码中我指定了以下内容: System.setProperty(“mbrola.base”,“C:\ devsrc \ main \ Head-Rev \ src \ java \ freetts-1.2 \ mbrola”); 语音= vm.getVoice( “mbrola_us1”);

  5. 我得到了我的女声。我不需要任何编译或运行时标志。

    希望这有助于某人。

答案 1 :(得分:2)

对我来说:

  1. 我下载了Mbrola Tool

  2. 我下载了Mbrola Base folder

  3. Mbrola Site

  4. 获取MBROLA音色部分下载所需语音
  5. 将步骤3中的文件解压缩到从步骤2获取的unziped目录。

  6. 使用以下内容设置属性“mbrola.base”:System.setProperty("mbrola.base", "E:\\xxx\\xxx\\mbrxxx");

答案 2 :(得分:0)

您的代码需要系统中的MBROLA应用程序。所以你需要告诉你的应用程序MBROLA在这里:

  1. 从命令行或eclipse启动配置:-Dmbrola.base=/location/to/mbrola
  2. System.setProperty("mbrola.base", Morbola.class.getName())并将mbrola JAR放在类路径中。
  3. 请参阅此类似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
  1. 将/ usr / bin / mbrola文件复制到上面的mbrola文件夹
  2. 使用上述程序的路径更新程序 System.setProperty(“mbrola.base”,“/ home / ngs / INCUBATOR / egg-8 / libries / MBROLA / mbrola”);
  3. 现在它应该工作