2

我收到以下错误:

系统属性“mbrola.base”未定义。不会使用 MBROLA 声音。
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();
}

}

}
4

6 回答 6

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 节的 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");

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

希望这可以帮助某人。

于 2012-12-01T23:29:22.090 回答
2

为了我 :

  1. 我下载了 Mbrola 工具

  2. 我下载了 Mbrola Base 文件夹

  3. 从Mbrola 网站的获取 MBROLA 声音 部分下载所需的声音

  4. 将步骤 3 中的文件解压缩到从 step2 获得的解压缩目录。

  5. 通过使用设置属性“mbrola.base”: System.setProperty("mbrola.base", "E:\\xxx\\xxx\\mbrxxx");

于 2014-02-05T13:02:38.507 回答
0

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

  1. 从命令行或 Eclipse 启动配置:-Dmbrola.base=/location/to/mbrola
  2. System.setProperty("mbrola.base", Morbola.class.getName())并将 mbrola JAR 放在类路径中。

看到这个类似的问题

(您可以使用任何一种解决方案)

于 2010-10-20T09:05:35.517 回答
0

适用于设置 mbrola.base 的 Windows 系统: - 在 Windows 操作系统中设置环境变量“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)");
    }

}

...

于 2015-01-25T08:06:10.383 回答
0

因为我使用 mbrola 的 maven 存储库而不是下载它,所以我不得不在我的 java 项目中覆盖这个文件:com.sun.speech.freetts -> internal_voices.txt 并在那里添加:

# Uncomment to allow MBROLA voices:
de.dfki.lt.freetts.en.us.MbrolaVoiceDirectory
于 2015-06-11T05:33:24.607 回答
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"); 的路径更新程序

现在它应该可以工作了

于 2016-10-31T10:51:28.863 回答