对上述问题的回答:
1. 需要下载哪些文件?
- 带有所有库的FreeTTS (freeTTS 1.2.2-bin) -在此处下载
- MBROLA zip 文件夹mbr301d.zip
- 可以在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 (文件夹)
- 自述文件.txt
1.3声音是压缩文件夹,其中包括一个名为“ us1 ”或“ af1 ”等的文件夹。
2. 将这些包含到我的程序中的步骤?
注意:我的计算机上也安装了MBROLA Toolit,但我不确定它是否对程序有影响,但我怀疑它不会。编辑:我已经测试过是否需要 MBROLA 工具包才能与 FreeTTS 一起运行 MBROLA,结果证明不需要它。
- 提取freetts-1.2.2-bin
- 将库复制到您的项目并包含在构建路径中
- 解压 mbr301d.zip 文件夹
- 将“mbr301d”重命名为“mbrola”
- 将声音解压缩到您命名为“mbrola”的文件夹中
完成后,您的 mbrola 文件夹应如下所示:
- [mbr302a] -文件夹
- [us1] -文件夹(名称取决于您下载的语言)
- mbrola.exe -文件
- readme.txt -文件
您可以将所有语言放在此文件夹中,它们只会从您的 Java 程序中调用。
3. 使用 MBROLA 语音的简单 FreeTTS 示例?
我见过很多人得到这个错误:
System property "mbrola.base" is undefined. Will not use MBROLA voices.
指的mbrola.base
是您的 mbrola 文件在您的计算机上的位置,如果没有将属性指向正确的位置,您将收到此错误。
对于收到此错误的非 MBROLA 用户:如果您只使用 FreeTTS,只需从您引用的库中删除 mbrola.jar
要设置mbrola.base
属性,请使用:
System.setProperty("mbrola.base", "C:/Path/to/your/mbrola")
下面是一个在 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!");
}
}
MBROLA 和 FreeTTS 现在应该一起工作了!这段代码是直接从我的电脑上复制的,并且在放在这里之前已经过测试。