MBROLA与FreeTTS的声音 - Windows

Mad*_*lie 3 java eclipse text-to-speech freetts

在FreeTTS的Java程序中使用MBROLA语音...

我正在研究一个简单的Java 文本到语音程序.我决定使用FreeTTS,但声音并不是我想的,而且我还是想用一个女声.所以我开始环顾四周,并决定使用MBROLA来改变我的文本到语音转换程序的声音.

我读到"FreeTTS可以使用MBROLA语音",但我在各处搜索,找不到如何设置MBROLA的明确指南,以及需要哪些文件.MBROLA上有许多论坛与FreeTTS一起工作,但似乎没有人知道他们在做什么.

所以问题:

  1. 需要下载哪些文件?
  2. 将这些包含在我的程序中的步骤?
  3. 使用MBROLA语音的简单FreeTTS示例?

Mad*_*lie 12

上述问题的答案:

1.需要下载哪些文件?

  1. FreeTTS与所有库(freeTTS 1.2.2-bin) - 在这里下载
  2. MBROLA zip文件夹mbr301d.zip
  3. 声音可在上找到MBROLA网站

1.1 FreeTTS(在freetts-1.2.2-bin/freetts-1.2/lib中找到):

  • cmu_time_awb.jar
  • cmu_us_kal.jar
  • cmudict04.jar
  • cmulex.jar
  • cmutimelex.jar
  • en_us.jar
  • freetts.jar
  • 的FreeTTS-jsapi10.jar
  • mbrola.jar

1.2 MBROLA zip文件夹包括:

  • mbrola.exe
  • mbr302a (文件夹)
  • readme.txt文件

1.3 音色是压缩文件夹,包含名为" us1 "或" af1 "等的单个文件夹.


2.将这些纳入我的计划的步骤?

注意:我的计算机上也安装了MBROLA Tooklit,但我不确定它是否对程序有影响,但我怀疑它没有.编辑:我已经测试了MBROLA工具包是否需要与FreeTTS一起运行MBROLA,结果证明它不需要.

  1. 提取freetts-1.2.2-bin
  2. 将库复制到项目中并包含在构建路径中
  3. 解压缩mbr301d.zip文件夹
  4. 将'mbr301d'重命名为'mbrola'
  5. 将声音解压缩到名为"mbrola"的文件夹

完成此操作后,您的mbrola文件夹应如下所示:

  • [mbr302a] - 文件夹
  • [us1] - 文件夹(名称取决于您下载的语言)
  • mbrola.exe - 文件
  • readme.txt - 文件

您可以将所有语言放在此文件夹中,只需从Java程序中调用它们即可.


3.使用MBROLA语音的简单FreeTTS示例?

我见过很多人都会收到这个错误:

System property "mbrola.base" is undefined.  Will not use MBROLA voices.
Run Code Online (Sandbox Code Playgroud)

mbrola.base指的是你的mbrola文件位于您的计算机上,并没有财产被指向到正确的位置,您将收到此错误.

对于出现此错误的NON-MBROLA用户:如果您只使用FreeTTS,只需从引用的库中删除mbrola.jar

要设置mbrola.base属性,请使用:

System.setProperty("mbrola.base", "C:/Path/to/your/mbrola")
Run Code Online (Sandbox Code Playgroud)

下面是在FreeTTS程序中使用MBROLA语音的简单示例.请注意,必须先执行上述步骤才能执行此操作.如果未设置基础,只需将语音名称更改为"mbrola_us1"即可生效!

package com.madmob.test;

import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;

public class TestTTS {
    VoiceManager freettsVM;
    Voice freettsVoice;

    public TestTTS(String words) {
        // Most important part!
        System.setProperty("mbrola.base", "C:/mbrola");
        freettsVM = VoiceManager.getInstance();

        // Simply change to MBROLA voice
        freettsVoice = freettsVM.getVoice("mbrola_us1");

        // Allocate your chosen voice
        freettsVoice.allocate();
        sayWords(words);
    }

    public void sayWords(String words) {
        // Make her speak!
        freettsVoice.speak(words);
    }

    public static void main(String [] args) {
        new TestTTS("Hello there! Now M BROLA and Free T T S work together!");
    }
}
Run Code Online (Sandbox Code Playgroud)

MBROLA和FreeTTS现在应该合作!此代码是从我的计算机上直接复制的,并且在将其放入此处之前已经过测试.