【问题标题】:Troubleshooting "System property mbrola.base is undefined. Will not use MBROLA voices" when converting text to speech with JSAPI使用 JSAPI 将文本转换为语音时“系统属性 mbrola.base 未定义。不会使用 MBROLA 语音”疑难解答
【发布时间】:2011-04-27 22:19:43
【问题描述】:

我收到以下错误:

系统属性“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();
}

}

}

【问题讨论】:

  • @user481404 - 仅供参考,带有 1 和 0 的按钮有助于正确格式化您在问题中输入的任何代码。
  • @user481404 - 此外,使用大写字母通常被认为是粗鲁的!

标签: text-to-speech jsapi


【解决方案1】:

我正在使用 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");

现在应该可以了

【讨论】:

    【解决方案2】:

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

    # Uncomment to allow MBROLA voices:
    de.dfki.lt.freetts.en.us.MbrolaVoiceDirectory
    

    【讨论】:

      【解决方案3】:

      适用于设置 mbrola.base 的 Windows 系统: - 在 Windows 操作系统中设置环境变量“MBROLA_HOME” - 使用此代码 sn-p 设置属性 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】:

        对我来说:

        1. 我下载了Mbrola Tool

        2. 我下载了Mbrola Base folder

        3. Mbrola Site

        4. Getting the MBROLA Voices部分下载了所需的声音
        5. 将第3步的文件解压到第2步得到的解压目录。

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

        【讨论】:

        • 请问我们必须从第 3 步下载什么以及我们必须在哪里安装它?
        • Site : tcts.fpms.ac.be/synthesis/mbrola.html 向下滚动,下载任何你想要的声音。
        • 对于 mbrola 基本文件,我们应该把它放在某个地方吗? :D
        【解决方案5】:

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

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

        看到这个类似的question

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

        【讨论】:

          【解决方案6】:

          对于那些仍在为此苦苦挣扎的人,这是我在一个普通的记事本中让它在 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"); voice=vm.getVoice("mbrola_us1");

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

          希望这对某人有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-05-15
            • 2023-03-09
            • 1970-01-01
            • 1970-01-01
            • 2023-01-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多